本指南旨在指导读者利用 VPS、Cloudflare 与 AI Agent 自动化流程,搭建专享的高速海外网络节点。相较于多人共用的共享节点,独享 VPS 拥有独立的服务器资源与公网 IP,能够从源头避免邻居节点滥用带来的信誉污染,为出海业务提供长期稳定的网络底座。
在整个部署过程中,人工仅需完成前置采购与授权,后续的系统初始化、Xray 内核安装、TLS 证书申请与 VLESS 节点创建,均由 Agent 按照标准化 SOP 自动完成。相比此前的手动搭建版本——用 CN2 GIA 搭建专享高速海外节点——这套流程通过 Agent 自动化大幅简化了操作与后续维护。
第一步:前置准备与工具清单
在开始部署之前,请确保以下依赖与资源已准备就绪:
- 一台海外 VPS,本文用的是 BandwagonHost CN2 GIA 线路。
- 一个域名,用于节点域名解析和后续的 TLS 配置。
- 一个 Cloudflare 账号,用于管理 DNS 和创建 API Token。
- 一个 Agent 工具,例如 Claude Code、Codex CLI、Zcode 等等都可以。
第二步:购买 BandwagonHost CN2 GIA VPS
整套方案最终落在一台 VPS 上,本节的操作都在 BandwagonHost 官网完成。
- 登录 BandwagonHost 官网,在菜单栏找到 CN2 GIA 入口。

- 在产品页面选择 Los Angeles CN2 GIA/CTGNet VPS。

- 配置和期限按下表选择。
| 使用场景 | 推荐配置 | 说明 |
|---|---|---|
| 个人使用 | 20GB SSD | 单人日常办公和测试够用 |
| 2-5 人工作室 | 40GB SSD | 多人同时使用,需要留出余量 |
| 企业 | 更高配置 | 按实际并发和用途选择 |
期限方面,建议直接选 1 年,性价比最高,BandwagonHost 提供 30 天内的退款保障。

- 点击 Checkout 完成购买。
第三步:获取 VPS 登录凭证
购买成功后返回官网,登录信息都在 KiwiVM 控制面板里。
- 点击 Client Area。

- 进入 Services → My Services。

- 找到刚购买的 VPS。

- 进入 KiwiVM Admin Controls。
- 点击 Root Password Reset。
- 点击 Generate & Set New Root Password。

