Merge branch 'main' into docs/22-tc-discuss-and-gitea-round-review

This commit is contained in:
2026-06-25 08:42:13 +08:00
@@ -0,0 +1,131 @@
---
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 CaddySSL 自动签发 + 反代)→ FRP 隧道 → Mac Mini CloudCLI。
## 2. 架构图
```
外网设备(浏览器)
↓ HTTPS
首尔 VPS 43.133.235.218
├── Caddy :443SSL 自动签发 + 反代)
│ └── claude.mysanguo.top → 127.0.0.1:13001
└── frps :7000
↓ FRP 隧道
Mac Mini frpc
└── 127.0.0.1:3001 → CloudCLIlaunchd 持久化)
```
## 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 内部反代端口"的概念。
### 正确理解
```
外网 → :443Caddy HTTPS)→ 127.0.0.1:13001VPS 内部回环)→ 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 白名单