Use deploy/config.yaml as the structured source for application settings and service credentials, with strict validation and runtime-relative paths. Consolidate Compose assets under deploy, remove obsolete environment and smoke files, keep terminal logs readable while retaining JSON file output, and refresh the Codex Desktop fingerprint. Co-authored-by: Codex <noreply@openai.com>
Note
当前兼容 OpenAI Responses API,不提供
/v1/chat/completions。
功能
- 支持 Responses HTTP、SSE 和官方 WebSocket 请求。
- 提供智能调度、额度重置优先、轮询和粘滞四种账号策略。
- 某个账号遇到额度、认证、模型或传输错误时,继续尝试其他账号。
- 在网页中管理账号、客户端 Key、模型别名和运行参数。
- 按请求、模型、账号或客户端 Key 查看 Token、费用、缓存、TTFT、延迟和错误。
- 支持账号 OAuth、Token 导入以及 CPR、Sub2API、CLIProxyAPI JSON 导入。
- 可直接生成 Codex CLI 配置,或通过 deeplink 导入 CCSwitch。
快速开始
Docker Compose 是最简单的启动方式。开始前请安装 Docker Engine 和 Docker Compose Plugin。
1. 准备配置
git clone https://github.com/zyycn/codex-proxy-rs.git
cd codex-proxy-rs
mkdir -p .runtime/data .runtime/logs
install -d -m 0750 .runtime/postgres .runtime/redis
cp deploy/config.example.yaml deploy/config.yaml
sudo chown "$(id -u):10001" deploy/config.yaml
chmod 0640 deploy/config.yaml
分别执行三次以下命令生成密码:
openssl rand -hex 24
把结果填入 deploy/config.yaml 的 database.password、redis.password 和
admin.default_password。PostgreSQL 与 Redis 密码必须是 48 位十六进制字符;管理员密码
至少 12 位且不能包含 $。
Important
应用容器以非 root 用户
10001:10001运行。Linux Bind Mount 会保留宿主机权限,因此需要允许容器用户组读取配置并写入数据和日志目录:sudo chown -R "$(id -u):10001" .runtime/data .runtime/logs chmod 0770 .runtime/data .runtime/logs配置文件通过 Compose
configs只读挂载;普通 Compose 会保留宿主机权限,因此由 当前用户持有、仅向容器组开放读取权限。 macOS 和 Windows 的 Docker Desktop 通常也不需要调整数据目录权限。
2. 启动服务
docker compose -f deploy/compose.yaml config --quiet
docker compose -f deploy/compose.yaml pull
docker compose -f deploy/compose.yaml up -d --no-build
启动后检查:
docker compose -f deploy/compose.yaml ps
curl -i http://127.0.0.1:8080/healthz
/healthz 返回 204 No Content 即表示服务正常。管理端地址为 http://127.0.0.1:8080。
首次使用
- 使用
admin@cpr.local和x-cpr.admin.default_password中设置的密码登录。 - 打开“账号”,用 OAuth、Access/Refresh Token 或 JSON 文件添加账号。
- 点一次连接测试,能看到模型和额度即可。
- 打开“API 密钥”,创建一个
sk_...客户端 Key。 - 点击“使用密钥”复制 Codex CLI 配置,或一键导入 CCSwitch。
Tip
admin.default_password只用于首次创建管理员。已有管理员后修改该字段不会重置登录密码。
客户端接入
| 配置 | 值 |
|---|---|
| Base URL | http://127.0.0.1:8080/v1 |
| API Key | 管理端创建的 sk_... 客户端 Key |
| 鉴权 | Authorization: Bearer <client-api-key> |
先查询当前可用模型:
curl http://127.0.0.1:8080/v1/models \
-H 'Authorization: Bearer <client-api-key>'
发送一个非流式 Responses 请求:
curl http://127.0.0.1:8080/v1/responses \
-H 'Authorization: Bearer <client-api-key>' \
-H 'Content-Type: application/json' \
-d '{
"model": "<model-id>",
"input": "Reply with pong.",
"stream": false
}'
查看全部客户端 API 路由
| 路由 | 说明 |
|---|---|
POST /v1/responses |
Responses 非流式或 SSE 流式请求 |
GET /v1/responses |
官方 Responses WebSocket |
POST /v1/responses/review |
Review 请求 |
GET /v1/models |
OpenAI 格式的模型列表 |
GET /v1/models/catalog |
完整模型目录 |
GET /v1/models/{model_id} |
模型详情 |
GET /v1/models/{model_id}/info |
模型运行信息 |
所有 /v1/* 路由都需要客户端 API Key。
管理端
| 页面 | 内容 |
|---|---|
| 概览 | 查看服务状态、请求趋势、Token、账号池容量、请求健康和最近调用 |
| 账号 | 添加、导入、导出、测试、启停账号,以及刷新 Token 和额度 |
| API 密钥 | 创建、复制、启停或删除 Key,生成 Codex CLI 配置并导入 CCSwitch |
| 使用统计 | 按时间、模型、账号和客户端 Key 查看用量、费用、缓存、延迟和错误 |
| 系统设置 | 配置模型别名、调度策略、单账号并发、请求间隔、刷新参数和管理员 API Key |
| 系统更新 | 查看版本和发布说明;Release 版本可以在线更新并重启 |
常用操作
升级
docker compose -f deploy/compose.yaml pull codex-proxy-rs
docker compose -f deploy/compose.yaml up -d --no-build
查看日志
docker compose -f deploy/compose.yaml logs -f codex-proxy-rs
从当前源码构建
docker compose -f deploy/compose.yaml build codex-proxy-rs
docker compose -f deploy/compose.yaml up -d
Warning
PostgreSQL、Redis、应用数据和文件日志都保存在仓库根目录
.runtime/。普通docker compose down不会删除这些绑定目录;删除.runtime/才会清除数据。升级前请备份 整个目录,数据库备份中包含客户端凭据,应按敏感数据保管。
常见问题
/healthz 返回 503
检查 PostgreSQL 和 Redis 容器是否健康:
docker compose -f deploy/compose.yaml ps
docker compose -f deploy/compose.yaml logs postgres redis
容器反复重启
检查 deploy/config.yaml 的三个密码是否填写完整,以及 .runtime/data、.runtime/logs
的权限是否正确。
需要从其他设备访问
Compose 默认仅绑定 127.0.0.1。请在服务前配置 HTTPS 反向代理,并正确转发 WebSocket 升级和真实客户端 IP 请求头。不要直接暴露 PostgreSQL 或 Redis。
相关链接
Docker 镜像支持 Linux amd64/arm64。Release 压缩包另有 macOS arm64 和 Windows amd64 版本。
开源许可
Codex Proxy RS 基于 MIT License 开源。