Sub2API 是开源 AI API 网关,把 Claude、OpenAI、Gemini 等订阅统一转成标准 API 接口,支持拼车共享、Token 计费、智能调度。
本文介绍方式二:Docker Compose 部署——官方推荐的生产环境方案,包含 PostgreSQL 和 Redis 容器,一键启动全套服务。
为什么选 Docker Compose
- 环境完全隔离,不污染主机
- 含 PostgreSQL + Redis,无需单独安装
- 数据目录在本地,迁移只需
tar打包 - 适合生产环境,稳定可靠
前置条件
bash
# 检查 Docker 版本(需要 20.10+)
docker --version
# 检查 Docker Compose 版本(需要 v2+)
docker compose version如果还没安装:
bash
# 一键安装 Docker(Linux)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker YOUR_USERNAME
newgrp docker方式 A:一键脚本部署(推荐)
bash
# 创建部署目录
mkdir -p sub2api-deploy && cd sub2api-deploy
# 下载并运行部署准备脚本
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash
# 启动所有服务
docker compose up -d
# 查看日志
docker compose logs -f sub2api脚本自动完成:
- 下载
docker-compose.local.yml(保存为docker-compose.yml)和.env.example - 自动生成安全的随机凭证(JWT_SECRET、TOTP_ENCRYPTION_KEY、POSTGRES_PASSWORD)
- 创建
.env文件 - 创建数据目录(本地目录模式,便于备份迁移)
方式 B:手动部署(精细控制)
bash
# 克隆仓库
git clone https://github.com/Wei-Shaw/sub2api.git
cd sub2api/deploy
# 复制环境配置
cp .env.example .env
# 编辑配置
nano .env必须修改的 .env 配置:
bash
# 数据库密码(必须修改)
POSTGRES_PASSWORD=your_secure_password_here
# JWT Secret(推荐设置,避免重启后用户登出)
JWT_SECRET=your_jwt_secret_here
# TOTP 加密 Key(推荐设置,保留重启后的 2FA 配置)
TOTP_ENCRYPTION_KEY=your_totp_key_here
# 管理员账号(可选,也可在安装向导里设置)
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=your_admin_password
# 服务端口(默认 8080)
SERVER_PORT=8080生成安全的随机密钥:
bash
# JWT_SECRET
openssl rand -hex 32
# TOTP_ENCRYPTION_KEY
openssl rand -hex 32
# POSTGRES_PASSWORD
openssl rand -hex 32bash
# 创建数据目录(本地模式)
mkdir -p data postgres_data redis_data
# 启动(推荐:本地目录版本,便于迁移)
docker compose -f docker-compose.local.yml up -d
# 检查状态
docker compose -f docker-compose.local.yml ps两种部署版本对比
| 版本 | 数据存储 | 迁移 | 推荐场景 |
|---|---|---|---|
docker-compose.local.yml | 本地目录 | 简单(tar 打包) | 生产环境、频繁备份 |
docker-compose.yml | Docker 命名卷 | 需要 Docker 命令 | 简单测试 |
推荐:生产环境用 docker-compose.local.yml(脚本自动选择这个)。
首次访问
bash
# 如果管理员密码是自动生成的,在日志里找
docker compose -f docker-compose.local.yml logs sub2api | grep "admin password"访问 http://你的服务器IP:8080,如果没有预设管理员账号,会进入安装向导完成初始化。
配置接入 Claude Code
管理后台 → 添加 Claude 账号 → 生成 API Key,然后:
bash
export ANTHROPIC_BASE_URL="http://你的服务器IP:8080/anthropic"
export ANTHROPIC_AUTH_TOKEN="sk-你的APIKey"Antigravity 账号(如果使用):
bash
export ANTHROPIC_BASE_URL="http://你的服务器IP:8080/antigravity"
export ANTHROPIC_AUTH_TOKEN="sk-你的APIKey"日常运维
bash
# 查看所有服务状态
docker compose -f docker-compose.local.yml ps
# 查看实时日志
docker compose -f docker-compose.local.yml logs -f
# 重启
docker compose -f docker-compose.local.yml restart
# 停止(不删数据)
docker compose -f docker-compose.local.yml down升级
bash
# 拉取最新镜像并重启
docker compose -f docker-compose.local.yml pull
docker compose -f docker-compose.local.yml up -d也可以在管理后台点「检查更新」通过 Web 界面升级。
迁移到新服务器
本地目录版本迁移极其简单:
bash
# 源服务器:打包
docker compose -f docker-compose.local.yml down
cd ..
tar czf sub2api-complete.tar.gz sub2api-deploy/
# 传输到新服务器
scp sub2api-complete.tar.gz user@new-server:/path/
# 新服务器:解压启动
tar xzf sub2api-complete.tar.gz
cd sub2api-deploy/
docker compose -f docker-compose.local.yml up -dNginx 反向代理配置
生产环境建议用 Nginx 做反代 + HTTPS:
nginx
http {
underscores_in_headers on; # 必须,否则 Codex sticky session 失效
server {
listen 80;
server_name your-domain.com;
return 301 https://your-domain.com/;
}
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host your-domain.com;
proxy_set_header X-Real-IP REMOTE_ADDR;
proxy_set_header X-Forwarded-For PROXY_ADD_X_FORWARDED_FOR;
proxy_set_header X-Forwarded-Proto https;
}
}
}Simple Mode(个人/内网使用)
如果只是个人或小团队内网使用,可以开启简洁模式,隐藏 SaaS 相关功能:
在 .env 里加:
bash
RUN_MODE=simple
SIMPLE_MODE_CONFIRM=true来源:github.com/Wei-Shaw/sub2api | 整理:ClaudeEagle