实战SOP:CodeArts用CF CLI搭隧道转发
背景:本地服务要让外网访问,隧道转发一条命令的事
开发时本地跑了个服务,想让外网访问——做Webhook联调、给同事预览、让AI Agent接回调。以前要么买域名配DNS,要么用内网穿透工具手动配。现在Cloudflare出了个叫cloudflared的CLI工具,一条命令就能把本地端口变成公网HTTPS地址。
这次更进一步:不自己敲命令,把需求告诉码道CodeArts,让它操作cloudflared CLI完成隧道转发。从安装到建隧道到验证,全程自然语言驱动。本文记录整个过程,给想用AI Agent做网络基础设施配置的人一个参考。
方案:四步从本地到公网
整体流程
| 步骤 | 人工做的事 | CodeArts做的事 |
|---|---|---|
| 1.说需求 | 描述本地服务和端口 | 解析需求,规划执行步骤 |
| 2.装CLI | 确认执行 | 下载安装cloudflared |
| 3.建隧道 | 无 | 运行快速隧道命令,获取公网地址 |
| 4.验证 | 无 | 用curl测试公网地址是否可达 |
第一步:用自然语言下指令
打开码道CLI,输入需求:
帮我用cloudflared把本地8000端口的服务通过隧道转发到公网,
要求:
1. 先检查cloudflared是否已安装,没有就装
2. 用快速隧道模式(不需要账号)
3. 启动隧道后把公网地址告诉我
4. 用curl验证公网地址能访问到本地服务
CodeArts收到后列了个四步执行计划,每步标注要跑的命令和预期结果。
第二步:安装cloudflared
CodeArts先检查是否已安装:
# 检查是否已安装
which cloudflared || echo "NOT_INSTALLED"
# 没装则安装(Debian系)
# 从Cloudflare官方发布页下载对应架构的deb包
sudo dpkg -i cloudflared-linux-amd64.deb
# 验证
cloudflared --version
输出显示版本号,安装成功。这步如果手动做,得先查系统架构选对安装包,CodeArts自己判断了是x86_64用amd64包。
第三步:启动快速隧道
快速隧道不需要Cloudflare账号,一条命令出公网地址:
# 后台启动隧道,输出JSON格式方便解析
cloudflared tunnel --url http://localhost:8000 --output json &
TUNNEL_PID=$!
# 等几秒让隧道建立
sleep 3
# 从输出中提取公网URL
# JSON输出里有个hostname字段,就是公网地址
CodeArts启动隧道后,从JSON输出里解析出公网地址,格式类似一串随机字符加固定后缀。它把这个地址记下来,用于下一步验证。
这步有个细节:cloudflared的JSON输出是流式的,地址不是立刻就有,要等隧道建立完成。CodeArts用了轮询方式,每秒检查一次输出里有没有hostname字段,最多等10秒。手动做这步容易直接读第一行输出发现没有地址就以为失败了。
第四步:验证公网可达
# 用curl测试公网地址
curl -s -o /dev/null -w "%{http_code}" https://<隧道地址>/
# 预期输出: 200 或 302(取决于本地服务)
# 如果返回 530: 隧道没连上,检查cloudflared进程
# 如果返回 502: 隧道通但本地服务没响应,检查8000端口
CodeArts跑完curl,返回200,确认公网地址可达。它还额外跑了ps aux | grep cloudflared确认隧道进程在运行,比手动做多了个存活检查。
实践要点
-
快速隧道是临时的:重启cloudflared后公网地址会变。如果需要固定地址,得用命名隧道(Named Tunnel),需要Cloudflare账号和自定义域名。CodeArts可以帮你走完整流程,但需求描述里要说明"要固定的"还是"临时的"。
-
让CodeArts区分两种模式:
- 快速隧道(Quick Tunnel):零账号零配置,一条命令出随机地址,用完即弃,适合临时联调
- 命名隧道(Named Tunnel):绑域名长期跑,需要创建隧道、配DNS路由、写配置文件,步骤多但地址固定
说清楚要哪种,CodeArts才知道走哪条路径。不说的话它默认用快速隧道,够用但不持久。
-
隧道进程要守护:cloudflared不是systemd服务,终端关了隧道就断。让CodeArts用nohup或写个systemd unit保活。这步很多人忘,第二天发现地址访问不了,以为隧道坏了,其实是进程没了。
-
排障记住两个状态码:
- 530:隧道本身没连上(cloudflared进程死了或网络不通)→查进程和网络
- 502:隧道通了但回源失败(本地服务没监听或端口不对)→查本地服务
把这两个码告诉CodeArts,它排障时能快速定位是哪层的问题,不用从头查。
-
安全注意:隧道一旦建立,公网任何人都能访问你的本地服务。临时联调完记得关隧道。让CodeArts在验证通过后提示你是否保留,不要一直开着暴露本地服务。
小结
用CodeArts操作cloudflared搭隧道转发,核心价值不在省命令(一共也就三四条),而在省认知——不用记住快速隧道和命名隧道的区别,不用查JSON输出的字段名,不用知道530和502代表什么。把这些知识交给AI Agent,你只需要说清楚"把哪个端口转到公网"。
从效率看,手动搭隧道约15分钟(含查文档和等隧道建立),用CodeArts约3分钟。差距主要在"不用查文档确认参数"和"不用手动从输出里找公网地址"这两点上。对于不常做网络配置的人,AI Agent兜底的价值更明显——说对需求就行,执行细节不用管。
- 点赞
- 收藏
- 关注作者
评论(0)