☰
在 Windows 11 上搭建 Sub2API 服务:从 WSL2 到 Codex CLI 完整指南(TaoToken 统一 Key 接入版)
2026/9/29 3:42:18 网站建设 项目流程

1. 为什么要在 Windows 11 上折腾 Sub2API + Codex CLI

如果你在 Windows 11 上写代码,又想用 Codex CLI 这类命令行 AI 编程工具,大概率会遇到一个尴尬:Codex CLI 官方对 Windows 原生支持并不算顺滑,很多依赖和脚本默认按 Linux 环境设计。而 Sub2API 这类自建 API 聚合服务,又需要 Docker、PostgreSQL、Redis 一整套容器编排。把这两件事塞进 Windows 11,最省心的路径就是 WSL2。

WSL2 是 Windows 11 自带的 Linux 子系统,本质是一个轻量虚拟机,能跑完整的 Ubuntu 内核。你可以在里面装 Docker、跑容器、装 Node.js,同时用 Windows 的浏览器访问服务。Sub2API 则是一个开源的 API 聚合与分发服务,能把多个上游模型账号统一成一个 API Key 对外提供,Codex CLI 只要指向这个统一入口就能用。

这套组合适合谁?适合手头有多个模型账号、想让 Codex CLI 走统一通道的开发者;也适合想在自己机器上做本地 API 网关实验的技术爱好者。整条链路是:Windows 11 → WSL2 Ubuntu → Docker 跑 Sub2API → Codex CLI 通过统一 Key 接入。下面我从零开始,把每一步的命令和配置都写清楚。

2. 前置准备:WSL2、Docker 与 TaoToken 统一 Key

2.1 启用 WSL2 并安装 Ubuntu

在 Windows 11 里以管理员身份打开 PowerShell,执行:

wsl --install

这条命令会自动启用虚拟机平台、安装 WSL2 内核并拉取 Ubuntu。重启计算机后,系统会弹出 Ubuntu 初始化窗口,按提示创建 Linux 用户名和密码。装完后验证版本:

wsl -l -v

如果 Ubuntu 的 VERSION 显示为 1,手动升级:

wsl --set-default-version 2 wsl --set-version Ubuntu 2

进入 Ubuntu 环境并更新基础工具:

wsl sudo apt update && sudo apt upgrade -y sudo apt install -y curl git ca-certificates nano openssl

2.2 安装 Docker

新手最省事的方案是 Docker Desktop for Windows。安装后在 Settings → General 勾选 Use the WSL 2 based engine,再到 Settings → Resources → WSL Integration 里开启你的 Ubuntu 集成。回到 Ubuntu 终端验证:

docker version docker compose version docker run hello-world

如果你不想装 Docker Desktop,也可以在 Ubuntu 内直接安装 Docker Engine,前提是 WSL 已启用 systemd。两种方式选一种即可,后面都用docker compose操作。

2.3 TaoToken 统一 Key 的定位

Sub2API 负责把上游账号聚合成一个入口,而 TaoToken 在这里扮演的是统一 Key 与 API 通道的角色。你可以把它理解成一把总钥匙:Codex CLI 不需要分别配置多个上游,只要拿到一个统一 Key,指向统一 API 地址,就能完成模型调用。

TaoToken 官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=

API 基础地址(不带 UTM):https://taotoken.net/api

需要先去控制台创建 API Key,后面配置 Codex CLI 时会用到。创建入口在 API Keys 页面,文档在接入文档里,遇到鉴权问题优先翻这两处。

3. 可复制配置:部署 Sub2API 并接入 Codex CLI

3.1 用 Docker Compose 部署 Sub2API

在 Ubuntu 里建目录并拉取部署脚本:

mkdir -p ~/apps/sub2api-deploy cd ~/apps/sub2api-deploy curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash

启动服务并查看状态:

docker compose up -d docker compose ps docker compose logs -f sub2api

浏览器打开http://localhost:8080进入安装向导。如果 Windows 浏览器访问不了,先拿 WSL 的 IP:

hostname -I

然后用http://WSL_IP:8080访问。向导里按提示填数据库、Redis 和管理员账号,Docker Compose 版本已内置 PostgreSQL 和 Redis 容器,默认配置通常够用。

3.2 Sub2API 后台基础配置

进入后台后做三件事:添加上游账号、创建用户、生成 API Key。上游账号按你实际持有的服务填,生成出来的 Key 是sk-xxxx格式,这就是 Codex CLI 要用的凭证。同时确认后台可用的模型名称,比如gpt-5-codex或后台映射的其他名字,后面config.toml里的model必须和它一致。

3.3 Codex CLI 的 config.toml 骨架

先装 Node.js 和 Codex CLI:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash # 重开终端后 nvm install 22 npm i -g @openai/codex codex --version

创建配置文件:

mkdir -p ~/.codex nano ~/.codex/config.toml

写入以下骨架,把model换成你后台真实可用的模型名:

model = "gpt-5-codex" model_provider = "sub2api" [model_providers.sub2api] name = "Sub2API" base_url = "http://localhost:8080/v1" env_key = "SUB2API_API_KEY" wire_api = "responses" supports_websockets = false

