多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

基于 Docker Compose 快速搭建个人大模型 API 中转站

基于 Docker Compose 快速搭建个人大模型 API 中转站 在日常开发和使用 AI 工具如 Claude code、CodexChatGPT、Cursor、Cline、沉浸式翻译时多平台 API 密钥分散、额度无法统一管理、网络连通性不稳定往往是最大的痛点。搭建一个自用的 API 聚合中转网关可以实现以下目的统一聚合各大模型接口对外暴露标准的 OpenAI 格式兼容接口/v1/chat/completions等精细化分配 Token、设置消费上限、查看调用日志与实时延迟摆脱多客户端维护多套 Key 的麻烦一个统一 Base URL 搞定全家桶。本文记录一套基于Docker Compose PostgreSQL Redis Nginx的轻量级高可用部署方案包含完整的反向代理流式传输SSE配置与上游渠道对接实操。一、服务器与前置准备服务器环境一台基础配置云服务器推荐 1核 2G 内存及以上Ubuntu 22.04 / 24.04 或 Debian 12 系统。域名解析准备一个域名如api.yourdomain.com并将 A 记录解析到你的服务器公网 IP。安全组/防火墙开放80、443端口以及测试阶段可能用到的3000端口。登录服务器确保已安装 Docker 和 Docker Compose 插件# 安装基础依赖与 Dockercurl-fsSLhttps://get.docker.com|bash-sdockersystemctlenabledockersystemctl startdocker# 验证安装docker--versiondockercompose version二、Docker Compose 配置文件虽然 New API 支持直接用 SQLite 单文件启动但如果要长期稳定运行、防止高并发锁库或数据损坏强烈建议直接上 PostgreSQL/MySQL Redis。创建独立部署目录mkdir-p/srv/new-apicd/srv/new-api创建docker-compose.ymlservices:new-api:image:calciumion/new-api:latestcontainer_name:new-apirestart:alwaysports:-127.0.0.1:3000:3000volumes:-./data:/dataenvironment:-TZAsia/Shanghai-SQL_DSNpostgres://newapi:your_strong_db_passwordpostgres:5432/newapi?sslmodedisable-REDIS_CONN_STRINGredis://redis:6379/0-SESSION_SECRETyour_random_session_secret_32charsdepends_on:postgres:condition:service_healthyredis:condition:service_healthypostgres:image:postgres:15-alpinecontainer_name:newapi-postgresrestart:alwaysvolumes:-./postgres_data:/var/lib/postgresql/dataenvironment:-POSTGRES_USERnewapi-POSTGRES_PASSWORDyour_strong_db_password-POSTGRES_DBnewapi-TZAsia/Shanghaihealthcheck:test:[CMD-SHELL,pg_isready -U newapi -d newapi]interval:5stimeout:5sretries:5redis:image:redis:7-alpinecontainer_name:newapi-redisrestart:alwaysvolumes:-./redis_data:/datacommand:redis-server--appendonly yeshealthcheck:test:[CMD,redis-cli,ping]interval:5stimeout:5sretries:5注意请务必把上面的your_strong_db_password换成你自己的强密码。SESSION_SECRET填写任意一段较长的随机字符串。New API 的3000端口绑定在127.0.0.1仅通过后续的 Nginx 进行反向代理避免裸奔端口直接暴露在外网。拉取镜像并启动容器dockercompose up-d检查容器运行状态dockercomposeps三个容器状态全部显示为healthy/Up即表示启动成功。三、配置 Nginx 与 SSL 证书大模型接口调用大部分是**流式传输SSEServer-Sent Events**以及长上下文大请求。如果 Nginx 默认开启了proxy_buffering会导致流式打字机效果卡顿、必须等接口整段输出完毕才返回甚至长推理模型如 o1、Claude 思考模式直接超时报 504 Gateway Timeout。1. Nginx 站点配置编辑你的 Nginx 虚拟主机配置文件例如/etc/nginx/conf.d/api.confserver { listen 80; server_name api.yourdomain.com; # 替换为你自己的域名 # 强制跳转 HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name api.yourdomain.com; # SSL 证书路径可使用 certbot 自动生成 ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 客户端上传 Body 限制处理大图片、多模态或代码文件输入 client_max_body_size 64m; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; 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 $scheme; # WebSocket 支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 核心关键必须彻底关闭代理缓冲以保证 SSE 流式平滑输出 proxy_buffering off; proxy_cache off; chunked_transfer_encoding on; # 超时设置避免长思考模型或大文档长耗时直接断开 proxy_connect_timeout 600s; proxy_read_timeout 600s; proxy_send_timeout 600s; } }测试并重载 Nginxnginx-tnginx-sreload四、后台初始化与配置打开浏览器访问https://api.yourdomain.com。初始管理员账号密码账号root密码123456第一件事进入系统后立即点击右上角个人头像修改默认密码。进入「系统设置」-「通用设置」将“服务器地址”改为你当前绑定的完整域名如https://api.yourdomain.com。按需设置是否开放用户自行注册。五、对接上游渠道中转站搭好了核心是要有底层模型算力供应。很多刚开始折腾自建站的朋友最容易卡在这一步自己根本没有多路原厂渠道。去 OpenAI / Anthropic 官网直接绑卡不仅门槛高需要海外双币卡/环境防封号而且各家账户分散、充值繁琐。所以对于个人或小团队站点最省事的做法就是直接找一家现成的聚合网关当一级上游这里可以直接对接BestAPI官网https://best-api.org。选择它的核心原因其实就一条足够便宜而且已经把 GPT、Claude、Gemini、DeepSeek 等主流模型的专线都打包聚合好了不需要自己再去各家平台零散办卡开户。可以冲2块钱试一下。具体对接配置步骤打开 BestAPI 官网 注册账号进入控制台创建一个新的 API Key格式形如sk-xxxxxx。回到你自己搭建的 New API 后台点击左侧菜单的「渠道」-「添加渠道」。按照如下参数填写名称随意填写例如BestAPI-xx渠道类型选择OpenAI标准通用网关协议代理地址Base URL填入https://best-api.org末尾不带斜杠密钥API Key粘贴刚在 BestAPI 获取的sk-xxxxxx模型直接在模型列表里点击“填入所有模型”或勾选你需要对外提供的模型。分组默认选择default。点击底部的「提交」保存。保存后在渠道列表里找到该条目点击右侧的「测试」按钮。如果右下角弹出绿色成功提示且有返回延迟如 200~500ms说明上游已完全调通六、生成令牌并接入客户端测试渠道接通后就可以给自己或团队成员分配调用凭证了。点击左侧导航栏的「令牌 / Tokens」-「添加令牌」。设置令牌名称、额度上限可设为无限额度或自定义固定金额。生成后会得到一段专属于你自建站点的sk-密钥。1. 终端 curl 快速测试在本地终端运行一行命令验证是否能正常返回curlhttps://api.yourdomain.com/v1/chat/completions\-HContent-Type: application/json\-HAuthorization: Bearer sk-你刚才在自己站点生成的Key\-d{ model: gpt-4o, messages: [{role: user, content: Hello!}], stream: false }看到完整的 JSON 回复即代表全链路打通。
返回列表