🚀 AI 中转站(Sub2API)搭建
一、核心概念与价值
- 作用:将 Claude、OpenAI、Gemini 等多个 AI 平台的 API 统一成一个接口,提高安全性与管理便利性。
- 核心优势 :安全。避免第三方中转站窃取你的请求内容(如 System Prompt、API Key、代码等)。
- 适用场景:个人/企业统一管理多 AI 服务、拼车共享、规避官方直接计费风险。
源码地址:https://github.com/Wei-Shaw/sub2api/blob/main/README_CN.md
二、准备工作
| 项目 | 要求/建议 |
|---|---|
| 服务器 | 海外 VPS(如 AWS、Vultr、DigitalOcean),最低 1核1GB(自用足够) |
| 操作系统 | Ubuntu 24 (两文均基于此) |
| 域名 | 推荐使用 Cloudflare 托管(隐藏 IP、免费 SSL、端口转发) |
| 本地工具 | SSH 客户端(Xterminal、Terminus 等) |
三、通用部署方式(非 Docker,源自第一篇)
1. 连接服务器
- 使用 SSH 工具登录,记录服务器信息(IP、端口、用户名、密码)。
2. 安装 Sub2API 核心
bash
mkdir -p sub2api-deploy && cd sub2api-deploy
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash
- 安装中需设置 :
- 监听地址:直接回车(默认)
- 服务端口:自定义(如
10086,范围 1024-65535),务必记下
3. 安装 PostgreSQL(数据库)
bash
sudo apt update
sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable postgresql
sudo systemctl start postgresql
# 创建数据库和用户(替换密码)
sudo -u postgres psql -c "CREATE USER sub2api_user WITH ENCRYPTED PASSWORD '你的强密码';"
sudo -u postgres psql -c "CREATE DATABASE sub2api OWNER sub2api_user;"
- 记录信息 :地址
127.0.0.1,端口5432,名称sub2api,用户名sub2api_user,密码(自设)
4. 安装 Redis(缓存)
bash
sudo apt install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
# 设置密码(替换密码)
sudo sed -i "s/^# requirepass foobared/requirepass 你的强密码/" /etc/redis/redis.conf
sudo systemctl restart redis-server
- 记录信息 :地址
127.0.0.1,端口6379,密码(自设)
5. 域名与 Cloudflare 配置
- 域名购买(可选):在 Cloudflare 购买(需外币卡)或接入已有域名。
- DNS 解析 :添加 A 记录,如
api→ 服务器 IP,开启 Proxy Status(橙色云朵)。 - 端口转发 (Origin Rule):
- 路径:Cloudflare 控制台 → Rules → Origin Rules → Create Rule
- 字段:Hostname 匹配
api.你的域名.com - 操作:Rewrite to 端口(如
10086) - SSL/TLS 设置:Flexible 模式
6. Sub2API 后台初始化
- 访问
https://api.你的域名.com,按向导填入:- PostgreSQL 和 Redis 的连接信息
- 设置管理员账号/密码
- 完成后即可进入后台。
四、Docker 部署方式(源自第二篇,推荐)
1. 创建项目目录和 compose 文件
bash
mkdir -p /data/sub2api && touch /data/sub2api/compose.yaml
2. 编辑 compose.yaml 内容
- 使用第二篇文章提供的完整 Docker Compose 配置(见原文代码块)。
- 必须修改的默认密码/密钥 :
DATABASE_PASSWORDREDIS_PASSWORDADMIN_EMAIL/ADMIN_PASSWORD
- 端口 :默认
6780,可自行修改。 - 安全注意 :若使用 HTTPS,建议删除环境变量中
SECURITY_URL_ALLOWLIST_ENABLED=false和SECURITY_URL_ALLOWLIST_ALLOW_INSECURE_HTTP=true。
3. 启动服务
bash
cd /data/sub2api
docker compose up -d
- 等待镜像拉取并启动,检查容器状态(
docker ps)。
4. 访问与配置
- 访问
http://服务器IP:6780(或你设置的端口) - 登录:使用
compose.yaml中设置的ADMIN_EMAIL/ADMIN_PASSWORD
五、Sub2API 后台使用(两文共通)
1. 创建分组(不同 AI 平台)
- 分组管理 → 创建分组 → 输入名称、选择平台(OpenAI、Claude 等)
2. 添加账号(以 OpenAI OAuth 为例)
- 账号管理 → 添加账号 → 选择平台和分组
- 账号类型选 OAuth → 生成授权链接 → 在浏览器完成登录 → 复制回调 URL 完成授权
3. 创建 API 密钥
- API 密钥 → 创建密钥 → 选择分组 → 生成
- 记录 API 端点 (BaseURL)和 密钥(API Key)
4. 客户端使用(如 cc switch)
- 供应商名称:自定义
- API Key:从 Sub2API 复制
- 请求地址:Sub2API 端点(
https://api.你的域名.com或http://IP:端口) - 模型列表:自动获取,选择所需模型(如
gpt-5.5)
六、安全与维护建议
| 方面 | 建议 |
|---|---|
| 访问安全 | 使用 Cloudflare 代理(隐藏真实 IP)、开启 HTTPS(Flexible/Full)、禁用 HTTP 内网明文 |
| 数据安全 | 定期备份 PostgreSQL 和 Redis 数据目录;环境变量中的密码使用强密码 |
| 更新 | Docker 方式:docker compose pull && docker compose up -d 脚本方式:重新运行安装脚本 |
| 监控 | 定期检查容器日志(docker logs sub2api)或服务器资源占用 |
七、常见问题速查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 无法访问后台 | 端口未开放(防火墙/安全组) | 在 VPS 控制台允许自定义端口(如 10086/6780) |
| 授权后无法跳转 | OAuth 回调地址不含端口 | 使用域名+Origin Rule 解决(非 Docker 方式)或直接用 IP+端口访问 |
| 模型调用失败 | 分组/账号未正确关联 | 检查账号是否激活,分组是否勾选正确 |
| Redis 连接错误 | 密码未设置或 compose 中不一致 | 确保 REDIS_PASSWORD 与 Redis command 中的 --requirepass 一致 |
根据你的技术偏好,可以选择通用脚本部署 (更贴近系统底层)或 Docker 部署(更易维护)。建议优先尝试 Docker 方式,开箱即用。如果有任何具体步骤卡住,可以告诉我你选择的部署方式和遇到的现象,我可以进一步协助排查。