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

135 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
```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):
```bash
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 检查模型名。