AxonHub Docker Compose 部署教程
本文教你用 Docker Compose + SQLite 单容器方案部署 AxonHub:一个 AI 网关,把国内模型的 Chat Completions 接口转成新版 Codex CLI 需要的 Responses API 格式。
AxonHub 是干什么的
新版 Codex CLI 用的是 OpenAI Responses API,不是老版的 Chat Completions。但国内厂商——DeepSeek、Kimi、GLM、火山引擎——目前基本只提供 Chat Completions 接口。直接填这些 endpoint 进 Codex,它会报格式不兼容的错误。
AxonHub 的核心价值就在这里:它把国内模型的 Completions API 自动转换成 Responses API 格式。Codex 以为自己连的是 OpenAI,实际上 AxonHub 在背后把请求拆给 DeepSeek 或 Kimi,再把返回结果包成 Responses 的格式塞回去。一行代码不用改,就能让 Codex 跑在国内模型上。
除此之外,它还能做渠道路由(多个 Key 自动切换)、故障检测(某个厂商挂了自动切到另一个)、用量统计(看每个模型烧了多少钱)。项目地址:https://github.com/looplj/axonhub,Go 语言开发,单容器就能跑。
安装:SQLite 单容器方案
官方默认 docker compose 带了 PostgreSQL,个人用太重。这里用 SQLite 方案,只有一个容器,内存 50~100MB,WSL 里跑起来毫无压力。
准备目录
mkdir -p ~/axonhub && cd ~/axonhub
写 docker-compose.yml
services:
axonhub:
image: looplj/axonhub:latest
container_name: axonhub
environment:
AXONHUB_DB_DIALECT: sqlite3
AXONHUB_DB_DSN: "file:/data/axonhub.db?cache=shared&_fk=1&_pragma=journal_mode(WAL)"
ports:
- "8090:8090"
volumes:
- ./data:/data
- ./config.yml:/app/config.yml:ro
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8090/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
写 config.yml
server:
host: "0.0.0.0"
port: 8090
name: "AxonHub"
request_timeout: "30s"
llm_request_timeout: "600s"
debug: false
cors:
enabled: true
allowed_origins:
- "http://localhost:3000"
- "http://localhost:5173"
- "http://localhost:8090"
allowed_methods: ["GET", "POST", "DELETE", "PATCH", "PUT", "OPTIONS", "HEAD"]
allowed_headers: ["Content-Type", "Authorization", "X-API-Key", "AH-Thread-Id", "AH-Trace-Id"]
allow_credentials: true
db:
dialect: "sqlite3"
dsn: "file:/data/axonhub.db?cache=shared&_fk=1&_pragma=journal_mode(WAL)"
max_open_conns: 10
max_idle_conns: 5
cache:
mode: "memory"
memory:
expiration: "5s"
cleanup_interval: "10m"
log:
level: "info"
encoding: "console"
output: "stdio"
启动
mkdir -p data
chmod 777 data
docker compose up -d
等 healthcheck 通过,访问 http://localhost:8090 ,第一次会跳初始化向导,设管理员账号密码。按提示设置之后登录即可。
登录之后能看到仪表盘,就说明已经安装好了。
验证与自查
docker compose ps中 axonhub 容器状态为 healthy(等 healthcheck 通过)curl http://localhost:8090/health返回健康状态- 浏览器访问 http://localhost:8090 出现初始化向导,能创建管理员账号并登录看到仪表盘
- 日志无报错:
docker compose logs axonhub无 ERROR 级别输出