AI中转站搭建完整教程:从零部署API代理服务
前言
AI 中转站本质上是一个 API 代理服务,能把多个 AI 渠道(如 OpenAI、Claude、国内大模型等)统一到一个接口地址下,实现密钥集中管理、负载均衡和流量监控。
本文面向完全零基础的用户,手把手教你从一台空服务器开始,部署一个可用的 AI 中转站。
第一步:准备环境与资源
你需要以下三样东西:
- 一台云服务器(推荐 2 核 2G 以上,系统用 CentOS 7 / Ubuntu 22.04)。
- 一个已备案的域名(用于绑定中转站后台和 API 入口)。
- 服务器面板(建议先装宝塔面板,方便管理 Nginx、MySQL)。
安装宝塔面板的命令(以 CentOS 为例,SSH 执行):
curl -sSO https://download.bt.cn/install/install_panel.sh && bash install_panel.sh
安装完成后用浏览器打开面板地址,登录后安装 Nginx 和 MySQL 5.7+(或 SQLite,本文以 MySQL 为例)。
第二步:部署开源中转项目
目前主流的中转站开源项目是 songquanpeng/one-api(GitHub 20k+ stars),支持 Docker 和手动部署。
推荐用 Docker 方式,省去环境依赖。
- 在宝塔面板的“终端”或 SSH 中执行:
docker run -d --restart=always \
--name one-api \
-p 3000:3000 \
-v /home/one-api/data:/data \
-e SQL_DSN="root:123456@tcp(127.0.0.1:3306)/one-api?charset=utf8mb4&parseTime=True&loc=Local" \
-e TZ=Asia/Shanghai \
justsong/one-api
注意将root:123456替换为你的数据库用户名和密码,数据库one-api需提前创建。如果你不想用 MySQL,可以去掉-e SQL_DSN,项目默认使用 SQLite 存储。
- 等待容器启动后,访问
http://服务器IP:3000,首次访问会进入初始化页面,设置管理员账号密码。
第三步:配置反向代理与 HTTPS
为了让服务通过域名访问并加密传输,需要在宝塔面板中添加站点并设置反向代理。
- 在宝塔“网站” -> “添加站点”,填入你的域名(如
api.example.com),创建成功后点击“设置”。 - 选择“反向代理” -> “添加反向代理”,目标 URL 填
http://127.0.0.1:3000,发送域名填$host。 - 回到站点设置,选择“SSL” -> “Let's Encrypt”,免费申请并开启强制 HTTPS。
完成后,你就可以用 https://api.example.com 访问中转站后台了。
第四步:后台操作与渠道配置
登录后台后,首先进入“渠道” -> “添加渠道”。
选择你使用的 AI 厂商(例如 OpenAI),填写 API Key,可以添加多个 Key 实现负载均衡。
接着进入“令牌” -> “添加令牌”,设置一个过期时间和额度,拿到 API 地址和密钥。
这个地址形如 https://api.example.com/v1,密钥就是生成的令牌。
第五步:测试与验证
用 curl 测试是否正常代理:
curl https://api.example.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的令牌" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Say hello"}]
}'
如果返回正常 JSON 结果,说明中转站搭建成功。
你也可以在后台“日志”中看到每次调用的详情。
避坑指南
- 数据库连接失败:检查 MySQL 是否允许远程连接,以及
SQL_DSN中的 IP 是否正确(容器内访问宿主机用127.0.0.1或host.docker.internal)。 - 反向代理 502:检查目标端口是否已暴露,以及 Nginx 是否正常运行。
- 令牌泄露:务必在公司内部或生产环境中设置令牌的 IP 白名单(后台支持)。
- 模型不支持:部分开源模型需要单独配置映射,确保渠道配置正确。
高频问题 FAQ
问:如何添加多个 API Key 实现负载均衡?
答:在渠道中为同一个厂商添加多个 Key,系统会自动轮询。
问:中转站能限制每个用户的调用次数吗?
答:可以,在“令牌”设置中调整额度(按次数或按 token 数)。
问:我用了自己的域名,但证书申请失败?
答:确保域名已正确解析到服务器 IP,且宝塔面板已放行 80 端口。
写在最后
如果你严格按照本文步骤操作,应该已经拥有一个可用的 AI 中转站。
后续可根据需求调整缓存策略、升级流量统计。
遇到细节问题,建议先查看 one-api 项目的 GitHub Issue 或文档,大部分常见错误在那里都有讨论。