本文档帮助你在 10 分钟内完成 Metapi 的首次部署。
按你的使用场景准备对应环境:
| 场景 | 推荐方式 | 需要准备 |
|---|---|---|
| 云服务器 / NAS / 家用主机长期运行 | Docker / Docker Compose | Docker 与 Docker Compose |
| 免费云部署(24h 在线) | Render + TiDB + UptimeRobot | 注册 Render / TiDB Cloud / UptimeRobot 免费账号,详见 Render 部署指南 |
| 个人电脑本地使用 | 桌面版安装包 | 从 Releases 下载对应系统的桌面安装包 |
| 二次开发 / 调试 | 本地开发 | Node.js 20+ 与 npm |
Note
- 当前不再把
Release压缩包 + Node.js 运行时作为独立部署路径。 - 想直接运行成品,请用 Docker 或桌面版;想改代码,请走本地开发流程。
mkdir metapi && cd metapiservices:
metapi:
image: 1467078763/metapi:latest
ports:
- "4000:4000"
volumes:
- ./data:/app/data
environment:
AUTH_TOKEN: ${AUTH_TOKEN:?AUTH_TOKEN is required}
PROXY_TOKEN: ${PROXY_TOKEN:?PROXY_TOKEN is required}
CHECKIN_CRON: "0 8 * * *"
BALANCE_REFRESH_CRON: "0 * * * *"
PORT: ${PORT:-4000}
DATA_DIR: /app/data
TZ: ${TZ:-Asia/Shanghai}
restart: unless-stopped# AUTH_TOKEN = 管理后台初始管理员令牌(登录后台时输入这个值)
export AUTH_TOKEN=your-admin-token
# PROXY_TOKEN = 下游客户端调用 /v1/* 使用的令牌
export PROXY_TOKEN=your-proxy-sk-token
docker compose up -d打开 http://localhost:4000,使用 AUTH_TOKEN 的值登录。
Tip
初始管理员令牌就是启动时配置的 AUTH_TOKEN。
如果未显式设置(非 Compose 场景),默认值为 change-me-admin-token(仅建议本地调试)。
若你在后台「设置」里修改过管理员令牌,后续登录请使用新令牌。
如果你是在个人电脑上本地使用,请直接下载桌面版安装包:
- 打开 Releases 下载与你系统匹配的桌面安装包
- 安装并启动 Metapi Desktop
- 桌面壳会自动启动本地服务并保存数据,无需手动准备 Node.js 环境
Linux 安装包选择建议:
- Fedora / RHEL / CentOS / openSUSE 优先下载
.rpm - Debian / Ubuntu / Linux Mint 优先下载
.deb - 其他发行版或想免安装直接运行时,可下载
.AppImage
| 项目 | 说明 |
|---|---|
| 管理界面 | 应用启动后会直接打开桌面窗口,不需要假设固定的 http://localhost:4000 |
| 本地后端地址 | 桌面版内置服务默认监听 0.0.0.0:4000;桌面窗口和本机 curl 可继续使用 http://127.0.0.1:4000,局域网其他设备请使用当前机器的实际 IP + 4000;如需改端口,可显式设置 METAPI_DESKTOP_SERVER_PORT |
| 数据目录 | 保存在 app.getPath('userData')/data,不是仓库里的 ./data |
| 日志目录 | 保存在 app.getPath('userData')/logs;托盘菜单提供 Open Logs Folder |
Important
桌面版首次启动时,如果你没有额外注入 AUTH_TOKEN,默认管理员令牌就是 change-me-admin-token。
首次登录后建议立即到「设置」里改成你自己的强密码令牌。
Tip
- Windows 下常见路径是
%APPDATA%\Metapi\data和%APPDATA%\Metapi\logs。 - 如果没有额外覆盖端口,本机其他客户端可以直接连接
http://127.0.0.1:4000。 - Linux 用户建议优先选原生包:Fedora 系列用
.rpm,Debian/Ubuntu 系列用.deb。
Warning
端口冲突排障: 桌面版默认使用 4000 端口;如果该端口被其他应用占用:
- 设置环境变量
METAPI_DESKTOP_SERVER_PORT=<指定端口>改到一个空闲端口 - 或关闭占用
4000的应用后重启 Metapi Desktop
Note
服务器部署统一推荐 Docker / Docker Compose,不再提供裸 Node.js 的 Release 压缩包。
git clone https://github.com/cita-777/metapi.git
cd metapi
npm install
npm run db:migrate
npm run dev- 前端地址:
http://localhost:5173(Vite dev server) - 后端地址:
http://localhost:4000 - 这是源码开发流程,不是免 Docker 的成品部署包
完成部署后,按以下顺序配置:
[!TIP] 从 ALL-API-Hub 迁移(可选) 如果你使用过 ALL-API-Hub,Metapi 兼容其导出的备份设置,可直接导入,无需手动逐项配置。
导入后刷新账号状态可能出现个别账号令牌过期,点击重新绑定按钮按照下面步骤2的方法获取Access Token或者Cookie等即可。
进入 站点管理,添加你使用的上游中转站:
- 填写站点名称(自己想怎么取就怎么取)和 URL
- 按你手上的上游形态选择:
- 有后台面板:
new-api/one-api/one-hub/done-hub/veloera/anyrouter/sub2api - 通用兼容接口:
openai/claude/gemini/cliproxyapi - 官方入口:直接在下拉里选对应官方预设,例如阿里云 / 智谱 / 豆包 Coding Plan,DeepSeek,Moonshot,MiniMax,ModelScope
- 有后台面板:
- 平台通常可自动检测;如果因为防护页、反向代理或特殊路径导致检测失败,再手动选择。
- 可选是否开启系统代理,方便国内机器访问国外中转站。
- 可选站点权重,站点权重越大,路由将更加频繁使用这个站点的模型。
- 如果这个站点的控制台 URL 和真实 API 请求地址不同,不要直接把主站点 URL 改掉,而是在表单下方补「API 请求地址池」。
Important
通用平台常见写法是填控制台地址或 provider base URL;但如果你选的是官方预设,请保留预设自动带出的完整路径,哪怕它本来就包含 /v1、/anthropic 或 /api/coding/...。
如果你不确定该选哪个平台或预设,先看 上游接入。
这一步不要再死记“所有站点都先加账号”。现在推荐按场景分流:
进入 连接管理中的账号管理,为每个站点添加已注册的账号:
适合这一分支的平台:
new-apione-apione-hubdone-hubveloeraanyroutersub2api
进入 连接管理中的 API Key 管理,为站点添加你的 API Key:
适合这一分支的平台:
openaiclaudegeminicliproxyapi- 所有官方预设(Coding Plan、DeepSeek、Moonshot、MiniMax、ModelScope 等)
如果你要接的是:
- Codex
- Claude provider 账号
- Gemini CLI
- Antigravity
那就不要在这里手填普通账号,而是直接去左侧菜单 OAuth 管理 完成授权,详见 OAuth 管理。
进入 连接管理中的账号令牌管理:
如果你走的是 API Key-only 或 OAuth 流程,这一步通常不是必需的。
进入 路由管理:
- 系统会自动发现模型并生成路由规则
- 点击右上角的刷新选中概率可以显示并将概率载入缓存中
- 可以手动调整通道的优先级和权重
- 关于路由权重参数调优,参考 配置说明 → 智能路由
- 左侧可以进行品牌、站点、接口等的筛选,如下图所示:
-
可以通过创建群组,从而对上游模型进行匹配和重定向,如果建立下图群组,下游访问Metapi时获取的claude-opus-4-6模型将在命中样本中智能选取,日志中可以看见映射。

