白嫖甲骨文服务器+AI Agent,10分钟搭好备用节点(附开源Skill)
文章目录
上一篇,我们注册了甲骨文账号,开出了一台永久免费的ARM实例。这篇接着往下做:在这台机器上搭一个自己用的VLESS + REALITY节点。
注册与实例开通流程可以看这篇:
先说一下我的用法。我日常用的主力节点在一台DMIT的VPS上,甲骨文这台是备用节点。主力机器维护、线路抽风或者被临时封端口的时候,手机上切一下就能继续用。备用节点不需要多快,但要稳、要省心,免费的甲骨文正好合适。
方案本身并不复杂:在服务器上装3x-ui面板,用它创建一个VLESS + REALITY节点。3x-ui是一个网页管理面板,建节点、加用户、看流量都能在网页上点;REALITY是目前比较主流的协议,别人探测你的服务器时,看到的是一个正常网站,不容易被识别。另外,订阅和后台通过Cloudflare Tunnel访问,服务器不用多开端口。
这次的做法和常见教程不太一样:全程在自己电脑上,用AI Agent加一个Skill来完成,基本不需要自己敲代码。
-
Agent是在你电脑上运行的AI助手,比如Claude Code或Codex。它能通过SSH连上服务器,替你执行命令。
-
Skill是我整理好的一份"搭节点操作手册",装给Agent以后,它会按固定的流程来做:先检查,再给方案,确认后才动手,最后验收。
你要做的,主要是用中文把需求告诉Agent,在它给出方案时看一眼、回一句"可以"。文中每一步要发给Agent的话都写好了,复制过去就行。需要你自己动手的只有两类:在甲骨文和Cloudflare的网页后台点几下,以及文末管理3x-ui时输入一个菜单命令。
服务器上实际操作的时间大约10分钟,Cloudflare后台另外点了几分钟。
文中的对话截图是根据这次实际运行的输出整理排版的,IP等信息做了遮挡;3x-ui面板的截图是真实截图。
花费
服务器和Cloudflare都用免费额度,唯一的花费是域名。如果你的主力节点已经在用某个域名,直接给备用节点加两个子域名就行,不用另外买。
搭完是什么样
-
翻墙流量直接连服务器的443端口,不经过Cloudflare
-
手机更新订阅走Cloudflare Tunnel
-
3x-ui后台也走Tunnel,并且前面加了一层Cloudflare Access邮箱验证
-
服务器对公网只开放22和443两个端口,面板和订阅端口从外面访问不到
不是甲骨文,也能照着做
这篇虽然用甲骨文演示,但整套方案并不绑定甲骨文。我的主力节点在DMIT,用的也是同样的结构:节点直连443,后台走Cloudflare Tunnel加Access。
只要你的服务器满足下面几条,就可以照着做:
-
能用SSH登录
-
系统是常见的Linux:Debian、Ubuntu,或者Rocky、AlmaLinux这类RHEL系
-
处理器是x86_64或ARM64都可以,Agent会自己识别,下载对应的版本
-
有独立的公网IPv4;如果是NAT小鸡,需要服务商给了明确的TCP端口映射
-
能在云厂商后台改防火墙(安全组)
换成别家服务器,提示词基本不用改,把SSH别名换成你自己的就行。会不一样的主要是这几处:
-
云防火墙的位置不同:甲骨文叫Security List,AWS叫安全组,Google Cloud叫VPC防火墙规则,Azure叫NSG,DMIT、Vultr这类普通VPS一般在控制台的防火墙页面,有的干脆没有。第四步按你家的来。
-
系统防火墙不一定有坑:第二步提到的"只放行22"是甲骨文Ubuntu镜像特有的,别家镜像通常没有。有没有、要怎么改,Agent在只读检查时会告诉你。
-
443被占用:如果服务器上已经跑着网站,Agent不会停掉它,而是换一个端口,或者先给你共存方案。
-
NAT小鸡:公网端口通常不是443,客户端要连服务商分配给你的外部端口。Agent会把外部端口写进订阅。
另外有几种情况,Skill会直接停下来,不会硬装:Windows服务器、Alpine或OpenWrt这类精简系统、只有IPv6的机器、不支持systemd的系统。遇到这些,要另外找专门的方案。
准备
-
上一篇开好的甲骨文实例(开通教程见文章开头的链接;用别家VPS也可以,见上一节):我的是A1,Ubuntu 24.04,1核2G。在电脑上配好SSH别名会方便很多,比如我敲ssh oracle就能登录。
-
一个AI Agent:Claude Code或Codex都可以,需要能在你电脑上执行命令。
-
一个托管在Cloudflare的域名:订阅和后台各用一个子域名。不想用Cloudflare的话也可以,见第三步的"怕麻烦的话"。
-
手机客户端:iOS可以用Shadowrocket或Stash,安卓可以用v2rayNG或FlClash,电脑可以用Clash Verge Rev或v2rayN。
Agent会拿到服务器的root权限,所以整个过程我都让它先说明要做什么,确认后再动手。
第一步:给Agent安装Skill
我把搭节点的流程、检查项和验收标准整理成了一个开源Skill,Agent装上以后会按这套流程来做,不会自己随便找一键脚本。
发给Agent:
请从 https://github.com/suversal/skills/tree/main/vps-reality 安装vps-reality Skill,保持整个文件夹的目录结构。装好后运行它自带的离线测试,告诉我结果和调用方式。这一步不要连接任何服务器。
37项测试,36项通过,1项因为本机没装PyYAML跳过,不影响使用。
第二步:只读检查服务器
发给Agent:
使用vps-reality Skill,在我的服务器oracle上搭一个个人自用节点。先确认连的是哪台机器,然后只做只读检查,不要安装、不要改防火墙、不要重启。
mutations=none表示这一步没有改动任何东西。系统是Ubuntu 24.04 ARM64,在Skill的支持范围内,443端口空闲。
检查结果里有一点要特别注意,也就是截图里标黄的那一行:甲骨文的Ubuntu镜像自带一套防火墙规则,只放行22端口,其他连接全部拒绝。所以只在甲骨文控制台开放443是不够的,服务器系统里也要放行。很多人照着教程开了端口还是连不上,就是卡在这里。
第三步:确定方案
发给Agent(域名换成你自己的):
我的方案:
-
节点用公网TCP 443,不经过Cloudflare。
-
订阅走Cloudflare Tunnel,域名sub.你的域名。
-
后台也走Tunnel,域名panel.你的域名,加Cloudflare Access,只允许我的邮箱。
-
面板和订阅端口都不对公网开放。
-
伪装目标请找3~5个候选并逐项检查,列出证据由我来选。
-
只建一个owner用户,每月流量额度按我的套餐设置,每月1日重置。
-
不装多余的东西,不改内核。 先给我变更清单和回滚方法,我确认后再执行。
我这台的额度填的是9216GB(3x-ui按1024换算,正好是9TB),给甲骨文每月10TB的免费出站流量留一点余量。
为什么这样配
这套方案的思路是:翻墙流量走最短的路,管理入口全部藏起来。
-
节点直连443:流量不绕Cloudflare,速度只取决于服务器本身的线路;443又是HTTPS的标准端口,看起来就是普通的网页访问。
-
订阅走Tunnel:订阅端口不用对公网开放,手机通过HTTPS域名就能自动更新订阅。以后服务器换了参数,手机上点一下更新就行。
-
后台走Tunnel + Access:后台同样不开放端口,而且陌生人连3x-ui的登录页都看不到,得先通过你邮箱的验证码。
-
只开两个端口:服务器对外只有SSH和443,被扫描、被爆破的面很小。
-
改动最少:不换内核、不装额外软件,出了问题容易排查,也容易回滚。
代价是要多做一点Cloudflare的配置,并且需要一个域名。
怕麻烦的话
如果你觉得Cloudflare那部分太麻烦,可以把方案里的第2、3条换成下面这句,让Agent用最简单的方式:
不用Cloudflare,也不用域名。后台和订阅都只监听本机,后台我通过SSH隧道打开;节点配置直接给我一个VLESS链接或二维码,我手动导入手机。
这样可以省掉第七步整个Cloudflare的配置,也不用买域名,是真正的0元。安全性上一点不差,公网照样只开放22和443。
少掉的是两样便利:
-
手机不能自动更新订阅。服务器参数变了,要重新导入链接。
-
打开后台要先在电脑上建SSH隧道。在电脑终端运行 ssh -L 8080:127.0.0.1:<面板端口> oracle,然后在浏览器打开 http://127.0.0.1:8080/访问路径/。
对备用节点来说,这两点影响不大:备用节点搭好以后基本不用动,参数一年也改不了几次。先用简单方案跑起来,以后需要再让Agent加上Tunnel也完全可以,Skill支持在保留现有配置的前提下迁移。
伪装目标怎么选
REALITY会把自己伪装成在访问另一个正常网站,这个网站就是伪装目标。别人探测你的服务器时,看到的是这个网站的真实证书和页面。
选伪装目标有几个基本要求:
-
支持TLS 1.3和HTTP/2,证书正常
-
不挂在Cloudflare这类共享CDN上,否则别人可能借你的服务器访问CDN上的其他网站,消耗你的流量
-
是普通的小网站,不是下载站、网盘或代理面板
-
离你的服务器近
我这次用的是hengwen.ltd。它不是我的网站,是一个第三方小站。之前我的主力节点(DMIT)一开始用的是教程里常见的www.sony.com,后来发现Sony背后是CDN,就在DMIT所在网段做了一轮低速筛选:检查证书、TLS 1.3、HTTP/2,排除CDN和下载站,最后在同一ASN的相邻网段里找到了它。
这次在甲骨文上,我让Agent从这台服务器重新检查了一遍:
没有CDN特征,TLS 1.3和h2都支持,证书匹配,延迟约10ms(它在洛杉矶,甲骨文这台在圣何塞)。各项都合格,就继续用它。
不建议照抄这个域名。第三方网站随时可能换CDN、证书过期或者关站,而且对你的服务器来说也不一定近。更稳妥的做法是让Agent在你自己的服务器上挑:
请帮我选REALITY伪装目标:找3~5个候选,在这台服务器上逐项检查DNS、TLS 1.3、h2、证书和是否共享CDN,列一张证据表给我,由我来选。
另外,扫描网段找目标的做法不建议新手照做,主动扫描别人的地址可能违反服务商的使用条款。
第四步:放行443端口
要放行两层。
第一层:甲骨文控制台。路径是Networking → Virtual cloud networks → 你的VCN → 你的子网 → Security Lists → Add Ingress Rules。Source CIDR填0.0.0.0/0,IP Protocol选TCP,Destination Port Range填443。
用别家服务器的话,这一层换成对应的安全组或防火墙页面,规则一样:只放行TCP 443,不开UDP,也不要顺手开放面板和订阅端口。
第二层:服务器系统。这一层由Agent来做。要注意的是,443的放行规则必须插在"全部拒绝"那条规则前面。防火墙规则从上往下匹配,放在后面就不会生效。改完还要保存,重启后才不会丢。
第五步:安装3x-ui和Xray
Agent查到3x-ui当天的最新正式版是v3.8.5。它没有直接运行安装脚本,而是先下载下来读了一遍,发现三个需要处理的默认行为:
-
非交互安装时,面板默认监听所有网卡
-
默认会顺手装Fail2ban
-
如果不指定,可能会去申请证书,临时占用80端口
所以安装时用参数把这些都关掉了,并把面板端口固定下来,方便后面Cloudflare Tunnel对接。安装前后它还核对了官方校验值,并读取程序文件头,确认装的是ARM64版本:
装完后,面板被改成只监听本机。随机生成的账号密码只保存在服务器的私密文件里。
第六步:创建节点
发给Agent:
继续创建VLESS + TCP + REALITY + Vision节点。生成全新的密钥和ID。写入前备份数据库,写入后读回核对,敏感信息只比对、不显示。然后做握手测试。
读回的每一项都是match,握手测试通过,出口IP也对得上。
有个细节:流量每月重置要在"入站"和"用户"两层都设置。只设一层的话,用户的已用流量会一直累积。
第七步:接上Cloudflare Tunnel
这一步一半在Cloudflare后台操作,一半交给Agent。
1.新建Tunnel。Cloudflare Zero Trust → 网络 → 连接器 → 新建Tunnel。
2.先给后台建Access应用。访问控制 → 应用程序 → 添加自托管应用,填后台域名,策略只允许自己的邮箱。
先建Access,再加后台路由。这样后台域名一生效就有这层保护。
3.添加两条路由。订阅域名指向127.0.0.1:2096,后台域名指向127.0.0.1:58405。
订阅域名不要加Access。手机在后台自动更新订阅时没办法输入验证码,被拦住的话拿到的是登录页面,而不是节点配置。
4.让Agent安装cloudflared。连接器页面上的Token相当于这条Tunnel的钥匙,不要贴进聊天,让Agent把它存进只有root能读的文件。
这个页面上,操作系统选Debian(Ubuntu也选它),架构要按服务器来选:甲骨文A1是ARM,选arm64-bit;普通x86服务器选64-bit。页面给的命令不用自己跑,交给Agent就行。
发给Agent:
Cloudflare Tunnel已经建好。请从官方源安装与服务器架构匹配的cloudflared,Token存进只有root能读的文件,通过systemd启动,任何输出里都不要显示Token。
装好后几秒钟,4条隧道连接就建立起来了。回到Cloudflare的隧道列表,状态显示"正常"就说明连上了:
第八步:验收
验收要在服务器外部做,我让Agent从另一台服务器上测:
-
公网只开放了22和443
-
Raw、JSON、Clash三种订阅都能拿到、能解析,内容和配置一致
-
没登录的人打开后台,会被Cloudflare登录页拦住
-
不带密钥的访问者,只能看到伪装网站的真实页面
最后用手机测一次。在3x-ui后台的"客户端"页面,打开owner的信息,复制订阅地址,或者直接用手机扫对应的二维码:
导入手机客户端后,关掉Wi-Fi,用手机流量连接节点,打开查IP的网站,显示的是甲骨文服务器的IP就说明成功了。
如果客户端开的是规则模式,国内的IP查询网站会走直连,显示的是你自己宽带的IP,不代表节点没生效。验证节点要用国外的网站。
作为备用节点,建议把它和主力节点放在同一个客户端里,主力出问题时直接切换。
3x-ui日常管理
节点搭好以后,平时最常做的是这几件事。
登录后台
打开 https://后台域名/访问路径/ 先通过Cloudflare的邮箱验证码,再输入3x-ui自己的账号密码。
初始的账号、密码和访问路径,在服务器的/etc/x-ui/install-result.env里。
修改账号密码
账号密码不在网页里改,而是在服务器终端里用x-ui的管理菜单:
ssh oracle
sudo x-ui
选7. Reset Username & Password,然后:
-
输入y确认
-
输入新用户名(直接回车会随机生成)
-
输入新密码(直接回车会随机生成)
-
询问是否关闭两步验证时,一般输入n
-
同意重启面板
几点提醒:
-
输入的密码会以明文显示在终端里,操作时不要共享屏幕或录屏
-
重启面板会让代理短暂中断几秒
-
改完以后,install-result.env里的旧账号密码就作废了,以新密码为准,记得存进密码管理器
-
这里改的是3x-ui的密码,Cloudflare Access的邮箱验证不受影响
修改访问路径
访问路径就是后台地址里域名后面那一段随机字符。如果怀疑它泄露了,在同一个菜单里选8. Reset Web Base Path,输入y确认,会生成一个新的随机路径,然后自动重启面板。或者在 设置-常规-URL路径 中指定路径。
路径变了不影响Cloudflare Tunnel,因为Tunnel只对接端口。之后打开后台要换成新路径。忘了路径的话,选11. View Current Settings可以查看当前设置。
添加用户
备用节点也可以分给家人或朋友用。每个人单独建一个用户,额度和到期时间分开管理,谁的链接泄露了,只停用那一个人就行。
在后台打开"客户端"页面:
点添加客户端,常用的几项:
-
邮箱:其实就是用户名,写一个你认得出的标签就行,比如friend-1
-
流量上限(GB):这个人每个周期能用多少,0表示不限
-
过期时间:到期后自动停用,不填就是永久
-
流量重置:选"每月",再填每月重置日
-
备注:写上是谁,方便以后查找
-
关联入站:必须选上刚才建的REALITY节点,否则这个用户连不上
填完点"创建"。在列表里点这个用户的二维码或链接按钮,就能拿到他自己的订阅。给别人用的时候,发他自己的订阅,不要发owner的。
另外,我这台面板上的"IP限制"一项是灰的,暂时用不了。只给少数几个熟人用的话,影响不大。
踩过的坑
最后
整套流程走下来,比较省心的地方是Agent每一步都会先检查、再动手,改完还会读回核对,出了问题能看出是卡在哪一层。
Skill已经开源:https://github.com/suversal/skills/tree/main/vps-reality
这篇是我2026年9月底的个人实操记录,软件版本和后台界面以后可能会变,仅供参考。也请遵守当地规定和服务商条款
安装中遇到问题,欢迎留言;教程哪里写得不对、有更好的做法,也欢迎指出,我会及时更新。
感谢阅读,这篇文章如果对你有帮助的话欢迎点赞收藏、下篇文章再见。
沿着这个主题继续读
从一篇文章,找到相关的教程、经验和阅读路径。























