新闻详情

新闻详情

首页 / 资讯中心 / 详情

Sub2API 部署与 Codex 接入:用 Docker Compose 打通 API Token 配置链路

发布时间:2026/9/26 3:48:05来源:尧图网络
Sub2API 部署与 Codex 接入:用 Docker Compose 打通 API Token 配置链路
1. 为什么我要把 Sub2API 和 Codex CLI 串起来如果你正在用 Codex CLI 写代码大概率遇到过这种尴尬每台机器都要单独配一遍 API Token团队里谁换了 Key 就得挨个通知本地调试和服务器跑批用的还是两套凭证。Sub2API 这个自托管项目解决的就是这个问题——它把上游的 OpenAI/Codex 账号统一收口对外只暴露一个网关地址和一组 API TokenCodex CLI 只要把base_url指过来就能用。Sub2API 本质上是一个 API Token 管理与调度服务跑在 Docker 里自带 PostgreSQL 和 Redis支持分组、账号池、余额和并发控制。它适合需要在本地或服务器统一管理 API Token 的开发者尤其是手里有多个 Codex 账号、想让 Codex CLI 走统一入口的场景。这篇就按我实际部署的链路走一遍Docker Compose 起服务、后台建分组和账号、签发 Token、改~/.codex/config.toml、最后用curl和codex双重验证。中间踩过的坑比如 503 账号调度失败、请求打到根路径返回 HTML都会单独拎出来讲。整个链路的核心检索词就三个Sub2API 负责托管Docker Compose 负责部署Codex CLI 负责消费。把这三段打通你就有了一套可迁移、可备份、可团队共用的 Token 配置链路。2. 部署前的环境准备与 TaoToken 前置说明先说环境。Sub2API 官方推荐 Linux 服务器加 Docker Compose 部署我实测下来 Ubuntu 22.04 和 Debian 12 都没问题。硬性要求是 Docker 20.10、Docker Compose v2或者旧版独立的docker-compose命令并且开放 TCP 端口 8080。如果你打算公网访问记得在安全组里放行同时后面会讲怎么加反向代理。docker --version docker compose version两条命令能正常输出版本号就行。如果只有旧版 Compose把后面所有docker compose换成docker-compose即可逻辑完全一样。关于上游账号来源这里有个容易混淆的点。Sub2API 自己不管上游凭证它需要你提供一个可用的 OpenAI/Codex 账号做 OAuth 授权。如果你希望统一管理多家模型的 Token、又不想在每台机器上散落配置可以先用 TaoToken 这类平台把 Key 集中管起来再决定哪些走 Sub2API 调度。TaoToken 的模型对话入口适合先验证模型连通性控制台用来管理 API Keys接入文档里有完整的鉴权说明。它的 API 地址是https://taotoken.net/api官网在https://taotoken.net/。这一步不是必须的但如果你后面要接多个上游提前把 Key 管好会省很多事。注意Sub2API 的部署目录建议固定比如/opt/sub2api因为它的数据持久化、备份和迁移都围绕这个目录展开。换目录会导致 Compose 找不到卷。3. 用 Docker Compose 起 Sub2API 服务官方提供了一键部署脚本它会自动下载 Compose 配置、创建.env、生成 PostgreSQL 密码、JWT 密钥和 TOTP 加密密钥还会建好数据持久化目录。我建议直接用脚本省得手写一堆密钥。mkdir -p /opt/sub2api cd /opt/sub2api curl -sSL \ https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh \ | bash脚本跑完后目录里会有docker-compose.yml和.env。启动服务docker compose up -d旧版 Compose 用docker-compose up -d。启动后检查容器docker ps正常情况下你会看到三个容器sub2api、sub2api-redis、sub2api-postgres。如果只看到一两个多半是镜像没拉全或者端口冲突先看日志docker logs -f --tail200 sub2api健康检查用这个curl http://127.0.0.1:8080/health返回正常状态就说明服务起来了。浏览器访问http://服务器IP:8080进管理后台。如果管理员密码是自动生成的从日志里捞docker logs sub2api 21 | grep -i admin password这里有个细节.env里存着数据库密码和 JWT 密钥千万别提交到公开仓库。我习惯部署完立刻把.env备份到密码管理器然后给目录设权限chmod 600 .env。4. 后台配置分组、账号与 API Token 的对应关系后台配置是整条链路最容易出错的地方核心就一句话API Key 所属分组必须和上游账号所属分组一致。三者关系是分组串起来的账号进分组Key 也进同一个分组调度时才能匹配上。4.1 创建分组进管理后台 → 分组管理 → 新建分组比如建一个叫codex的分组。初次测试建议启用分组、暂时不设复杂模型白名单、不设模型映射、用默认倍率。等链路跑通再回来加限制。4.2 添加上游账号进管理后台 → 账号管理 → 添加账号添加 OpenAI/Codex OAuth 账号并完成设备授权。必须确认四件事账号状态为启用、OAuth 授权成功、并发数至少为 1、账号已经加入前面创建的codex分组。最后一条是最容易漏的。光建账号和分组不够必须在账号编辑页里把账号挂到对应分组上。我见过太多人卡在这里日志里一直报no available accounts其实就是账号没进组。4.3 创建 API Token进管理后台 → API Key 管理 → 新建 API Key设置分组为codex、状态启用、余额足够。这里的分组必须和账号所属分组一致否则调度阶段直接返回 503。配置完成后你手里应该有一个形如sk-xxxx的 Token。这个 Token 就是 Codex CLI 要用的凭证。5. 验证请求别拿根地址当接口测很多人部署完直接curl http://服务器IP:8080结果返回一堆 HTML就以为服务坏了。其实根地址返回的是管理后台页面它根本不调用模型。正确的测试方式是打/responses接口。export SUB2API_KEY你的新Token curl -sS -i http://127.0.0.1:8080/responses \ -H Authorization: Bearer $SUB2API_KEY \ -H Content-Type: application/json \ --data-raw { model: gpt-5.3-codex, input: 只回复 pong }公网测试把127.0.0.1换成服务器 IP 即可。成功时返回的是模型响应 JSON而不是 HTML 或 503。当前 Sub2API 版本同时处理裸/responses和/v1/responses所以 Codex CLI 那边两种路径都能接。如果这一步返回 503先别急着改配置直接看服务端日志定位docker logs --since10m sub2api 21 | grep -Ei -C 10 \ account_select_failed|no available|oauth|401|403|429|cooldown日志里出现openai.account_select_failed且excluded_account_count: 0基本就是候选账号列表为空回到账号管理检查分组归属。6. Codex CLI 接入 config.toml 配置服务端通了接下来让 Codex CLI 走 Sub2API。先建配置目录mkdir -p ~/.codex nano ~/.codex/config.toml写入以下内容model gpt-5.3-codex model_provider sub2api preferred_auth_method apikey [model_providers.sub2api] name Sub2API base_url http://服务器IP:8080 env_key OPENAI_API_KEY wire_api responses几个参数说明一下。model_provider指向下面定义的sub2api段base_url填你的 Sub2API 地址注意不要带/v1Codex 会自己拼/responsesenv_key指定从哪个环境变量读 Tokenwire_api responses表示走 Responses API 协议。设置 Token 环境变量export OPENAI_API_KEY你的Sub2API TokenmacOS 永久保存echo export OPENAI_API_KEY你的Sub2API Token ~/.zshrc source ~/.zshrcLinux Bash 永久保存echo export OPENAI_API_KEY你的Sub2API Token ~/.bashrc source ~/.bashrc然后直接启动codexCodex 会向http://服务器IP:8080/responses发请求。如果配置正确你会看到模型正常响应。如果 Codex 报连接错误先用第 5 节的curl确认服务端本身没问题再回头查config.toml的缩进和引号——TOML 对格式比较敏感base_url少了引号或者多了斜杠都会出问题。7. 本篇常见报错排查7.1 401 Unauthorized原因通常是 Token 错误、Token 已禁用或者 Authorization 请求头格式不对。检查一下你导出的变量echo ${OPENAI_API_KEY:0:8}...确认前缀和后台签发的一致。如果 Token 曾经在聊天或截图里暴露过立刻在后台禁用并重新生成。7.2 403 Insufficient account balanceSub2API 用户余额不足、API Key 额度不足或者分组计费配置导致余额不够。处理方式是进后台 → 用户管理 / 余额管理增加余额。7.3 503 No available accounts这是最高频的错误原因基本都在账号侧API Key 所属分组没有上游账号、账号没加入分组、账号被禁用、并发数为 0或者 OAuth 账号已失效。优先检查账号管理 → 编辑账号 → 分组确认账号挂在 Key 所在的那个分组里。7.4 503 Service temporarily unavailable看服务端日志docker logs --since10m sub2api 21 | grep -Ei -C 10 \ account_select_failed|no available|oauth|401|403|429|cooldown如果出现openai.account_select_failed且excluded_account_count: 0说明候选账号列表为空还是分组归属问题。7.5 返回 HTML 页面说明请求打到了/而不是/responses。检查 Codex 的base_url有没有多写路径或者curl测试时是不是漏了/responses后缀。8. 运维、备份与安全收尾日常运维命令记几条就够docker ps docker logs -f --tail200 sub2api docker restart sub2api docker compose restart sub2api更新镜像cd /opt/sub2api docker compose pull docker compose up -d备份用本地目录持久化版本最省事直接打包整个部署目录cd /opt docker compose -f /opt/sub2api/docker-compose.yml down tar czf sub2api-backup-$(date %F).tar.gz sub2api/ docker compose -f /opt/sub2api/docker-compose.yml up -d恢复就是解包后docker compose up -d。安全方面几条硬规矩不要在聊天、截图或日志里公开完整 Token已公开的立即禁用重签.env不要上传公开仓库生产环境建议加 HTTPS 反向代理并限制管理后台访问来源定期备份 PostgreSQL 和部署目录镜像版本尽量固定别长期用latest。如果你后面要把这套链路接到更多模型或团队协作场景可以顺手看看 TaoToken 的 Coding Plan它适合长期编码和 Agent 类任务配合 Sub2API 做上游调度会更顺。接入文档里有完整的鉴权和路径说明API Keys 页面用来签发和管理凭证。把 Sub2API 当本地网关、TaoToken 当上游 Key 池这套组合在团队里迁移起来会轻松很多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

