7.6 KiB
CPA 部署操作手册(你动手版)
目标链路:
Claude Code → https://api.trivoo.website (New API) → cli-proxy-api (CPA) → 你的 Google AI Pro 账号(Gemini / 反重力 Claude 模型)环境:腾讯云新加坡 Ubuntu 24.04(43.156.118.130),New API 已在运行 原则:服务器上只新增 /opt/cpa,不动你现有的 new-api / nginx / xray
总流程(6 步)
| 步骤 | 在哪做 | 干什么 | 大约耗时 |
|---|---|---|---|
| ① | 本地电脑 | 双击 tunnel.bat 开 SSH 隧道 |
10 秒 |
| ② | 本地一条命令 | 把部署脚本送进服务器执行 | 2-3 分钟 |
| ③ | 本地浏览器 | 管理面板里 OAuth 登录 Google 账号 | 3 分钟 |
| ④ | 浏览器 | New API 后台加一个渠道 | 1 分钟 |
| ⑤ | 本地 | 配 Claude Code / CCS | 2 分钟 |
| ⑥ | 本地 | 全链路验证 | 1 分钟 |
每步都有 ✅ 检查点,过了再走下一步,不会乱。
① 开隧道(本地)
双击 F:\AI\docker\cpa-deploy\tunnel.bat,出现提示后保持窗口开着(关掉窗口 = 隧道断开)。
它的作用:把你本地的 8317/8085/1455/54545/51121/11451 端口接到服务器上。
- 8317 = 管理面板
- 51121 等其余端口 = Google OAuth 授权时的回调端口(必须通,否则登录卡在最后一步)
✅ 检查点:浏览器打开 http://localhost:8317/management.html,能加载出页面(此时可能还是部署前,打不开就先做第②步)。
卡住不动 = SSH 没连上,先在 PowerShell 里手动
ssh ubuntu@43.156.118.130确认能登录。
② 执行部署脚本(本地 PowerShell 一条命令)
打开 PowerShell,原样粘贴执行:
(Get-Content F:\AI\docker\cpa-deploy\deploy-cpa.sh) -join "`n" | ssh ubuntu@43.156.118.130 "sudo bash -s"
脚本做的事(幂等,重复跑安全):建 /opt/cpa → 生成随机密钥写入 config.yaml → 写 docker-compose.yml → 建 ai-net 网络并把 new-api 挂进来 → 启动 cli-proxy-api 容器 → 自检 → 打印两把钥匙。
✅ 检查点(看输出):
cli-proxy-api | Up ...且端口全是127.0.0.1:xxxx->xxxx(只有回环,公网摸不到)no key (expect 401)→ HTTP 401;with key (expect 200)→ HTTP 200- 末尾打印
MGMT_KEY和CPA_API_KEY(sk-cpa- 开头)——复制存好,忘了随时在服务器上sudo cat /opt/cpa/KEYS.txt
③ OAuth 登录 Google 账号(本地浏览器)
- 确认 ① 的隧道窗口开着,浏览器访问
http://localhost:8317/management.html(首次访问 CPA 会自动从 GitHub 下载面板,转几秒到十几秒属正常) - 连接信息:服务地址填
http://localhost:8317,管理密钥填 MGMT_KEY - 在面板里找「凭证 / Auth 管理」类的登录入口,选你要挂的渠道:
- Antigravity(反重力):Google AI Pro 订阅的主战场——Gemini 模型 + Claude Sonnet/Opus (thinking) 都从这里出
- AI Studio / Gemini:Gemini 模型的另一条渠道
- 点登录 → 弹出 Google 授权页 → 选中你的 Pro 账号 → 允许
→ 浏览器会跳
localhost:51121/...,隧道把它送回服务器 → 面板里出现凭证文件 = 成功
备用方案(面板上找不到登录入口时用命令行):
ssh ubuntu@43.156.118.130
sudo docker exec -it cli-proxy-api /CLIProxyAPI --antigravity-login --no-browser
它会打印一条授权 URL,复制到本地浏览器打开授权即可(回调靠隧道)。
查看所有支持的登录命令:sudo docker exec -it cli-proxy-api /CLIProxyAPI --help
✅ 检查点(服务器上执行,看到凭证文件 + 模型列表非空):
ssh ubuntu@43.156.118.130 "sudo ls /opt/cpa/auths && sudo docker exec cli-proxy-api sh -c 'wget -qO- http://127.0.0.1:8317/v1/models --header \"Authorization: Bearer $(sudo grep -oE \"sk-cpa-[0-9a-f]+\" /opt/cpa/config.yaml | head -1)\" | head -c 600'"
国内账号疑虑:OAuth 走的是 AI Studio/反重力渠道,看的是出口 IP(新加坡),不是账号注册地。如果某个模型 403/配额异常,换渠道再试或确认订阅生效。
④ New API 加渠道(浏览器后台)
打开 https://api.trivoo.website → 渠道 → 创建渠道:
| 字段 | 填什么 |
|---|---|
| 类型 | Claude(保 Anthropic 协议端到端,Claude Code 的 thinking/工具调用不丢) |
| 名称 | cpa-antigravity(随意) |
| 代理 / Base URL | http://cli-proxy-api:8317(容器内网直连,不走公网) |
| 密钥 | CPA_API_KEY(sk-cpa- 开头那把) |
| 模型 | 从上一步 ✅ 检查点输出的模型列表里抄(逐个回车成标签) |
提交后点渠道卡片右上角测速图标。
✅ 检查点:出现绿色延迟数字 = New API → CPA → Google 全通了。
⑤ 配 Claude Code(本地)
编辑 C:\Users\<你>\.claude\settings.json(用 CCS 的话就在 CCS 里加一个供应商,值一样——茨米说的"当成 codex 那样加"就是这个):
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-你在NewAPI建的令牌",
"ANTHROPIC_BASE_URL": "https://api.trivoo.website",
"API_TIMEOUT_MS": "600000",
"CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1"
},
"model": "渠道里填的某个模型名"
}
没有现成令牌就去 New API 后台「API 密钥」建一个(你自己的指南里写过这步)。
⑥ 全链路验证(本地 PowerShell)
curl.exe -s https://api.trivoo.website/v1/messages `
-H "x-api-key: sk-你的NewAPI令牌" `
-H "anthropic-version: 2023-06-01" `
-H "content-type: application/json" `
-d '{\"model\":\"渠道里的模型名\",\"max_tokens\":64,\"messages\":[{\"role\":\"user\",\"content\":\"用一句话打个招呼\"}]}'
✅ 检查点:返回 JSON 里有 "content":[{"type":"text"... = 全链路打通 🎉
然后开 Claude Code 随便聊两句,New API 后台「日志」里能看到这条调用。
日常运维速查(服务器上)
cd /opt/cpa
docker compose logs -f --tail=50 # 看 CPA 日志
docker compose restart # 重启 CPA
docker compose down # 停止(数据在 ./auths ./config.yaml,不丢)
sudo cat /opt/cpa/KEYS.txt # 查两把钥匙
sudo ls /opt/cpa/auths # 看已登录的账号凭证
两个注意:
- 只有第③步(OAuth 登录)和用管理面板时才需要开隧道,平时 CPA 自己在服务器上跑,不需要 tunnel.bat
- 如果你以后
docker compose up -d --force-recreate重建了 new-api 容器,要补一句把网络接回去:sudo docker network connect ai-net new-api
彻底卸载(恢复原样)
cd /opt/cpa && docker compose down
sudo docker network disconnect ai-net new-api || true
sudo docker network rm ai-net
sudo rm -rf /opt/cpa
不影响 new-api / nginx / xray / 域名证书的任何东西。
常见问题
| 症状 | 原因/解法 |
|---|---|
| 面板打不开 | tunnel.bat 窗口被关了;或第②步没成功,docker ps 看 cli-proxy-api 是否 Up |
| Google 授权后跳转的 localhost 页面打不开/连接被拒 | 隧道没转发对应回调端口(重开 tunnel.bat,它含全部 6 个端口) |
/v1/models 是空的 [] |
账号没登录成功,看 /opt/cpa/auths 有没有文件,重做第③步 |
| 渠道测试 503/no available channel | 模型名没抄对:渠道里填的名字必须和 /v1/models 输出完全一致 |
| 某模型 429/403 | 配额或订阅问题:换渠道(AI Studio ↔ 反重力)试,确认 Pro 订阅生效中 |