Accept at- personal access tokens through existing AT and JSON imports, including the official personal_access_token field. Verify identity with auth whoami instead of trusting document metadata, preserve optional email, and exclude PAT credentials from OAuth refresh scheduling. Expose explicit static PAT validation errors without leaking credentials or raw upstream responses. Cover rejection, invalid identity, timeouts, redirect protection, export round trips, and unchanged JWT import behavior. Validation: OpenAI provider tests (562 passed), gateway-admin tests (100 passed), strict Clippy for both crates with all targets and features, workspace rustfmt, and diff whitespace checks passed. Upstream behavior was tested with mocks; no live PAT was used. Co-authored-by: Codex <noreply@openai.com>
将 OpenAI、xAI 账号接入同一个服务,通过网页管理账号、分配客户端密钥和查看使用情况。 客户端使用统一的访问地址与代理密钥,上游账号凭据由服务端管理。
功能
- 账号管理:OAuth 授权、账号导入、凭据刷新与额度查看。
- 访问控制:通过账号分组分配密钥权限,设置并发和请求频率。
- 客户端接入:支持 Codex CLI、桌面端与 Responses API 客户端,提供 HTTP 流式响应和 WebSocket。
- 请求诊断:查看请求记录、用量、费用、延迟和错误详情。
- 部署运维:Docker Compose 部署、S3/R2 数据库备份、同大版本在线更新与回滚。
图片生成、编辑和 Codex 独立搜索由 OpenAI 账号提供;模型与功能的可用性取决于上游账号权限。
Note
本项目提供 Responses API,不支持
/v1/chat/completions。接入前请确认客户端支持 Responses 协议。
快速开始
使用 Docker Compose 部署发布镜像 ghcr.io/zyycn/codex-proxy-rs:latest,同时启动 PostgreSQL 和 Redis。
以下命令适用于 Linux amd64/arm64,需要 Docker Engine、Docker Compose Plugin、curl 和 OpenSSL。已有部署请先看
升级说明,不要覆盖原配置。
1. 下载部署文件并配置
mkdir -p codex-proxy-rs/deploy
cd codex-proxy-rs
curl -fsSL https://raw.githubusercontent.com/zyycn/codex-proxy-rs/main/deploy/compose.yaml \
-o deploy/compose.yaml
curl -fsSL https://raw.githubusercontent.com/zyycn/codex-proxy-rs/main/deploy/config.example.yaml \
-o deploy/config.example.yaml
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
sudo chown -R "$(id -u):10001" .runtime/data .runtime/logs
chmod 0770 .runtime/data .runtime/logs
分别生成数据库和 Redis 密码:
openssl rand -hex 24
openssl rand -hex 24
编辑 deploy/config.yaml,填好以下三项:
| 配置项 | 填写内容 |
|---|---|
store.database.password |
第一个生成的 48 位十六进制密码 |
store.redis.password |
第二个生成的 48 位十六进制密码 |
admin.default_password |
管理员初始密码,至少 12 位,不能包含 $ |
不需要创建 .env。管理员初始密码只在首次创建账号时使用。
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 --wait
curl -i http://127.0.0.1:8080/healthz
健康检查返回 204 No Content 后,打开 http://127.0.0.1:8080,
使用 admin@cpr.local 和刚设置的管理员密码登录。
默认地址只能在服务器本机访问。从其他设备使用时,需要配置 HTTPS 反向代理。
3. 添加账号与客户端密钥
- 在「账号」中添加 OpenAI 或 xAI 账号,完成授权或导入。
- 按需建立账号分组,再创建客户端密钥并选择可用分组。不选分组表示可使用全部账号。
- 打开密钥的「使用密钥」,复制客户端配置。
客户端接入
Codex CLI / 桌面端:在「使用密钥」中按操作系统复制配置,或通过 CCSwitch 导入。 合并到客户端配置后重启 Codex。完整步骤、生图配置与排障见客户端配置。
其他 Responses API 客户端:填写以下信息。
| 配置 | 值 |
|---|---|
| Base URL | http://127.0.0.1:8080/v1;远程接入使用服务器的 HTTPS 地址 |
| API Key | 管理端创建的 sk_... 客户端密钥 |
可用模型以该密钥查询到的模型列表为准:
curl http://127.0.0.1:8080/v1/models \
-H 'Authorization: Bearer <client-api-key>'
文档
社区
感谢 LINUX DO 社区提供开放、友善的技术交流平台。
许可证
本项目基于 Apache License 2.0 开源。