metapi自部署记录
本文由AI生成,仅作部分细节修改。
1.部署 Metapi
创建目录:
mkdir -p ~/metapi/data
cd ~/metapi
创建:
nano docker-compose.yml
写入:
services:
metapi:
image: 1467078763/metapi:latest
container_name: metapi
ports:
- "127.0.0.1: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: 4000
DATA_DIR: /app/data
TZ: Asia/Shanghai
restart: unless-stopped
这个配置基本遵循项目官方 Docker Compose 配置,不过我做了一个非常重要的安全修改:
127.0.0.1:4000:4000
而不是官方示例里的:
4000:4000
2.生成两个强 Token
生成两个强Token,用env保存到docker环境变量
AUTH_TOKEN=$(openssl rand -hex 32)
PROXY_TOKEN=$(openssl rand -hex 32)
printf "AUTH_TOKEN=%s\nPROXY_TOKEN=%s\n" \
"$AUTH_TOKEN" "$PROXY_TOKEN" > .env
chmod 600 .env
查看:
cat .env
会得到:
AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PROXY_TOKEN=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
其中:
AUTH_TOKEN
是你登录 Metapi 管理后台用的。
而:
PROXY_TOKEN
是以后 Codex、OpenWebUI、Cherry Studio 或其他 OpenAI 客户端调用 Metapi 时使用的 API Key。项目文档也是这样定义这两个变量的。
千万不要把 .env 上传 GitHub。
3.启动 Metapi
执行:
cd ~/metapi
docker compose pull
docker compose up -d
查看:
docker compose ps
应该类似:
NAME STATUS PORTS
metapi Up 127.0.0.1:4000->4000/tcp
注意这里最关键的是:
127.0.0.1:4000
而不是:
0.0.0.0:4000
测试:
curl http://127.0.0.1:4000
或者:
curl -sS -o /dev/null -w "%{http_code}\n" \
http://127.0.0.1:4000/
只要出现:
200
或者正常 HTTP 响应,就说明 Docker 这一层好了。
查看日志:
docker logs -f metapi
4.不要开放4000端口
检查:
sudo ss -lntp | grep 4000
你应该看到类似:
127.0.0.1:4000
而不是:
0.0.0.0:4000
如果之前 UFW 开放过:
sudo ufw status numbered
删除对应 4000 规则:
sudo ufw delete allow 4000/tcp
5.日常更新 Metapi
项目官方升级方式就是:
cd ~/metapi
sudo docker compose pull
sudo docker compose up -d
sudo docker image prune -f
持久化数据在:
~/metapi/data
因为容器内部 /app/data 已经映射出来,所以重新创建容器不会把数据一起删除。项目官方也明确要求持久化 /app/data。
更新之前可以:
cd ~/metapi
tar -czf metapi-backup-$(date +%F-%H%M).tar.gz data
这样出问题方便恢复。
6.日常使用
最常用的日常操作
你其实记住这 5 个就够了:
cd ~/metapi
# 开启
sudo docker compose up -d
# 关闭
sudo docker compose stop
# 重启
sudo docker compose restart
# 状态
sudo docker compose ps
# 日志
sudo docker compose logs -f metapi
另外你配置里有:
restart: unless-stopped
所以服务器重启后,Metapi 会自动启动。
如果你手动执行过:
sudo docker compose stop
那么 Docker 不会因为这个重启策略立刻再次拉起它;你之后手动执行:
sudo docker compose up -d
即可恢复。