--- title: "专题 98 — CloudCLI 外网部署与 VPS 服务暴露规范" created: 2026-06-25 version: v1.0 status: active changelog: v1.0 初版 --- # 专题 98 — CloudCLI 外网部署与 VPS 服务暴露规范 ## 1. 概述 CloudCLI 通过 FRP 内网穿透 + VPS Caddy 反代,绑定到 `claude.mysanguo.top` 实现外网访问。 整体链路:外网设备 → HTTPS → VPS Caddy(SSL 自动签发 + 反代)→ FRP 隧道 → Mac Mini CloudCLI。 ## 2. 架构图 ``` 外网设备(浏览器) ↓ HTTPS 首尔 VPS 43.133.235.218 ├── Caddy :443(SSL 自动签发 + 反代) │ └── claude.mysanguo.top → 127.0.0.1:13001 └── frps :7000 ↓ FRP 隧道 Mac Mini frpc └── 127.0.0.1:3001 → CloudCLI(launchd 持久化) ``` ## 3. 配置详情 ### 3.1 DNS 记录(NameSilo) | 主机记录 | 类型 | 值 | TTL | |----------|------|-----|-----| | claude | A | 43.133.235.218 | 3600 | ### 3.2 frpc 配置(Mac Mini) 配置文件路径:`~/.local/etc/frpc.toml` ```toml [[proxies]] name = "cloudcli" type = "tcp" localIP = "127.0.0.1" localPort = 3001 remotePort = 13001 ``` 重启方式: ```bash launchctl unload ~/Library/LaunchAgents/com.sanguo.frpc.plist launchctl load ~/Library/LaunchAgents/com.sanguo.frpc.plist ``` ### 3.3 VPS Caddy 配置 配置文件路径:`/etc/caddy/Caddyfile` ```caddyfile claude.mysanguo.top { reverse_proxy 127.0.0.1:13001 } ``` 重载:`sudo systemctl reload caddy` ### 3.4 CloudCLI 持久化(Mac Mini) - LaunchAgent:`~/Library/LaunchAgents/com.cloudcli.server.plist` - 命令:`cloudcli start --port 3001` - 日志:`~/.cloudcli/server.log` - 绑定地址:`0.0.0.0:3001` ## 4. ⚠️ 关键教训:腾讯云防火墙不需要开后端端口 ### 问题 配置完成后,误以为需要在腾讯云轻量服务器防火墙中开放 13001/TCP 端口。 ### 根因 混淆了"VPS 对外暴露端口"和"Caddy 内部反代端口"的概念。 ### 正确理解 ``` 外网 → :443(Caddy HTTPS)→ 127.0.0.1:13001(VPS 内部回环)→ FRP 隧道 → Mac Mini :3001 ↑ 这段是 VPS 本地回环通信 不经过腾讯云防火墙 ``` ### 规则 - 腾讯云防火墙只需要开放 **80/443**(Caddy 对外 HTTPS 入口) - Caddy 到后端服务的反代走 `127.0.0.1`(本地回环),**不需要在腾讯云防火墙开放后端端口** - ufw 同理,但 ufw 默认不拦截 lo(loopback)接口,所以 `ufw allow 13001` 虽然无害但也无必要 - 只有当服务直接对外暴露(不经过 Caddy 反代)时,才需要在防火墙开放对应端口 ### 判断方法 如果 Caddy 配置中写的是 `reverse_proxy 127.0.0.1:XXXX`,则 XXXX 端口不需要对外开放。 ## 5. 当前外网服务清单 | 子域名 | VPS Caddy 反代 | FRP 隧道远端端口 | 内网目标 | 服务 | |--------|---------------|-----------------|---------|------| | oc.mysanguo.top | → 127.0.0.1:18789 | 18789 | 127.0.0.1:18789 | OpenClaw | | git.mysanguo.top | → 127.0.0.1:13000 | 13000 | 192.168.2.154:3000 | Gitea | | claude.mysanguo.top | → 127.0.0.1:13001 | 13001 | 127.0.0.1:3001 | CloudCLI | ## 6. 添加新外网服务的标准流程 1. NameSilo 添加 DNS A 记录(仅此步需要手动操作) 2. Mac Mini frpc.toml 新增隧道段 3. VPS Caddyfile 新增 `reverse_proxy` 段 4. reload caddy + 重启 frpc 5. 验证 `curl -I https://新域名` !!! warning "注意" **不需要在腾讯云防火墙或 ufw 开放后端端口**(除非绕过 Caddy 直接暴露)。 ## 7. 安全说明 - CloudCLI 自带账号密码认证(session + cookie),作为唯一安全层 - 未配置 Caddy Basic Auth(避免双重密码体验差) - 如需增强安全,可在 Caddy 层加 Basic Auth 或 IP 白名单