目录
1. 范围和结论
CRS 2.0 当前对应 Sub2API 项目。官方描述为一站式开源中转服务,用于统一接入 Claude、OpenAI、Gemini、Antigravity 等订阅或账号资源,并通过平台 API Key 分发给客户端使用。
本文推荐在干净 Windows 电脑上使用 Docker Desktop + WSL2 + Docker Compose 方式部署。这样 PostgreSQL、Redis、Sub2API 都由 Docker 管理,便于迁移和备份。
2. 官方资料和许可
| 项目仓库 | https://github.com/Wei-Shaw/sub2api.git |
|---|---|
| 中文 README | https://github.com/Wei-Shaw/sub2api/blob/main/README_CN.md |
| Docker 部署说明 | https://github.com/Wei-Shaw/sub2api/blob/main/deploy/README.md |
| 许可证 | LGPL-3.0-or-later。可自用和二次开发;如果分发修改版,需要遵守 LGPL 的源码、版权和许可证义务。 |
| 默认端口 | 官方 Docker 部署默认 Web 端口为 8080,可通过 SERVER_PORT 修改。 |
3. Claude / GPT 账号注册和最高档订阅
CRS 2.0 的价值依赖可用的上游账号或 API Key。账号订阅必须由账号负责人本人完成,并保存好恢复邮箱、支付方式、2FA 和账单信息。
3.1 Claude 账号和最高档
- 打开 https://claude.ai/。
- 使用邮箱、Google 或 Apple 方式注册 / 登录 Claude 账号。
- 完成手机号、地区、支付方式等平台要求的验证。
- 进入 Claude 的 Settings / Plan / Upgrade 页面。
- 个人账号建议订阅当前可用最高个人档:
Claude Max 20x。Claude 官方定价页显示 Max 从 100 USD/月起,可选择 5x 或 20x more usage than Pro;如果是团队采购,可评估 Team Premium 或 Enterprise。 - 开启 2FA,记录账单邮箱和恢复方式。不要把 Claude 明文密码写入部署报告。
官方价格页:https://claude.com/pricing
3.2 ChatGPT / OpenAI 账号和最高档
- 打开 https://chatgpt.com/ 或 OpenAI ChatGPT Pricing。
- 使用邮箱、Google、Microsoft 或 Apple 方式注册 / 登录。
- 完成手机号、地区、支付方式等平台要求的验证。
- 进入 Settings → My Plan 或 Pricing 页面升级。
- 个人账号建议订阅当前可用最高个人档:
ChatGPT Pro $200/月。OpenAI 帮助中心说明 Pro $200 是最高使用量档,Pro $100 是较低使用量档。 - 开启 2FA,记录账单邮箱和恢复方式。不要把 ChatGPT 明文密码写入部署报告。
官方价格页:https://openai.com/chatgpt/pricing;Pro 档说明:https://help.openai.com/en/articles/9793128-about-chatgpt-pro-plans
3.3 可选:Gemini / Google AI 账号
如果后续要接入 Gemini,使用个人 Google 账号进入 https://gemini.google/ 或订阅页。个人最高档通常看 Google AI Ultra;不同国家/地区可用性、价格和模型权益会变化,以 Google 官方订阅页为准。
官方订阅页:https://gemini.google/us/subscriptions/
4. 干净 Windows 必备软件
目标系统建议 Windows 11 Pro/Enterprise,Windows 10 也可,但必须支持 WSL2 和 Docker Desktop。
| 软件 | 用途 | 要求 |
|---|---|---|
| Windows Terminal | 统一运行 PowerShell / WSL | 推荐 |
| PowerShell 7 或系统 PowerShell | 执行部署命令 | 必需 |
| WSL2 + Ubuntu | 运行官方 bash 部署脚本 | 推荐必装 |
| Docker Desktop | 运行 Sub2API、PostgreSQL、Redis 容器 | 必需,启用 WSL2 backend |
| Node.js LTS / npm | 安装 Codex CLI、OpenCode CLI 和常用前端工具 | 必需 |
| Git for Windows | 拉取仓库和辅助命令 | 必需 |
| Codex 桌面版 | 可视化选择项目、登录账号、让 Codex 协作处理本地任务 | 推荐 |
| Codex CLI | 在 PowerShell / Windows Terminal 里运行 Codex 代码代理 | 推荐,npm 安装 |
| OpenCode CLI/TUI | 终端里的开源 AI 编程代理,可连接不同模型供应商 | 推荐 |
| VS Code | 编辑 .env、Compose 文件和报告 | 推荐 |
| Chrome / Edge | 访问 Sub2API 管理后台和上游账号 | 必需 |
| 7-Zip | 解压或备份部署目录 | 推荐 |
4.1 安装 WSL2 和 Ubuntu
wsl --install -d Ubuntu
wsl --set-default-version 2
wsl -l -v
第一次打开 Ubuntu 时创建 Linux 用户。后续官方脚本在 Ubuntu 终端中执行。
4.2 安装 Docker Desktop
- 从 Docker 官网安装 Docker Desktop。
- 设置中确认启用 Use the WSL 2 based engine。
- 在 Resources → WSL Integration 中启用 Ubuntu。
- 重启 Docker Desktop,执行验证:
docker version
docker compose version
4.3 安装 Node.js、Codex 和 OpenCode
- 从 Node.js 官网安装 LTS 版本。安装完成后关闭并重新打开 Windows Terminal。
- 验证 Node 和 npm:
node -v
npm -v
- 安装 Codex 桌面版:从 OpenAI Codex App 官方页面下载 Windows 版本,打开后登录 ChatGPT 账号或 API Key,并选择项目目录。
- 安装 Codex CLI:
npm install -g @openai/codex
codex
- 安装 OpenCode:打开 OpenCode 官网,选择 Windows 可用的 CLI/TUI 安装方式;如果当前官网提供 npm 安装命令,就按官网命令安装。
- 验证 OpenCode:
opencode --version
opencode
5. 部署前需要的凭证
| 凭证 | 用途 | 来源 |
|---|---|---|
| Sub2API 管理员邮箱/密码 | 首次登录后台 | 部署人创建或管理员提供 |
| Claude 账号 / OAuth / Cookie / Token | 添加 Claude 上游账号 | Claude 账号负责人 |
| ChatGPT / OpenAI 账号或 API Key | 添加 OpenAI / Codex 上游账号 | OpenAI 账号负责人 |
| Gemini / Google 账号或 API Key | 可选,添加 Gemini 上游账号 | Google 账号负责人 |
| 域名和 HTTPS 证书权限 | 公网访问或反向代理 | 域名/服务器管理员 |
| 服务器或局域网端口权限 | 放行 8080 或反向代理端口 | 网络管理员 |
6. 目录和端口规划
后续所有 Windows 电脑统一使用 C 盘。
| 项目 | 路径 / 端口 |
|---|---|
| 部署根目录 | C:\Projects\CRS2 |
| Sub2API 部署目录 | C:\Projects\CRS2\sub2api-deploy |
| Docker 数据目录 | C:\Projects\CRS2\sub2api-deploy\data、postgres_data、redis_data |
| 交付报告 | C:\Projects\CRS2\crs2-deployment-report.html |
| Sub2API Web / API | http://127.0.0.1:8080 |
| PostgreSQL | 容器内部使用,默认不对外开放 |
| Redis | 容器内部使用,默认不对外开放 |
如 8080 被占用,修改 .env 中 SERVER_PORT,例如改成 18088。
6.1 韩国服务器 frp 端口规划
如果 CRS2 要给韩国/首尔服务器上的 NewAPI 调用,建议不要复用现有 CLIProxyAPI 的 18080,避免端口冲突。本文建议 CRS2 使用新的远端端口:
| 用途 | 端口 / 地址 |
|---|---|
| 本机 CRS2 | 127.0.0.1:8080 |
| 韩国服务器 frps 控制端口 | 150.109.233.152:7000 |
| 韩国服务器 CRS2 映射端口 | 150.109.233.152:18081 |
| NewAPI 容器内调用 CRS2 | http://172.17.0.1:18081/v1 |
| 韩国服务器宿主机调用 CRS2 | http://127.0.0.1:18081/v1 |
18081 已被占用,先让服务器管理员分配新端口。不要直接覆盖现有 18080,它可能已经给 CLIProxyAPI 使用。7. Docker Compose 部署
官方推荐 Docker Compose 部署,包含 PostgreSQL 和 Redis。Windows 上推荐在 WSL Ubuntu 中执行官方 bash 脚本,但部署目录放在 C 盘,便于备份。
7.1 创建目录
在 PowerShell 中执行:
mkdir C:\Projects\CRS2
mkdir C:\Projects\CRS2\sub2api-deploy
7.2 在 WSL 中进入目录
wsl
cd /mnt/c/Projects/CRS2/sub2api-deploy
7.3 执行官方 Docker 部署准备脚本
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash
脚本会下载 docker-compose.yml 和 .env.example,生成 .env,并自动生成 POSTGRES_PASSWORD、JWT_SECRET、TOTP_ENCRYPTION_KEY 等安全凭证。
7.4 检查和修改 .env
code .env
至少确认这些配置:
SERVER_PORT=8080
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=<strong-password>
POSTGRES_PASSWORD=<generated-or-custom>
JWT_SECRET=<generated>
TOTP_ENCRYPTION_KEY=<generated>
TZ=Asia/Shanghai
如果不手动设置 ADMIN_PASSWORD,需要在启动日志中查找自动生成的 admin password。
7.5 启动服务
docker compose up -d
docker compose ps
docker compose logs -f sub2api
7.6 查找自动生成的管理员密码
docker compose logs sub2api | grep "admin password"
如果 PowerShell 里没有 grep,用:
docker compose logs sub2api | findstr /i "admin password"
8. 韩国服务器 frp 转发
如果 CRS2 只在本机使用,可以跳过本节。如果韩国/首尔服务器上的 NewAPI 需要调用这台 Windows 电脑上的 CRS2,就需要配置 frp:本机运行 frpc,韩国服务器运行 frps。
8.1 frp 架构
NewAPI(韩国/首尔服务器 Docker 容器)
|
| http://172.17.0.1:18081/v1
v
韩国/首尔服务器 frps :18081
|
| frp tcp tunnel,控制端口 :7000
v
Windows frpc
|
| http://127.0.0.1:8080
v
CRS2 / Sub2API
8.2 需要向管理员确认
- 韩国服务器公网 IP:当前示例为
150.109.233.152。 - frps 控制端口:当前示例为
7000。 - frp token:必须和服务器
/opt/frp/frps.toml一致。 - CRS2 远端映射端口:本文建议
18081。 - 云厂商安全组:需要放行 TCP
7000;如果 NewAPI 只在服务器本机使用,18081可只允许本机/内网访问,避免公网长期暴露。
8.3 下载 frp Windows 客户端
建议和服务器 frps 使用相同或兼容版本。示例使用 0.68.1:
mkdir C:\Projects\claude-workspace
cd C:\Projects\claude-workspace
Invoke-WebRequest `
-Uri "https://github.com/fatedier/frp/releases/download/v0.68.1/frp_0.68.1_windows_amd64.zip" `
-OutFile ".\frp_0.68.1_windows_amd64.zip"
Expand-Archive ".\frp_0.68.1_windows_amd64.zip" -DestinationPath "." -Force
dir .\frp_0.68.1_windows_amd64\frpc.exe
frpc.exe。确认来源为 frp 官方 GitHub release 后,只把 C:\Projects\claude-workspace\frp_0.68.1_windows_amd64 加入排除项,不要排除整个 C:\Projects 或系统盘。8.4 创建 CRS2 专用 frpc 目录
mkdir C:\Projects\CRS2\frp-seoul-crs2
C:\Projects\CRS2\frp-seoul-crs2\frpc.toml 模板:
serverAddr = "150.109.233.152"
serverPort = 7000
loginFailExit = false
auth.method = "token"
auth.token = "<frp-token>"
[[proxies]]
name = "crs2_8080"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 18081
C:\Projects\CRS2\frp-seoul-crs2\run-frpc-crs2.ps1 内容:
$ErrorActionPreference = 'Continue'
$frpc = 'C:\Projects\claude-workspace\frp_0.68.1_windows_amd64\frpc.exe'
$cfg = 'C:\Projects\CRS2\frp-seoul-crs2\frpc.toml'
$wd = 'C:\Projects\CRS2\frp-seoul-crs2'
$log = Join-Path $wd 'frpc.log'
$err = Join-Path $wd 'frpc.err.log'
& $frpc -c $cfg >> $log 2>> $err
C:\Projects\CRS2\frp-seoul-crs2\start-frpc-crs2-hidden.vbs 内容:
Set shell = CreateObject("WScript.Shell")
shell.Run "powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File ""C:\Projects\CRS2\frp-seoul-crs2\run-frpc-crs2.ps1""", 0, False
8.5 启动和验证 frpc
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Projects\CRS2\frp-seoul-crs2\run-frpc-crs2.ps1"
Get-CimInstance Win32_Process |
Where-Object { $_.Name -eq 'frpc.exe' -and $_.CommandLine -like '*frp-seoul-crs2*' }
Get-Content "C:\Projects\CRS2\frp-seoul-crs2\frpc.log" -Tail 80
Get-Content "C:\Projects\CRS2\frp-seoul-crs2\frpc.err.log" -Tail 80
8.6 韩国服务器验证
服务器管理员在韩国/首尔服务器上执行:
sudo systemctl status frps
ss -ltnp | grep -E ':(7000|18081)'
curl -i http://127.0.0.1:18081/
curl -i http://127.0.0.1:18081/v1/models
如果只看到 7000,没有 18081,说明 frps 已启动但 Windows frpc 没有成功注册。回到 Windows 检查 frpc.exe 进程、日志和 Defender 隔离记录。
8.7 Windows 开机自启
把 start-frpc-crs2-hidden.vbs 的快捷方式放入当前用户启动目录:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
部署报告里必须写明是否已配置开机自启,以及重启 Windows 后是否验证过。
9. 初始化和后台配置
- 浏览器打开
http://127.0.0.1:8080。 - 使用
ADMIN_EMAIL和ADMIN_PASSWORD登录。 - 立即修改默认管理员密码,开启 2FA。
- 进入账号 / 上游 / Provider 管理页面,按后台 UI 添加 Claude、OpenAI、Gemini 等账号。
- 进入 API Key 管理,创建给客户端或 NewAPI 使用的 API Key。
- 进入模型 / 路由 / 额度相关页面,配置账号池、模型可见性、额度策略和用量计费。
8.1 添加 Claude 账号
按后台 UI 支持的方式添加 Claude 账号。不同版本可能支持 OAuth、订阅账号、Cookie、Token 或 API Key 方式。执行人必须在交付报告里写清楚实际采用了哪一种方式,但敏感值打码。
8.2 添加 ChatGPT / OpenAI 账号
按后台 UI 支持的方式添加 OpenAI / ChatGPT / Codex 账号或 API Key。ChatGPT 订阅账号和 OpenAI API Key 是不同体系,后台如何接入以实际版本 UI 为准。
8.3 生成客户端 API Key
给客户端或 NewAPI 的调用方只发 Sub2API 生成的 API Key,不要发上游 Claude / ChatGPT 的账号密码。
10. 客户端 / NewAPI 对接
默认本机访问地址:
http://127.0.0.1:8080
如果 NewAPI 或其他客户端在同一台 Windows 电脑上,Base URL 可填写 Sub2API 提供的 OpenAI-compatible API 地址。具体路径以后台和当前版本 API 文档为准,常见形式是:
http://127.0.0.1:8080/v1
鉴权使用 Sub2API 后台生成的 API Key,例如:
Authorization: Bearer <sub2api-client-api-key>
10.1 韩国服务器 NewAPI 配置
如果 NewAPI 运行在韩国/首尔服务器 Docker 容器里,渠道 Base URL 填:
http://172.17.0.1:18081/v1
如果 NewAPI 直接运行在韩国/首尔服务器宿主机上,渠道 Base URL 填:
http://127.0.0.1:18081/v1
说明:Docker 容器里的 127.0.0.1 指向容器自身,不是服务器宿主机。因此 NewAPI 在 Docker 内时通常要使用宿主机 Docker 网关地址 172.17.0.1。
10.2 NewAPI 渠道建议
| 配置项 | 建议值 |
|---|---|
| 渠道类型 | OpenAI-compatible / OpenAI 兼容 |
| Base URL(NewAPI Docker 内) | http://172.17.0.1:18081/v1 |
| Base URL(宿主机) | http://127.0.0.1:18081/v1 |
| API Key | Sub2API 后台生成的客户端 API Key,格式按后台实际生成结果填写。 |
| 模型 | 先用 Sub2API 后台或 /v1/models 查到的模型名,不要凭记忆乱填。 |
| 测试 | 先测试 /v1/models,再测试一次 chat/completions。 |
10.3 NewAPI 连通性测试
在韩国/首尔服务器宿主机上:
curl -i http://127.0.0.1:18081/v1/models \
-H "Authorization: Bearer <sub2api-client-api-key>"
在 NewAPI Docker 容器内:
curl -i http://172.17.0.1:18081/v1/models \
-H "Authorization: Bearer <sub2api-client-api-key>"
11. 验证和排障
11.1 基础验证
cd /mnt/c/Projects/CRS2/sub2api-deploy
docker compose ps
docker compose logs --tail 100 sub2api
curl -I http://127.0.0.1:8080
Windows PowerShell 验证:
curl.exe -I http://127.0.0.1:8080
netstat -ano | findstr :8080
11.2 常见问题
| 现象 | 处理 |
|---|---|
| 8080 无法访问 | 检查 Docker Desktop 是否运行、容器是否启动、SERVER_PORT 是否被占用。 |
| sub2api 容器反复重启 | 查看 docker compose logs sub2api,重点检查数据库、Redis、环境变量。 |
| 管理员密码不知道 | 查日志中的 admin password,或停止服务后按官方方式重置。 |
| 账号接入失败 | 确认上游账号订阅有效、地区/风控/2FA 状态正常,按后台错误日志处理。 |
| NewAPI 调不通 | 确认 Base URL、API Key、模型名、路由配置和防火墙。 |
12. 安全和合规
- 不要把上游账号密码、Cookie、OAuth Token、API Key 写入 Git、HTML 报告或群聊。
- 只给客户端分发 Sub2API 生成的 API Key,不分发上游账号凭证。
- 管理员账号必须使用强密码并开启 2FA。
- 如果对外暴露,必须使用 HTTPS 和反向代理,并限制管理后台访问来源。
- 如果使用 Nginx 反代且配合 Codex CLI,官方提示需要在 Nginx
http块启用underscores_in_headers on;,避免带下划线的请求头被丢弃。 - 定期备份
C:\Projects\CRS2\sub2api-deploy整个目录。 - 删除或迁移前先
docker compose down,不要直接删除运行中的数据目录。
13. 部署完成交付 HTML
部署完成后,必须输出:
C:\Projects\CRS2\crs2-deployment-report.html
报告至少包含:
- 实际部署过程:安装了哪些软件、执行了哪些命令。
- 实际目录:部署目录、数据目录、Compose 文件、
.env。 - 端口配置:
SERVER_PORT、Web UI、API Base URL、是否做反向代理。 - 账号情况:Claude / ChatGPT / Gemini 是否已注册、订阅档位、是否已接入后台。敏感值打码。
- 关键配置:
POSTGRES_PASSWORD、JWT_SECRET、TOTP_ENCRYPTION_KEY只写“已生成/已备份”,不写明文。 - 验证结果:容器状态、Web UI 访问、API Key 调用、NewAPI 或客户端测试。
- 残留问题:缺少凭证、未完成订阅、未完成 OAuth、端口未开放、HTTPS 未配置、上游账号风控、服务条款风险。
14. 参考命令
日常维护
cd /mnt/c/Projects/CRS2/sub2api-deploy
docker compose ps
docker compose logs -f sub2api
docker compose restart sub2api
docker compose pull
docker compose up -d
备份
cd /mnt/c/Projects/CRS2
tar czf sub2api-deploy-backup-$(date +%Y%m%d-%H%M%S).tar.gz sub2api-deploy/
停止
cd /mnt/c/Projects/CRS2/sub2api-deploy
docker compose down
参考资料
- Sub2API README_CN:https://github.com/Wei-Shaw/sub2api/blob/main/README_CN.md
- Sub2API Docker 部署:https://github.com/Wei-Shaw/sub2api/blob/main/deploy/README.md
- Claude Pricing:https://claude.com/pricing
- ChatGPT Pricing:https://openai.com/chatgpt/pricing
- ChatGPT Pro tiers:https://help.openai.com/en/articles/9793128-about-chatgpt-pro-plans
- Google Gemini Subscriptions:https://gemini.google/us/subscriptions/
文档生成时间:2026-05-13。账号计划、价格、模型权益和项目部署方式可能变化,执行前以官方页面和当前仓库 README 为准。