把下面三项保存到本地,后续 Agent 会用到它们来连接服务器。
- VPS Public IP 地址
- SSH Port
- Root Password
第四步:配置 Cloudflare DNS 与 API Token
节点需要绑定域名以申请并加载合法的 TLS 证书。请确保已拥有可用域名并将 DNS 解析服务托管至 Cloudflare,具体操作可参考为什么资深开发者更倾向于把域名 DNS 托管到 Cloudflare?。
- 登录 Cloudflare,点击左侧边栏 Domains → Overview,选择你的域名,下文以 example.com 举例。
- 创建节点子域名,例如 gia.example.com。
- 点击左侧边栏 DNS → Records,点击 Add Record 添加一条 A 记录,字段这样填:
- Type:A
- Name:gia
- IPv4:你的 VPS IP
- Proxy Status:DNS Only
填完点击 Save 保存记录。
- 创建 API Token:点击左侧边栏的 Quick Search,输入 API Token,选择 Account API Tokens,点击创建 Token。
- 权限选 Edit Zone DNS,Token Expiration 选 No Expiration,Client IP Address Filtering 填两个地址:BandwagonHost 服务器的 IP,以及运行 Agent 的那台机器的 IP。
- 点击 Review Token,再点击 Create Token 完成创建。
第五步:配置 Agent 自动化部署环境
新建一个项目目录,把凭据和部署要求分成两个文件放进去,目录结构是这样:
TEXTvps-node-agent/
├── .env
└── SOP.md
.env 存连接凭据,按这个格式填:
ENVVPS_IP=
SSH_PORT=
ROOT_PASSWORD=
DOMAIN=
CF_TOKEN=
CF_ACCOUNT_ID=
.env 里放的都是敏感凭据,不要提交到任何代码仓库。
SOP.md 存完整的部署要求,Agent 每一步动作都由它决定。下面是完整的 SOP.md,可以整段复制保存成文件直接使用:
MARKDOWN# VLESS 节点搭建 SOP(2026 现行方案,可人工执行 / 可交给 AI Agent 执行) 适用场景:Bandwagon / 任意 KVM VPS(Debian 12+),从零搭建个人自用节点。 操作环境:MacBook Terminal 或 Windows PowerShell(Win10 1809+ 自带 OpenSSH 客户端)。 除 SSH 登录和客户端安装外,所有命令都在 VPS(Debian)上执行,两个平台完全一致。 > 本文档既可以人工逐步执行,也可以整份交给 AI 编码代理(Codex / Claude Code / ZCode 等) > 自动执行,只需提前在代理环境中配好 SSH 连接。所有敏感值(API Token、面板密码、UUID) > 都在执行过程中现场生成或输入,不要写进文档。 > > 全文占位符: > - `gia.yourdomain.com` → 你的子域名(示例:`gia` + `yourdomain.com`) > - `1.2.3.4` → VPS 的 IP ## 架构总览 | 组件 | 选型 | 说明 | |---|---|---| | 节点主用 | VLESS + WS + TLS(443) | 客户端兼容性最好;标准 HTTPS 端口,IP 被墙可切 Cloudflare CDN 救活 | | 节点备用 | VLESS + Vision + REALITY(2053) | 免证书、抗主动探测;需要较新内核的客户端 | | 面板 | 3x-ui(持续维护) | 端口 8443,随机路径 + 域名证书 HTTPS | | 证书 | acme.sh + Cloudflare DNS API | ECC 证书,cron 自动续期 | | 加速 | 内核 BBR(sysctl) | 不再用第三方加速脚本 | 端口规划:`443` WS+TLS 主用 / `2053` REALITY 备用 / `8443` 面板 / `80` 保留(证书 HTTP 验证备用)。 --- ## Step 1 购买 VPS 并重装系统 1. Bandwagon 购买 CN2 GIA 套件;进 KiwiVM 面板。 2. `Root password - generate` 保存 root 密码;记下 SSH 端口(默认 22)。 3. `Install new OS` → 选 `debian-12-x86_64` → 等待完成。 4. 记下 IP:即 `1.2.3.4`。 ## Step 2 SSH 连接(本机操作) Mac Terminal 和 Windows PowerShell 命令相同: ```bash ssh [email protected] # 首次连接输入 yes 确认指纹,然后输入 root 密码 ``` ## Step 3 系统初始化 + BBR(VPS 上执行) ```bash apt update && apt upgrade -y apt install -y curl socat # 内核 BBR(Debian 12 内核原生支持,无需任何脚本) cat > /etc/sysctl.d/99-bbr.conf <<'EOF' net.ipv4.tcp_congestion_control=bbr net.core.default_qdisc=fq EOF sysctl --system sysctl net.ipv4.tcp_congestion_control # 应输出 bbr ``` ## Step 4 Cloudflare 配置(浏览器操作) ### 4.1 子域名 A 记录 1. Cloudflare → `yourdomain.com` → DNS → Add record: - Type: `A`,Name: `gia`,IPv4: `1.2.3.4` - **Proxy status: 关闭(灰云 DNS only)** ← 必须灰云,否则节点直连不通 2. 保存后本机验证解析生效(PowerShell 用 `Resolve-DnsName gia.yourdomain.com`): ```bash dig +short gia.yourdomain.com # 应返回 1.2.3.4 ``` ### 4.2 创建 API Token(供 VPS 签发/续期证书) 1. Cloudflare 右上角头像 → My Profile → API Tokens → Create Token。 2. 模板选 **Edit zone DNS**: - Zone Resources: Include → Specific zone → `yourdomain.com` - Continue → Create,复制 Token(只显示一次)。 3. 记下 Account ID(域名概览页右下角)。 4. **关键:IP 白名单**。编辑这个 Token → Client IP Address Filtering → 添加 VPS 出口 IP: ```bash # VPS 上查询自己的出口 IP curl -s https://api.ipify.org ``` 不加白名单会在签发时报错:`Cannot use the access token from location: x.x.x.x`。 注意:证书续期是在 VPS 上跑的,所以白名单里必须永远是 VPS 的 IP。 ## Step 5 签发证书(VPS 上执行) ```bash curl https://get.acme.sh | sh -s email=你的邮箱 source ~/.bashrc export CF_Token="粘贴API_Token" export CF_Account_ID="粘贴Account_ID" acme.sh --set-default-ca --server letsencrypt # DNS 验证签发 ECC 证书 acme.sh --issue --server letsencrypt --dns dns_cf -d gia.yourdomain.com --keylength ec-256 ``` 安装到固定路径(续期后自动同步 + 重启面板): ```bash mkdir -p /root/cert acme.sh --install-cert -d gia.yourdomain.com --ecc \ --fullchain-file /root/cert/fullchain.pem \ --cert-file /root/cert/cert.crt \ --key-file /root/cert/private.key \ --reloadcmd "systemctl try-restart x-ui || true" chmod 644 /root/cert/fullchain.pem /root/cert/cert.crt chmod 600 /root/cert/private.key # 验证 openssl x509 -in /root/cert/fullchain.pem -noout -subject -enddate ``` ## Step 6 安装 3x-ui 面板(VPS 上执行) ```bash bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/main/install.sh) ``` 交互向导逐项选择: | 提示 | 选择 | |---|---| | 数据库 | `1` SQLite | | 自定义面板端口? | `y` → 输入 `8443` | | 自定义 WebBasePath? | `y` → 输入随机路径,如 `/8fk2mq0xza/`(**必须以 / 开头结尾**,记下来) | | 用户名/密码 | 自己设置强密码(10 位以上随机字符) | | SSL Certificate Setup | 选**跳过**(证书下一步手动指定) | 装完会回显面板信息,确认服务在跑:`systemctl is-active x-ui` ## Step 7 面板挂上证书(VPS 上执行) ```bash /usr/local/x-ui/x-ui setting -webCert /root/cert/fullchain.pem -webCertKey /root/cert/private.key x-ui restart ``` 浏览器打开 `https://gia.yourdomain.com:8443/8fk2mq0xza/` 登录,地址栏应为有效证书(锁标志)。 **以后只通过这个域名+路径访问面板,路径不要外传。** ## Step 8 添加主节点:VLESS + WS + TLS(面板 UI 操作) 面板 → 入站列表 → **+ 添加入站**: 1. Remarks: `ws-tls-443`;端口: `443`;协议: `vless`。 2. 客户端:Email `ws-user`,ID 自动生成,Flow 留空。 3. 传输: `ws`;安全: `tls`。 4. TLS:证书选**指定文件路径**: - Public Key: `/root/cert/fullchain.pem` - Private Key: `/root/cert/private.key` - SNI/Server Name: `gia.yourdomain.com`;ALPN: `http/1.1` 5. WS Settings:Path 自定义如 `/ws5f8d2k1q`(不要和面板路径相同);Host: `gia.yourdomain.com`。 6. 保存。 ## Step 9 添加备用节点:VLESS + Vision + REALITY(面板 UI 操作) 再点 **+ 添加入站**: 1. Remarks: `reality-2053`;端口: `2053`;协议: `vless`。 2. 客户端:Email `reality-user`,ID 点自动生成,**Flow 选 `xtls-rprx-vision`**。 3. 传输: `tcp`;安全: `reality`。 4. REALITY 参数: - Dest/Target: `www.microsoft.com:443` - SNI(Server Names): `www.microsoft.com` - 密钥对:点 **Get New Cert / 生成密钥对**,自动填入 Private Key 和 Public Key - Short ID: 点生成按钮填入一个 - Fingerprint: `chrome`;SpiderX: `/` 5. 保存。 ## Step 10 验证 VPS 上确认监听: ```bash ss -tlnp | grep -E ':(443|2053|8443)\b' ``` 本机验证 TLS(Mac 用 openssl;Windows 可用 Git Bash 的 openssl 或直接浏览器): ```bash # 主用 WS 节点(443):应返回 Let's Encrypt 签给你的域名证书 echo | openssl s_client -connect gia.yourdomain.com:443 -servername gia.yourdomain.com 2>/dev/null | openssl x509 -noout -subject -enddate # 备用 REALITY(2053):对伪装 SNI 应返回 www.microsoft.com 的真证书 echo | openssl s_client -connect gia.yourdomain.com:2053 -servername www.microsoft.com 2>/dev/null | openssl x509 -noout -subject ``` Windows 替代(PowerShell):浏览器打开 `https://gia.yourdomain.com:443`,点地址栏锁查看证书颁发者为 Let's Encrypt 即可(页面报协议错误属正常)。 ## Step 11 客户端导入 面板里每个入站 → 二维码/链接按钮可导出 `vless://` 链接。 - **Windows:v2rayN**(GitHub Releases 下载带核心的 zip)→ 服务器 → 从剪贴板导入批量 URL → 粘贴链接 → 托盘右键「自动配置系统代理」。 - **macOS:V2Box**(App Store)或 FoXray → 从剪贴板导入链接 → 开启 VPN/代理。 - 日常用 WS+TLS 443 主节点;REALITY 2053 留给支持它的客户端。 --- ## 日常维护 ```bash x-ui # 管理菜单(查看端口/路径、重置账号等) systemctl status x-ui x-ui update # 面板升级 acme.sh --list # 证书与续期时间 tail /var/log/x-ui/access.log # xray 访问日志(按上文开启后) cp /etc/x-ui/x-ui.db /root/x-ui-backup.db # 配置备份(所有入站/账号都在里面) ``` ## 故障排查 | 现象 | 处理 | |---|---| | 客户端连不上 REALITY | VPS 上 `ss -tlnp \| grep 2053` 有监听 → 检查客户端 pbk/sid/sni/fingerprint 是否与面板一致,flow 是否 xtls-rprx-vision,设备时间偏差需 <2 分钟 | | 连不上 WS 节点 | 域名是否灰云直连;path/host 是否一致;`journalctl -u x-ui -n 50` 看证书报错 | | 面板打不开 | 端口 8443、路径末尾斜杠、`systemctl is-active x-ui` | | 证书续期失败 | 多为 CF token 过期或 IP 白名单变动:重新 `export CF_Token=...` 后 `acme.sh --renew -d gia.yourdomain.com --ecc --force` | | VPS IP 被墙 | Cloudflare 把 `gia` 记录开橙云 → 主用 WS 节点(443)经 CDN 立即可用,REALITY 备用节点此时失效 | | 链式代理测速正常但网站全部不通 | 常见于把本节点当"入口"、再接一个 SOCKS5 落地代理做"出口"的用法。先排除入口端口填错(必须是 443,不是 8443);端口确认无误仍不通,问题大多在落地代理本身;如果是 IPRoyal 这类 ISP/住宅代理,单个出口端口会随时间偶发劣化失效,换一个端口/IP 通常就能恢复 | ## 安全要点 - 面板随机路径 + 强密码;3x-ui 内置登录限速(5 次失败锁 15 分钟)。 - CF API Token 只给单域名 DNS 编辑权限,且锁定 VPS IP 白名单。 - 重装系统后 IP 可能变化:需同步更新 A 记录和 token 白名单。 - 定期 `x-ui update`;长时间不用建议关机停用。 - 交给 AI Agent 执行时:Token/密码通过交互输入或受保护的密钥文件传入,不要让 Agent 写进日志、文档或对话记录。 > 免责声明:本文仅用于技术学习与个人合法用途,请遵守所在地区法律法规及 VPS 服务商条款。
第六步:运行 Agent 执行节点部署
进入项目目录:
SHELLcd vps-node-agent
启动 Agent,让它读取当前目录里的 SOP.md。可以直接把这段提示词交给它:
PROMPT请读取当前目录中的 SOP.md,并按照文档完成 VPS 节点部署。要求:
1. 连接 VPS
2. 初始化服务器环境
3. 安装所需组件
4. 配置 Xray
5. 配置 TLS
6. 创建 VLESS 节点
7. 输出客户端配置链接
8. 所需凭据见 .env,绝对不可明文输出
9. 创建并维护任务的 CLAUDE.md(或 AGENTS.md)及 PROGRESS.md
Agent 跑完之后会输出 VLESS URI 和节点信息。
第七步:节点连通性验证与客户端导入
部署完成后会拿到一条 VLESS 链接,形如 vless://xxxx,导入客户端就能使用。
- macOS:Shadowrocket
- Windows:Clash Verge、v2rayN
导入后实际打开几个海外站点,确认节点能正常连接,再往下做扩展配置。
流程回顾与架构梳理
后续扩展:链式代理架构设计
独立 VPS 节点主要解决国内访问的高速连接与传输入口问题,而出口 IP 的类型则决定了目标平台对访问者身份的信任评级。若仅用于通用网络访问与资料检索,当前单节点配置已完全满足需求;若需进行海外社交媒体账号运营,则需在此节点后级串联静态 ISP 住宅代理,形成双层链式代理结构:
链式代理的连接顺序
你的电脑
本地客户端
→
VLESS 节点
负责入口速度
→
住宅代理
ISP Residential Proxy
→
目标平台
TikTok、Facebook 等
下一阶段将为链路引入原生住宅出口:在 IPRoyal 采购长期固定的静态 ISP 住宅 IP,并通过 Shadowrocket 或 Clash Verge Rev 完成链式代理的拓扑编排。