Deploy private vpn node
帮助不懂服务器的新手从零搭建自用 VPN/代理节点:先选购一台海外 VPS,再由 AI 完成 Ubuntu、VLESS Reality、Xray/3X-UI 和 Shadowrocket 接入,直到手机或电脑真实可用。用户说不想继续买共享梯子或机场订阅、想拥有自己的节点、第一次买 VPS、想让 AI 代为搭建,或后续需要复制、排障和维护节点时使用。开始前必须讲清全部预计费用,任何实际付费都由用户确认;额外覆盖凭证保护、双层防火墙、独立验收、备份和零断流维护。仅处理个人或极少数受信任设备的合法使用,不用于机场、多用户售卖、公开订阅或规避服务条款。From its SKILL.md
npx -y skills add Nar101/deploy-private-vpn-nodeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 15 days oldThe repository was created 15 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.8 KB, ~3.7k tokens by cl100k_base, as published. Nobody here has run it
部署私人 VPN 节点
把新手的“我不想继续买共享梯子,想自己搭一个”交付成手机或电脑里真实可用的个人节点。核心结果是:买对 VPS、完成部署、导入 Shadowrocket、实际连通。安全、验收、备份和维护用于保证这个结果可靠,不是取代它成为主目标。
本 Skill 免费开源,但自建方案通常包含第三方费用。开始前先给用户完整费用预期;每次发生真实付款前再次说明并等待确认,不得让用户做到一半才发现还要付费。
先选工作模式
new-deploy:从选购 VPS 到客户端交付。clone:在新 VPS 复制已验证架构,但重新生成全部实例凭证。diagnose:节点超时、抖动或特定服务不可用;先诊断,不擅自重装。maintain:备份、升级、换 IP、恢复或收紧暴露面;先确认用户是否允许短暂断流。
用户没有服务器且明显是第一次搭建时,默认使用 new-deploy。开始时用大白话报告当前处于“选服务器、等待购买、部署、客户端接入、真实验收”的哪一步。用户不懂技术时,直接给一个推荐项和理由,不把地区、线路、协议和端口变成用户必须先学会的选择。
费用预期必须先行
在推荐具体方案或引导用户进入购买页面前,先给一张费用清单:
- Skill 本身是否收费;
- 必须购买什么,通常包括 VPS 服务器;
- 可能购买什么,例如客户端、更换 IP 或额外流量;
- 每一项的当前价格、币种、一次性或周期性收费、续费周期和是否自动续费;
- 首购优惠与后续续费是否不同;
- 不购买该项会影响什么。
价格和套餐会变化,必须从当前官方页面核对,不从旧记忆报数。用户确认整体成本可以接受后,才进入购买和部署。
每次真实付费前再次用一句话说明“买什么、为什么、多少钱、以后是否还会收费”。付款、实名、验证码、自动续费选择和最终下单始终由用户完成;不得替用户点击付费、创建付费资源或默认开启自动续费。
不可突破的边界
- 仅做个人或极少数受信任设备使用;不开放注册、不售卖、不搭机场。
- 遵守用户所在地法律和目标服务条款;不承诺“访问所有服务”或绕过账号风控。
- 不在对话、仓库、日志、知识文档或脚本中写入 SSH 私钥、密码、UUID、Reality 私钥、面板 Token、完整分享链接。
- 付款、实名、验证码、密码创建、自动续费选择和最终安全授权由用户完成;不得把用户同意总体方案视为后续每一笔付费的授权。
- 不改变用户当前全局代理开关、系统默认路由或正在使用的节点,除非用户在动作发生前明确确认。
- 不保证数据中心 IP 永久干净。区分“当前独享”“当前可访问”“长期信誉良好”三个命题并分别验证。
- 不盲目运行来源不明的一键脚本;优先官方项目、固定版本、变更前备份和变更后回读。
一、对齐目标与采购
确认:所在地与运营商、预算、流量、主要服务、设备、期望地区、是否接受偶尔换 IP。价格、套餐、线路和服务条款会变化,涉及购买决策时实时查官方页面,不从旧记忆报现价。
采购优先级:
- 独立公网 IPv4 与可销毁/换 IP 能力;
- 用户实际运营商到目标地区的稳定性;
- 足够流量和带宽,而不是只看 CPU;
- Ubuntu 22.04/24.04 LTS;
- 月付或低风险试用;
- 供应商合规性和账号可维护性。
普通国际线路可能晚高峰抖动。不要把“东京距离近”等同于“三网都稳定”,也不要把云厂商 IP 等同于住宅 IP。
用户付款前明确说明:买到的是空白 VPS,不是现成 VPN;能搭出独享节点,但目标服务是否接受该数据中心 IP 仍需实测。
二、接管服务器前检查
- 用户把 SSH 私钥保存在本机,AI 只引用路径,不回显内容。
- 先执行只读检查。可上传并运行
scripts/audit-server.sh,或用等价命令检查系统、资源、服务、端口、UFW、BBR、SSH 策略、登录摘要、Fail2ban 与安全更新真相。 - 核对云厂商外层防火墙。外层未放行时,服务器内监听正常也会全部超时。
- 记录非敏感基线:供应商、地区、OS、CPU、内存、磁盘、到期日、流量包、服务版本、公开端口。
- 变更前备份已有配置;脏系统或已有业务不直接覆盖。
三、安全与网络基线
按下列顺序实施并逐项回读:
- 检查 Ubuntu 安全补丁。不能只看
unattended-upgrades active;同时核对有效更新来源和待升级包。若用户要求零断流,先模拟升级;涉及 systemd、OpenSSH、网络栈、防火墙或内核时暂缓到维护窗口,不承诺无感升级。 - 验证 SSH 密钥可登录后,再禁用 root 密码登录和 SSH 密码登录。
- 云防火墙和 UFW 采用双层最小开放:管理用 SSH 端口、节点用 TCP 443;其他端口只有明确用途才开放。
- 面板和订阅端口默认不向公网开放;需要管理时优先 SSH 隧道。
- 检查时钟、DNS、磁盘、内存和拥塞控制;BBR 只在内核支持且回读生效时报告开启。
- 公开 443 会遭遇扫描,这是常态;依赖 Reality 密钥、UUID 和最小暴露面鉴权。
零断流维护只执行能证明不触碰当前数据路径的动作,并在前后通过真实客户端复验出口和目标服务。补丁升级、重启 x-ui/Xray、调整 443、网络栈或云防火墙属于可能断流动作。详细判定、自动更新与端口探测陷阱见 references/security-and-acceptance.md。
安全设置、云防火墙、VPN 路由和永久删除临时节点属于关键动作。遵守当前工具的确认策略,在动作发生前取得明确授权。
四、部署主节点
默认只部署一个主协议:VLESS + Reality + Vision。
- 从 Xray 与面板官方项目核对当前稳定版本并固定版本号。
- 安装 Xray;使用 3X-UI 时令面板承担配置管理,不把面板暴露给公网。
- 生成新的 UUID、X25519 密钥、short ID;复制新节点时绝不复用旧实例私钥。
- Reality 目标站选择在服务器所在网络可稳定访问、TLS 特征正常的站点;不要只因为域名知名就采用。
- 主入站使用 TCP 443、
flow=xtls-rprx-vision、正确的 server name、public key、short ID 与 fingerprint。 - 每次改动后检查服务状态、Xray 配置加载日志和实际监听端口。
不要为了“兼容”同时开放一堆协议。临时 Shadowsocks 或其他回退只用于定位故障,主节点验证后立即停用并关闭端口。
腾讯云轻量服务器的已验证实例与故障经验见 references/tencent-lighthouse.md。安全与验收口径见 references/security-and-acceptance.md。
五、客户端与 Shadowrocket
生成标准 VLESS 分享 URI 或对应客户端配置,但只保存在本机权限为 600 的文件中。不要把完整 URI 写进工作台。
Shadowrocket 处理规则见 references/shadowrocket.md。核心原则:
- 新节点先作为本地节点独立测试;不要动当前全局连接。
AI专用、OpenAI专用等业务组优先委托给PROXY,由PROXY当前选择决定出口,避免把具体节点名散落到多个规则组。- 修改前读取当前真实生效配置;修改后回读 UI、运行时日志和出口 IP。
- 直接修改 SQLite 只在 UI 无法完成、已备份并获得明确授权时采用;改后执行完整性检查并刷新运行时缓存。
六、独立验收
不要用“面板显示运行中”或“一次延迟数字”验收。至少完成:
- 服务器:Xray/3X-UI active,主入站只监听预期端口,云防火墙与 UFW 一致。
- 协议:用独立 Xray/sing-box 客户端或 Shadowrocket 本地 SOCKS 端口直连主节点。
- 出口:
api.ipify.org返回新 VPS 公网 IP。 - 服务:OpenAI/Claude 未带凭证返回
401可证明网络连通;Googlegenerate_204返回204。 - 真实应用:用户设备上连续访问,至少覆盖两个网络环境;不以单次延迟决定成功或失败。
- 账号稳定:确认主要 AI 流量固定到同一地区,不频繁跨国切换。
本地可运行:
bash scripts/verify-client.sh --proxy socks5h://127.0.0.1:1082 --expected-ip <VPS_IP>
只有上述证据同时成立,才报告节点完成。延迟波动与 IP 信誉是后续观察项,不是假装已经消失的问题。
七、收尾与交付
- 停用并删除临时诊断入站、客户端节点和对应防火墙端口。
- 运行
scripts/backup-xui.sh <output-file>生成权限为600的数据库备份与 SHA-256。 - 下载备份后核对本地/远端哈希,再删除服务器临时副本。
- 交付:节点导入文件、SSH 私钥位置、数据库备份、非敏感实例清单、维护文档。
- 明确是否真的提供了订阅链接。单节点分享 URI 不等于公网订阅;不要虚报交付。
- 报告本地已保存与远端是否同步;没有 commit/push 就不说 GitHub 已同步。
八、故障排查顺序
节点超时时按顺序查:
- 云实例是否 Running、公网 IP 是否变化;
- 云防火墙是否放行 TCP 443;
- UFW 是否放行 TCP 443;
- Xray 是否 active 且监听 443;
- 客户端地址、UUID、public key、short ID、server name、fingerprint、flow 是否一致;
- 服务端是否看到真实双向 443 流量;
- 分运营商测试路由、丢包和晚高峰;
- 最后才判断协议回归、IP 被封或需要换 IP。
延迟忽上忽下时,区分短连接测速、真实页面响应、吞吐、丢包和线路拥堵。单次 400 ms 或超时不能单独证明节点失效。
版本与适用性
当前 v0.2.2 来自一次已完成的腾讯云东京新手部署和一次同实例零断流安全加固:Ubuntu 24.04、3X-UI、Xray、VLESS Reality Vision、Shadowrocket。腾讯云路径已真实验证;其他供应商、其他客户端和自动订阅仍需在使用时重新验证,不得直接宣称通用稳定。
What ships with it: 26 files
74.1 KB alongside SKILL.md, 10 of them executable
agents/
- openai.yaml439 B
references/
- clash-mihomo.md2.4 KB
- client-adapters.md2.4 KB
- device-handoff.md1.5 KB
- provider-selection.md8.6 KB
- reality-compatibility.md3.2 KB
- security-and-acceptance.md3.8 KB
- shadowrocket.md4.8 KB
- tencent-lighthouse.md4.3 KB
- troubleshooting.md2.0 KB
- windows.md2.6 KB
scripts/
- audit-server.shruns2.9 KB
- backup-xui.shruns777 B
- build-transfer-package.shruns2.3 KB
- diagnose-node.shruns3.2 KB
- preflight-reality.shruns3.8 KB
- redact-debug-log.pyruns1.3 KB
- run-debug-window.shruns3.5 KB
- test-skill.shruns4.4 KB
- validate-public.shruns2.9 KB
- verify-client.shruns4.2 KB
- CITATION.cff425 B
- .gitignore88 B
- LICENSE1.0 KB
- NOTICE391 B
- README.md6.8 KB