950 个 Agent 跑 21.5 小时只交 19 份报告:Claude 挖出 ART 酶系统,难点在 Harness 2026/9/26 4:25:37

950 个 Agent 跑 21.5 小时只交 19 份报告:Claude 挖出 ART 酶系统,难点在 Harness

一个 Agent 读到一段原始 DNA,在分析记录里写下:我肉眼就能看到串联重复阵列。写下这句话的不是人类科学家。它来自 Anthropic 跑的一次自主基因组挖掘。949 个 Claude 会话,21.5 小时,2.156 亿 token。最后只交了 19 份报告。其中…

阅读更多 →
微信小程序中Codex服务重置的自动感知与适配机制 2026/9/26 4:25:37

微信小程序中Codex服务重置的自动感知与适配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
百度网盘如何满速跑大文件?2026实测类似PanDownload的高速解析 2026/9/26 4:25:18

百度网盘如何满速跑大文件?2026实测类似PanDownload的高速解析

在处理大型数据集、高清视频素材或复杂工程文件时,我们常常面临一个痛点:官方客户端的下载速度受限,而手动逐个文件保存又极其低效。尤其是当文件夹层级深、文件数量多达数百个时,传统的“点击下载”模式不仅耗时,还容…

阅读更多 →
Python网络舆情分析系统实战:从爬虫到情感分析 2026/9/26 4:25:18

