Metapi 的所有数据存储在 data/ 目录下的 SQLite 数据库中。最简单的备份方式:
# 手动备份
cp -r data/ data-backup-$(date +%Y%m%d)/
# 自动备份(crontab)
0 2 * * * cp -r /path/to/metapi/data/ /path/to/backups/metapi-$(date +\%Y\%m\%d)/建议:
- 每日自动备份一次
- 保留最近 7~30 天
- 备份文件不要提交到 Git
在管理后台 → 「导入/导出」页面:
- 全量导出:站点、账号、Token、路由、设置
- 仅账号:站点和账号信息
- 仅偏好:设置和通知配置
导出为 JSON 文件,可用于跨实例迁移。
# 1. 停止容器
docker compose down
# 2. 替换数据目录
rm -rf data/
cp -r data-backup-20260228/ data/
# 3. 重新启动
docker compose up -d在管理后台 → 「导入/导出」页面上传之前导出的 JSON 文件。系统会自动校验数据完整性。
# 查看实时日志
docker compose logs -f
# 查看最近 100 行
docker compose logs --tail 100
# 只看错误
docker compose logs -f 2>&1 | grep -i errornpm run dev
# 日志直接输出到终端| 关键词 | 含义 | 处理方式 |
|---|---|---|
auth failed |
上游站点鉴权失败 | 检查账号凭证是否过期 |
no available channel |
路由无可用通道 | 检查 Token 是否同步、通道是否被冷却 |
notify failed |
通知发送失败 | 检查通知渠道配置 |
checkin failed |
签到失败 | 检查账号状态和站点连通性 |
balance refresh failed |
余额刷新失败 | 检查账号凭证 |
# 检查服务是否响应
curl -sS http://localhost:4000/v1/models \
-H "Authorization: Bearer <PROXY_TOKEN>" | head -5
# 检查特定模型可用性
curl -sS http://localhost:4000/v1/chat/completions \
-H "Authorization: Bearer <PROXY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"ping"}]}'- 定时请求
/v1/models,检查返回状态码和模型数量 - 定时抽样请求
/v1/chat/completions,检查端到端可用性 - 监控磁盘空间(SQLite WAL 日志可能增长)
- 监控 Docker 容器状态
代理日志会持续增长。如果磁盘空间紧张,可在管理后台 → 代理日志页面清理历史记录。
如果账号状态异常(unhealthy),可以在账号管理页面:
- 点击「刷新」重新检测账号健康状态
- 如凭证过期,系统会尝试自动重登录
- 手动禁用/启用账号
在管理后台手动触发:
- 余额刷新:立即更新所有账号余额
- 模型刷新:重新发现所有上游模型
- 签到:立即执行一次签到
如果你在本地开发并准备发布:
-
npm test通过 -
npm run build通过 -
.env、data/、tmp/未提交到 Git - 敏感凭证已从代码中移除