135 lines
5.2 KiB
Markdown
135 lines
5.2 KiB
Markdown
# 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 检查模型名。
|