设置环境变量,临时生效:

export SUB2API_API_KEY="sk-你的Sub2API-Key"

永久生效:

echo 'export SUB2API_API_KEY="sk-你的Sub2API-Key"' >> ~/.bashrc source ~/.bashrc

3.4 settings.json 与 WSL2 端口转发

如果你习惯用 JSON 管理配置,可以在~/.codex/settings.json里放一份等价骨架:

{ "model": "gpt-5-codex", "model_provider": "sub2api", "model_providers": { "sub2api": { "name": "Sub2API", "base_url": "http://localhost:8080/v1", "env_key": "SUB2API_API_KEY", "wire_api": "responses", "supports_websockets": false } } }

WSL2 默认会把 localhost 映射到 Windows,但有时需要显式转发。在 Windows PowerShell(管理员)里执行:

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=(wsl hostname -I).Trim()

查看已有转发规则:

netsh interface portproxy show all

不需要时删除:

netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0

4. 验证请求:一次 curl 确认链路可用

配置完成后,先用 curl 直接打 Sub2API 的接口,确认服务本身活着:

curl -s http://localhost:8080/v1/models \ -H "Authorization: Bearer $SUB2API_API_KEY" | head -c 500

如果返回模型列表 JSON,说明 Sub2API 和 Key 都正常。接着测 Codex CLI:

codex "用一句话介绍当前目录"

预期结果是 Codex CLI 通过sub2api这个 provider 发出请求,Sub2API 转发到上游,再把结果返回终端。如果这一步能出内容,整条链路就通了。

想单独验证 TaoToken 统一通道,可以再打一次:

curl -s https://taotoken.net/api/v1/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" | head -c 500

把TAOTOKEN_API_KEY换成你在控制台创建的 Key。这一步能返回模型列表,说明统一 Key 通道本身没问题,剩下的就是 Sub2API 与 Codex CLI 的对接细节。

5. 本篇常见错排查

5.1 Docker Compose 启动失败,提示缺少 .env

本地版docker-compose.local.yml需要读取deploy/.env,缺文件或变量为空都会启动失败。解决方式:

cd ~/apps/sub2api-deploy/deploy cp .env.example .env nano .env

至少保证这些字段有值:

POSTGRES_USER=sub2api POSTGRES_PASSWORD=设置一个强密码 POSTGRES_DB=sub2api ADMIN_EMAIL=admin@sub2api.local ADMIN_PASSWORD=设置管理员密码 JWT_SECRET=设置随机字符串 TOTP_ENCRYPTION_KEY=设置随机字符串 TZ=Asia/Shanghai

生成随机串可以用:

openssl rand -hex 32

然后建数据目录并重启:

mkdir -p data postgres_data redis_data docker compose -f docker-compose.local.yml up -d docker compose -f docker-compose.local.yml ps

5.2 数据库密码相关报错

如果启动后仍报数据库密码错误,检查.env里的POSTGRES_PASSWORD:等号后不能为空,避免中文、空格和引号。之前启动失败过的话,补好.env再执行一次up -d通常就能恢复。

5.3 Codex CLI 报模型不存在

这是最常见的坑。config.toml里的model必须和 Sub2API 后台可用模型名完全一致,大小写和连字符都不能错。改完配置后重开终端再试。

5.4 鉴权失败

先确认SUB2API_API_KEY是 Sub2API 后台生成的 Key,不是 TaoToken 的 Key,两者别混。再确认环境变量在当前 shell 里真的生效:

echo $SUB2API_API_KEY

如果为空,说明~/.bashrc没 source 或者写错了文件。

5.5 Nginx 反向代理丢请求头

如果后续把 Sub2API 放到服务器并用 Nginx 反代,记得在http块加:

underscores_in_headers on;

否则带下划线的请求头会被 Nginx 丢弃,Sub2API 的粘性会话和多账号调度会异常。

6. 长期编码与 Agent 场景的接入建议

如果你只是偶尔用 Codex CLI 跑一两个任务,上面的配置已经够用。但如果你打算把 Codex CLI 当成日常编码助手,甚至接进 Agent 工作流,建议把 Key 管理和通道稳定性单独考虑。

TaoToken 的 Coding Plan 适合长期编码和 Agent 场景,模型对话入口适合临时验证模型效果,API Keys 页面负责凭证管理,接入文档负责排障。遇到接入问题优先看 API Keys 和接入文档,验证模型效果走模型对话,长期跑编码任务再考虑 Coding Plan。

安全方面有几条硬建议:不要把 API Key 写进公开仓库,用环境变量或密钥管理服务;固定好JWT_SECRET、TOTP_ENCRYPTION_KEY、POSTGRES_PASSWORD这几个关键配置;生产环境配好防火墙和 HTTPS,定期更新依赖。Sub2API 这类自建聚合服务用于技术学习和研究,上游账号的使用需自行评估风险。

最后留一个实用习惯:每次改完config.toml或.env,先跑一次docker compose logs -f sub2api看日志,再用 curl 打一次/v1/models,最后才用codex发真实请求。三步走下来,问题基本能定位到具体环节,不用靠猜。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询