Files
test/cpa-deploy/01-部署操作手册.md
T
2026-11-05 14:10:48 +08:00

7.6 KiB
Raw Blame History

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 容器 → 自检 → 打印两把钥匙。

✅ 检查点(看输出):

  1. cli-proxy-api | Up ... 且端口全是 127.0.0.1:xxxx->xxxx(只有回环,公网摸不到)
  2. no key (expect 401) → HTTP 401;with key (expect 200) → HTTP 200
  3. 末尾打印 MGMT_KEY 和 CPA_API_KEY(sk-cpa- 开头)——复制存好,忘了随时在服务器上 sudo cat /opt/cpa/KEYS.txt

③ OAuth 登录 Google 账号(本地浏览器)

  1. 确认 ① 的隧道窗口开着,浏览器访问 http://localhost:8317/management.html (首次访问 CPA 会自动从 GitHub 下载面板,转几秒到十几秒属正常)
  2. 连接信息:服务地址填 http://localhost:8317,管理密钥填 MGMT_KEY
  3. 在面板里找「凭证 / Auth 管理」类的登录入口,选你要挂的渠道:
    • Antigravity(反重力):Google AI Pro 订阅的主战场——Gemini 模型 + Claude Sonnet/Opus (thinking) 都从这里出
    • AI Studio / Gemini:Gemini 模型的另一条渠道
  4. 点登录 → 弹出 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               # 看已登录的账号凭证

两个注意:

  1. 只有第③步(OAuth 登录)和用管理面板时才需要开隧道,平时 CPA 自己在服务器上跑,不需要 tunnel.bat
  2. 如果你以后 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 订阅生效中