-
可以在使用日志中看见下游的请求模型和实际分配给下游使用的模型
Metapi还有更多功能,可以在设置中寻找,请尽情探索,有建议可以提出Issue改进。
按运行方式选择验证入口:
| 运行方式 | 管理界面 | 代理接口基地址 |
|---|---|---|
| Docker / Docker Compose | http://localhost:4000 |
http://localhost:4000 |
| 本地开发 | http://localhost:5173 |
http://localhost:4000 |
| 桌面版 | 直接使用桌面窗口 | 默认 http://127.0.0.1:4000;如果设置了 METAPI_DESKTOP_SERVER_PORT,则按日志里的实际端口访问,局域网其他设备改用当前机器 IP + 同一端口 |
# 检查模型列表
curl -sS http://localhost:4000/v1/models \
-H "Authorization: Bearer your-proxy-sk-token"
# 测试对话
curl -sS http://localhost:4000/v1/chat/completions \
-H "Authorization: Bearer your-proxy-sk-token" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}'打开托盘菜单的 Open Logs Folder,在最新日志里查找类似下面的启动信息:
Dashboard: http://127.0.0.1:4000
Proxy API: http://127.0.0.1:4000/v1/chat/completions
如果你没有覆盖端口,可直接执行:
curl -sS http://127.0.0.1:4000/v1/models \
-H "Authorization: Bearer your-proxy-sk-token"如果你显式设置了 METAPI_DESKTOP_SERVER_PORT,再把上面的 4000 替换成日志里的实际端口。返回正常响应,说明代理链路已经可用。
如果你要从同一局域网的其他设备访问桌面版,把上面的 127.0.0.1 替换成这台电脑的实际局域网 IP,并确认系统防火墙已放行对应端口。








