Docker 部署免费的AI大模型API接口平台,每月10+亿Tokens免费用
摘要
FreeLLMAPI 是一个开源的大模型 API 服务平台,支持统一接口和多模型并行。本文介绍了在 VPS 上利用 Docker Compose 部署该项目的步骤,包括配置环境、获取安装码及添加免费大模型提供商密钥。使用时需绑定域名,并注意各平台策略,多平台适度使用以防封号。
前言
FreeLLMAPI 是一个开源项目,它能帮你快速搭建一个属于自己的大模型 API 服务平台:你可以往里添加多家大模型供应商,然后用统一的 API 接口去访问它们,方便各种 AI 应用统一调用,不用每家各配一套。
其实类似的项目挺多的,我之所以选 FreeLLMAPI,主要是两点:一是界面和操作更易用,对小白友好;二是它直接给出了免费大模型的获取链接,省去了自己去各家翻找免费额度的麻烦。
一句话理解价值:把"多家的免费模型额度"汇聚到一个入口,给你的 AI 应用一个统一的 OpenAI 兼容 API 地址,模型可以自动切换、按需调度。
为什么需要"聚合网关"
先说清楚这东西解决的是什么问题,不然后面的配置容易照着做但不知道在做什么。
你手上大概有这些情况:OpenRouter 一个 key、Google AI Studio 一个 key、Groq 一个 key……每个平台的接口地址、鉴权方式、返回格式都略有不同。当你有三四个 AI 应用(聊天前端、翻译脚本、编辑器插件)要用模型时,就变成了 N 个应用 × M 个平台 的配置矩阵。换一个 key,得把这几个应用全改一遍。
网关做的事就是把这个矩阵压成一行:应用只认网关一个地址,网关内部管着 M 个平台。
这里的关键是"OpenAI 兼容"。目前绝大多数 AI 工具(不管是自建还是开源项目)的支持列表里,第一项都是"OpenAI 格式",你只需要填两个东西:
Base URL:接口地址
API Key:密钥
网关把自己伪装成一个"OpenAI 接口",所以任何支持自定义 API 地址的工具都能直接接上。这就是为什么这类项目都要强调"OpenAI 兼容"——不兼容的话,工具接入成本会高到没人愿意用。
部署
项目提供了多平台的各种部署及安装方法,甚至直接给了 exe 安装文件(Windows 上双击即用)。不过我考虑到这个服务需要 24 小时在线,而且可能要兼顾网络连通问题,所以选择把它部署在 VPS 上,用 docker compose 方式运行,最省心也最稳定。
1. 创建项目目录
在 VPS 上先建一个目录并进入:
2. 新建 docker-compose.yml
用 vim 新建编排文件:
填入以下内容:
重点看注释:项目默认绑定到 localhost(127.0.0.1),因为它是单用户的,不应该直接暴露到公网。如果你想让局域网内其他设备也能访问,需要把
HOST_BIND设成0.0.0.0(建议配合反代 + 认证使用,别裸奔)。
这段配置里有三个设计意图值得解释一下,看懂了才知道哪些能改哪些不能改:
① 127.0.0.1:3001:3001 里的 ${HOST_BIND:-127.0.0.1} —— 这是"宿主机绑定 IP"。写成 127.0.0.1 意味着只有这台服务器自己能访问,外部网络连都连不上。这不是多此一举:这个网关里存着你所有的平台 key,而且它本身没有用户体系(单用户产品),一旦暴露到公网,等于把 key 直接挂出去了。所以默认值的这个"保守"是刻意设计的。
② volumes 里的 freellmapi-data:/app/server/data —— 这是 named volume,用来持久化数据(账号、你填的各个 key、配置)。这行必须留着,否则容器重建一次,你辛苦配的供应商全没了。
③ healthcheck 在测 /api/ping —— Docker 会每 30 秒自己请求一次这个接口。应用如果卡死了,Docker 会把它标记为不健康。这不是必须的,但配合 restart: unless-stopped 能让服务在异常时自动恢复。
3. 新建 .env 配置文件
填入以下内容(更多参数可参考项目里的 .env.example 文件):
⚠️ 安全提醒:上面的
ENCRYPTION_KEY是示例值,部署时请务必改成你自己的随机 64 位十六进制密钥(可以用openssl rand -hex 32生成),否则存在安全隐患。

ENCRYPTION_KEY 到底是干什么的:你在 Web 界面填入的各平台 API Key,不会以明文存在数据库里,而是用这个密钥加密后存储。它的作用是防止"数据库被拖走就等于所有 key 泄露"。
由此推出两个必须遵守的操作:
一旦部署后启用,就不要改这个值 —— 改了之后,之前加密保存的 key 全部解不开,只能重新填一遍
这个 key 要单独备份好 —— 换机器迁移时,只有带上它才能把数据接续上
至于生成方式,openssl rand -hex 32 会自动产生 64 个十六进制字符(32 字节 = 256 位),正好符合要求。注意别自己手敲一串"看起来随机"的字符,人的随机性很差。
4. 启动容器
等待镜像拉取并启动:

项目设置
1. 打开 Web 页面并初始化
浏览器访问 http://VPS的IP:3001,初始化账号时页面会提示需要安装码:

"安装码"这个机制是干什么的:因为服务可能在初始化前就被别人扫到了,如果谁先访问谁就能注册管理员,那你的网关就被别人接管了。安装码的存在相当于**"只有能看到服务器日志的人才能完成初始化"**——它是一个一次性的、只能从本地容器里拿到的凭据。
2. 从日志获取安装码
查看 docker 项目日志,就能拿到安装码:

如果日志很长,可以用 docker-compose logs --tail=50 只看最后 50 行,找起来更快。
3. 添加提供商密钥
进入 Web 页面后,根据提示选择"添加提供商密钥":

4. 选择免费大模型平台
项目提供了非常多免费的大模型平台,并且贴心地给出了各自的获取链接,照着去申请对应的 API Key 即可:

5. 检查并确认
添加 API Key 后,选择立即检查,能通过就说明配好了。可以多添加几个不同平台的,方便后续按需使用:

6. 使用方式
实际调用时,可以自动选择模型,也可以让多个模型同时工作(并行负载均衡/容灾):

"自动选择模型"和"多模型并行"是两种不同的策略,别混淆:
自动选择(路由):请求进来时,网关挑一个当前可用的平台发出去。这是"提高可用性"——某个平台限流了或挂了,请求会自动落到其他平台上
并行(负载均衡):同一个请求同时发给多个平台,取最先返回的结果。这是"降低延迟 + 提高成功率",代价是消耗多份额度
日常用建议开自动路由就够了;并行适合"这个请求绝对不能失败"的场景,但要记住它会按倍数消耗你的免费额度——本来一天能聊 50 次,开了并行可能只剩十几二十次。
7. 额度与可用模型一目了然
每个平台的可用模型和剩余额度在界面上显示得非常清晰,方便你随时掌握各家的使用情况:

这个额度面板是这类工具最实用的一块。因为免费额度分散在多家,你很难靠脑子记住"今天 OpenRouter 还剩几次"。有了它才能做到主动均衡——哪家快用满了就临时停用,把流量引到额度还充裕的平台,避免某一家被薅到触发风控。
使用
项目会给你生成一个统一的 API 密钥,之后你的各种 AI 应用只要配置这一个地址和这一个 key 即可:

如果给服务绑定一个域名再配合 HTTPS 反代,用起来会更方便(不用记 IP + 端口,也避免明文走 HTTP)。
关于第 2 点的"避免明文",值得多说一句:如果你通过公网用 http:// 访问这个网关,那你的统一 API Key 是明文在网络里传输的,中途任何一个节点都能抓走。一旦被抓到,别人就能拿着它消耗你的全部额度。所以只要走公网,就必须上 HTTPS(反代里配证书最省事)。局域网内用 HTTP 可以接受,但前提是你信任这个局域网。
常见问题与排错
1. 页面打不开 / 提示连接被拒绝
最常见的原因是 HOST_BIND 没改。默认配置只允许本机访问,你在自己电脑上输入 http://VPS的IP:3001 是连不上的,需要在 .env 里加一行 HOST_BIND=0.0.0.0 再 docker-compose up -d 重建。改完后记得确认服务器防火墙/安全组也放行了 3001。
2. 加了 key,点检查却不通过
按顺序排查:
key 有没有多余空格(从网页复制时最容易带上,前后各一个空格就会鉴权失败)
该平台的 key 是不是还没生效(部分平台新建 key 后要等几分钟)
该平台是否需要额外的 header 或项目 ID(有些平台的鉴权不只靠 key)
网络能不能通:如果这台 VPS 在境内,访问某些海外平台本身就不通,这跟 key 无关
3. 某家平台突然全部报错
先看额度面板。免费额度被用完或触发限流是最高频的原因,尤其晚高峰时段。临时把该平台停用,让请求走其他平台,隔天再看。
4. 想换机器 / 迁移
必须把 .env 里的 ENCRYPTION_KEY 和 freellmapi-data 这个 volume 一起带走。只带数据不带密钥,里面的 key 全是解不开的乱码,等于要重新配一遍。
结尾提醒
最后要注意一下各平台的策略,别在一家平台上薅得太狠,防止被封号。我的理解是多添加几个平台,每个平台适度薅,广撒网、细水长流,整体更稳:

和 OmniRoute 怎么选
同类项目里,我还写过 OmniRoute。两个都是"聚合网关",但性格不太一样:
FreeLLMAPI | OmniRoute | |
|---|---|---|
上手难度 | 低,界面直白 | 略高,面板功能多 |
内置免费平台 | 有,且带获取链接 | 50+ 家,含免鉴权平台 |
适合谁 | 只想"把几个 key 合起来用" | 想集中管理多个供应商、玩得深 |
我的建议:如果你只是嫌"每个应用都要配一遍 key"麻烦,选 FreeLLMAPI;如果你连注册申请 key 都嫌烦(OmniRoute 有几家免鉴权平台,添加账号时自动生成 key),或者想在一个地方管很多供应商,那就上 OmniRoute。
个人结论
如果你手头攒了好几个免费大模型的 API Key,又不想在每个应用里分别配一遍,FreeLLMAPI 这类聚合网关确实能省很多事——一个统一入口、一套统一 API、模型自动切换,把"多平台薅羊毛"的碎片整合成了可用的服务。它的易用界面和自带免费模型获取链接,对小白尤其友好。
唯一要守住的是别在同一家超限滥刷,以及部署时记得改掉默认的加密密钥、别把服务裸奔在公网。整体值得一试。