Python网络舆情分析系统实战:从爬虫到情感分析

简介:这是面向高校计算机相关专业期末大作业与项目实战的基于Python的网络舆情分析系统完整项目,覆盖数据采集、文本预处理、情感分析和可视化展示等核心环节,难度适中,适合正在完成课程设计、毕业设计或需要综合练手的学习者。整…

阅读更多 →
NVMe移动固态硬盘(PSSD)从选购到提速排障实战笔记 2026/9/26 4:25:18

NVMe移动固态硬盘(PSSD)从选购到提速排障实战笔记

之前在项目里经常遇到一个很现实的问题:笔记本原装 512GB SSD 不够用,机械移动硬盘速度又太慢,往里面导素材动辄等十几分钟;手机拍完 4K 视频,想把文件转移到电脑上,依赖无线传输又慢又不稳定。后来把目光转…

阅读更多 →
Fusion 360 批量导出脚本:STEP/STL 精度控制与避坑指南 2026/9/26 4:25:17

Fusion 360 批量导出脚本:STEP/STL 精度控制与避坑指南

简介:Fusion360Exporter-master 是一份面向 Fusion 360 用户的导出功能扩展项目,适合需要将三维模型输出为 STL、OBJ、IGES、STEP 等格式的开发者与设计人员,尤其适用于 3D 打印、CNC 加工及跨软件协作场景。项目通过自定义脚本扩展 Fusion 3…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