Files
Obsidian/工具相关/CPA部署全流程.md
T
2026-11-05 14:35:04 +08:00

5.2 KiB
Raw Blame History

CPA(CLIProxyAPI)部署全流程

把 Google AI Pro 订阅转成 API,给 Codex / Claude Code 用。 实测时间:2026-11-05,VPS:腾讯云新加坡 Ubuntu 24.04(43.156.118.130)。

最终链路:

  • 直连:Codex → localhost:8317(SSH 隧道)→ CPA → Google
  • 经 NewAPI:Codex → https://api.trivoo.website → NewAPI → CPA → Google

一、前置条件

  1. VPS 上已有 Docker、NewAPI(new-api 容器在跑)
  2. Google AI Pro 订阅有效
  3. 本地有 deploy-cpa.sh 和 tunnel.bat(放同一目录,如 F:\AI\docker\cpa-deploy\)

二、部署 CPA

1. 开隧道

双击 tunnel.bat,输入 VPS 的 ubuntu 用户密码(输入时不显示字符,输完回车)。 "没反应"是正常的——隧道建好就是静默挂着。窗口保持开着。

2. 跑部署脚本

新开 PowerShell:

(Get-Content F:\AI\docker\cpa-deploy\deploy-cpa.sh) -join "`n" | ssh ubuntu@43.156.118.130 "sudo bash -s"

3. 检查输出

  • cli-proxy-api | Up,6 个端口全绑 127.0.0.1(8317/8085/1455/54545/51121/11451)
  • 无 key → HTTP 401,有 key → HTTP 200
  • 输出两把钥匙,收好(也在服务器 /opt/cpa/KEYS.txt):
    • MGMT_KEY:进管理面板用
    • CPA_API_KEY(sk-cpa- 开头):给 NewAPI 渠道 / 直连用

三、面板登录排障(必看,有坑)

浏览器开 http://localhost:8317/management.html(隧道必须开着),输 MGMT_KEY。

坑 1:403 "remote management disabled"

原因是部署脚本生成的 config.yaml 里 management.allow-remote: false 把管理 API 整个关了。 修复(SSH 到服务器,root):

sed -i 's/allow-remote: false/allow-remote: true/' /opt/cpa/config.yaml
cd /opt/cpa && docker compose restart

安全性:端口本来就只绑了 127.0.0.1(docker ps 可验证),公网连不进来,改成 true 也只有隧道能进。

坑 2:别用 grep -v 'key' 看配置

配置里的 secret-key 存的是 bcrypt 哈希,grep -v 'key' 会把它过滤掉,让你误以为没配。看完整配置直接 cat。

坑 3:不要手动往配置里加明文 secret-key

CPA 启动时会自动把明文哈希后写回,手动加会导致 mapping key "secret-key" already defined 重复键,容器起不来(restart 循环)。


四、OAuth 登录(Antigravity)

  1. 面板左侧 OAuth 登录
  2. 找到 Antigravity,点 +,弹窗里点 打开链接
  3. Google 授权页选 Pro 账号 → 允许
  4. 跳回 localhost:1455 显示 Authentication successful! 即成功
  5. 面板 认证文件 页能看到 Antigravity 凭证

五、Codex 直连 CPA(同事的野路子,最快)

ccswitch → Codex 供应商 → 新建:

  • 名称:cpa.gemini
  • API 请求地址:http://localhost:8317/v1
  • API Key:CPA_API_KEY
  • 模型列表:点"获取模型列表",选 gemini-3-flash / gemini-3.8-flash-high 等真名

前提:tunnel.bat 一直开着。

排障

  • Codex 报 404 (no body):模型名不对。浏览器开 http://localhost:8317/v1/models,返回 {"error":"Missing API key"} 说明端点正常,只是缺 key;然后去 ccswitch 里重新拉模型列表。
  • 429 Too Many Requests:Google 限流,等几分钟再试,别连续刷。

六、走 NewAPI(公网,不用开隧道)

1. NewAPI 建渠道

渠道 → 添加渠道 → 选 OpenAI 类型(Codex 说 OpenAI 协议):

  • 名称:CPA-Gemini-OpenAI
  • API 地址:http://cli-proxy-api:8317(不要加 /v1,页面有提示)
  • API 密钥:CPA_API_KEY
  • 模型:从上游获取,会拉到 8 个(2 个 Claude + 5 个 Gemini 真名 + 1 个 OpenAI),勾选 5 个 Gemini
  • 分组 default,启用,创建 → 测试

注意:Anthropic 类型的渠道拉到的是混淆过的 Claude 壳名字(claude-fable-5-dd-...),OpenAI 类型拉到的是 Gemini 真名。给 Codex 用选 OpenAI 类型。

2. ccswitch 加供应商

  • 名称:newapi-gemini
  • API 请求地址:https://api.trivoo.website/v1
  • API Key:你的 NewAPI token(sk- 开头,之前配 DeepSeek 用的那个)
  • 模型:获取列表,选 gemini 模型

3. 验证

NewAPI → 使用日志,能看到成功的调用记录(模型、Token、耗时)即跑通。


七、两条路怎么选

直连 CPA 经 NewAPI
地址 localhost:8317/v1 api.trivoo.website/v1
隧道 必须一直开 不用
延迟 少一跳 多一跳
管理 无 NewAPI 统一看日志/计费

不冲突,可并存,ccswitch 里切换供应商就行。


八、跟 Claude Code 的关系

本流程是给 Codex 用的(OpenAI 协议)。如果也要给 Claude Code 用:

  • NewAPI 里再建一个 Anthropic 类型渠道,API 地址 http://cli-proxy-api:8317(不加 /v1),模型从上游拉(会是 Claude 壳名字,全选)
  • ccswitch 里 Claude Code 供应商指向 https://api.trivoo.website

九、一句话总结

部署(隧道+脚本)→ 面板 allow-remote: true → OAuth 登录 Antigravity → Codex 直连 localhost:8317/v1 或经 NewAPI(OpenAI 类型渠道)。429 等几分钟,404 检查模型名。