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

即可恢复。