banner
约 2,100 字
7 分钟

部署OmniRoute免费AI网关一键反代opencode实现tokens自由

摘要

OmniRoute 是一个支持 50 多家免费模型供应商的大模型 API 服务平台,其中 OpenCode 和 mimocode 免鉴权。本文介绍如何使用 Docker Compose 部署该服务。步骤包括登录设置密码、添加免鉴权提供商 OpenCode free、创建统一 API 密钥。使用时需解析域名,在 Agent 中配置自定义模型,接口地址为 `http://域名/V1`,模型名称为 `auto`。项目功能丰富,适合需要统一接口的开发者。

前言

玩大模型 API 的朋友,应该都遇到过"供应商太多、每个都要注册、每个鉴权方式还不一样"的麻烦。要是能有一个统一的入口,把所有供应商都接进去,用一套 API 就能随意切换调用,那该多省心。

OmniRoute 就是干这个的——它是一个大模型 API 服务平台(网关),可以添加各大模型供应商,统一用一套 API 接口访问,方便各种 AI 应用调用。

它最吸引我的一点是:内置了 50 多家免费平台,其中 opencode 和 mimocode 的免费 token 还是免鉴权的,用起来非常省事——不用注册、不用填一堆 Key。本文就记录一下怎么用 Docker 部署它,并重点演示如何反代免鉴权的 opencode,让 OpenCode 这类工具直接白嫖到可用的模型端点。

项目地址:https://github.com/diegosouzapw/OmniRoute

说明:OmniRoute 功能很多,本文只讲"反代免鉴权 opencode"这条最常用的路径。如果你想要更简单的方案,可以参考我之前介绍的 FreeLLMAPI 那篇。

先搞懂"免鉴权"是什么意思

这是全文最需要先理解的概念,因为它直接决定了这套方案能用来干什么、不能用来干什么

平时接入一个模型平台,流程是:注册账号 → 申请 API Key → 把 Key 填进你的工具。Key 的作用是标识"这次调用是谁发出的",以便计费和限流

"免鉴权"指的是:这个端点根本不需要 Key 就能调用。 一般有两种来源:

  1. 平台自己开放的公开测试端点——为了让开发者在注册前就能试效果,故意不校验身份

  2. 项目方/社区托管的共享端点——某个人或组织自己垫付了费用,把它开放出来给大家用

所以"免鉴权"的代价你必须心里有数

优点

代价

零门槛,不用注册不用填 Key

稳定性没有承诺——开放方随时可能关停

立刻能用,省去申请流程

可能有隐性速率限制,高峰期容易失败

适合快速验证、临时救急

数据去向不明——你的请求内容经过了谁的服务器,不清楚

我的建议很明确:免鉴权端点用来"试"和"临时救急",不要用来跑"不能失败"的事情,更不要拿它处理任何敏感内容。 要稳定用,还是老老实实申请自己的 Key(免费大模型 API 资源汇总那篇里整理了一大批),填进网关里。

部署

采用 docker compose 的方式部署,最省心。

新建一个 docker-compose.yml,内容如下:

纯文本
services:
  omniroute:
    image: diegosouzapw/omniroute:latest
    container_name: omniroute
    restart: unless-stopped
    stop_grace_period: 40s
    ports:
      - "20128:20128"
    volumes:
      - omniroute-data:/app/data

volumes:
  omniroute-data:

然后在 docker-compose.yml 所在目录执行:

纯文本
docker compose up -d

等镜像拉取并启动完成即可。

Docker 部署 OmniRoute

这份配置里有两行容易被忽略但值得知道

stop_grace_period: 40s —— 这是"优雅停机"的等待时间。容器收到停止信号后,Docker 不会立刻杀掉它,而是等最多 40 秒让它把手头正在处理的请求做完。为什么这里特意设长了:大模型的响应本来就慢,一个请求可能跑十几秒。如果按默认的 10 秒就强杀,正在生成的回复会直接断掉。所以这类"代理型"服务都建议把宽限期调大。

omniroute-data:/app/data —— 数据卷,存的是你配置的供应商、账号、统一 API Key。别删,删了等于重头配一遍。

另外,ports 直接映射到 20128:20128,意味着容器端口直接暴露在宿主机上。如果你的服务器有公网 IP,这一步之后 OmniRoute 就已经可以被外部访问了。所以第 1 步的密码一定要设,且别用弱密码——它是这套服务唯一的门。

教程

第 1 步:访问管理页面并设置密码

部署完成后,浏览器访问:

纯文本
http://服务器ip:20128

首次登录时,平台会提示你先设置一个登录密码,设置好之后用它登录后台。

首次登录设置密码

第 2 步:添加"免鉴权"提供商

登录后台后,进入添加提供商的入口。重点关注**"免鉴权提供商"(也叫"无需凭证的开放端点")这一类——它们无需注册、立即就能用**,正是我们想要的。

添加免鉴权提供商

第 3 步:选择 OpenCode free

在免鉴权列表里,找到 OpenCode free(或 mimocode free),点进去添加。点 添加账号 后,平台会自动帮你生成一个 key,不用你手动填任何凭证。

选择 OpenCode free 并自动生成 key

