5.2 KiB
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
一、前置条件
- VPS 上已有 Docker、NewAPI(
new-api容器在跑) - Google AI Pro 订阅有效
- 本地有
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)
- 面板左侧 OAuth 登录
- 找到 Antigravity,点
+,弹窗里点 打开链接 - Google 授权页选 Pro 账号 → 允许
- 跳回
localhost:1455显示 Authentication successful! 即成功 - 面板 认证文件 页能看到 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 检查模型名。