这就是"免鉴权"的方便之处——不用注册、不用自己去申请 Key,平台全自动生成。

这里要注意一个概念上的区分:网关自动生成的这个 key,是网关自己发给你的"门禁卡",不是上游平台的凭证。也就是说——它在网关内部标识"这是本机的一个通道",上游那次调用其实是不带凭证的。所以这个 key 泄露的后果是"别人能通过你的网关消耗额度",而不是"别人拿到了你的账号"。 风险级别不同,但依然要保管好。

第 4 步:创建统一 API 密钥

添加完账号后,进入 API 管理,创建一个统一的 API 密钥。这个 key 就是你之后给各种 AI 应用用的"统一入口凭证"。

在 API 管理创建统一 API 密钥

"账号"和"API 密钥"是两层,很多人会在这里绕晕:

  • 提供商账号 = 网关去连上游用的(比如那个免鉴权的 OpenCode free 端点)

  • 统一 API 密钥 = 你的应用来连网关用的

所以调用链是:你的应用 → (统一密钥)→ OmniRoute → (上游凭证或无凭证)→ 模型平台。改上游只动第一层,应用侧不用改——这就是网关的核心价值。

使用

到这一步,网关就配好了。接下来是怎么让 OpenCode 这类 agent 用上它。

  • (推荐)给服务解析一个域名:为了方便长期使用,建议给这台服务器的 OmniRoute 服务绑定一个域名,免得老记 IP 和端口。

  • 在自己的 agent 里添加模型,选择"自定义模型"

  • 接口地址填写:http://服务器ip(或域名)/v1

  • 模型名称填写:auto

这样设置后,你的 agent 就会通过 OmniRoute 这个网关,自动路由到后端接好的(免鉴权的 opencode 等)模型上。

配置 agent 接入 OmniRoute 网关

关于地址里的 /v1 和模型名 auto,各有一个知识点

  • /v1 是 OpenAI 兼容接口的约定路径。几乎所有"支持自定义 API 地址"的工具,都会在你填的 Base URL 后面自动拼 /chat/completions 之类。所以Base URL 必须填到 /v1 为止,不能多也不能少——填成根目录会变成请求一个不存在的地址,填到 /v1/chat 又会拼重复。这是接网关时最高频的报错来源。

  • auto 是让网关自己决定用哪个上游(前面说的"路由")。如果你指定一个具体模型名,网关就会去找支持该模型的上游。

如果打算长期用,务必上 HTTPS:走 http:// 的话,你的统一 API Key 是明文在网络里传输的,中途节点都能抓走。反代配个证书最省事。

常见问题与排错

1. 访问 http://ip:20128 打不开

  • 确认容器已启动(docker compose ps)。

  • 确认服务器防火墙/安全组放行了 20128 端口。

  • 如果服务器有公网 IP 但你只想内网访问,其实不该直接映射端口,应该绑到 127.0.0.1 再用反代转发——这样即使忘了改密码也不会被人从公网撞进来。

2. agent 连不上 / 报接口错误

  • 确认接口地址写的是 /v1(注意是 v1 小写),且 ip/域名能访问。

  • 确认统一 API key 填对了。

  • 确认模型名写的是 auto(或上游确实存在的模型名)。模型名拼错时,有些工具报的错很含糊,容易被误判成网络问题。

3. 昨天还能用,今天全报错

大概率是免鉴权上游挂了或被限流了。这类端点没有可用性承诺,出问题很正常。处理办法是在后台再加一个带自己 Key 的供应商(比如 OpenRouter),让 auto 有备选可路由。

4. 想要更多供应商

OmniRoute 内置 50 多家免费平台,都可以在后台添加,不止 opencode。按需加即可。

我的结论

用下来,OmniRoute 这种"统一网关"的思路确实省心——把多个供应商收拢到一个入口,以后想换模型,后台加个供应商就行,agent 那边不用动。尤其它内置那么多免鉴权的免费平台,对想白嫖模型额度、又不想逐个注册申请 Key 的朋友非常友好。

不过它功能确实比较多,面板左侧的工具栏一眼看过去还挺唬人,要完全用好需要花点时间研究。如果你只是想要一个"简单、能用"的方案,不一定非要上 OmniRoute——像 FreeLLMAPI 那种更轻量的方案可能更适合你:界面直白、部署快,也自带免费模型获取链接。

两者怎么选,我总结一下:

FreeLLMAPI

OmniRoute

上手

简单,几分钟能跑通

功能多,要花点时间摸

免鉴权上游

(不用注册就能用)

适合

手上有几个 Key,想合起来用

想集中管理多家、连注册都嫌烦

如果你玩得比较深、想在一个地方管理多个模型供应商,那 OmniRoute 值得一试,按上面的步骤十几分钟就能跑起来。但请记住开头那句:免鉴权端点只当"临时资源"用,别把正经业务压在它身上。

最后补一句:网关解决的是"统一入口",它不解决"这家平台到底给不给你用"。如果你更关心的是怎么在具体某个客户端上白嫖到能跑图、能跑视频的额度,那是另一条路子——我在 国内不限期免费使用 Codex 方案 那篇里写过一套完整做法。两者不冲突:网关负责把供应商收拢,客户端配置负责把额度用起来。

END