logo
0
0
WeChat Login
fix(deploy): stdb-seed must be idempotent so `up -d` no longer wipes data

Seed2 API 部署

预构建镜像分发部署,无需在服务器上编译源码。

快速部署

1. 前置条件

  • Docker + Docker Compose
  • 三个域名已指向服务器 IP(API、Auth、Files)
  • 服务器开放 80/443 端口

2. 克隆仓库

git clone https://cnb.cool/fuliai/next_api.git
cd next_api

3. 配置

运行交互式配置脚本,按提示输入必填项即可自动生成 deploy.env

./deploy/setup-env.sh

脚本会依次询问:

  1. Public API hostname — 如 api.yourdomain.com
  2. Auth hostname — 如 auth.yourdomain.com
  3. Uploads hostname — 如 files.yourdomain.com
  4. Upstream API key — 上游 AI 服务的密钥,如 sk-xxx
    • Upstream base URL — 上游 AI 服务的基础 URL(可选,如 https://api.openai.com
    • Upstream query API key — poll-worker 查询密钥(回车则复用上面的 API key)
  5. Admin password — 管理员登录密码(≥6 位)
  6. Enable sign-up — 是否开启用户自助注册(默认开启)
  7. Asset service — 素材库服务地址和 Token(可选,留空则禁用素材库功能)
  8. Asset service token — 素材库令牌(填了地址后必填)
  9. ACME email — TLS 证书申请邮箱(可选,默认 acme@localhost

其余 URL 和密钥全部自动生成,无需手动填写。

4. 启动

docker compose -f deploy/docker-compose.release.yml --env-file deploy.env up -d

5. 验证

docker compose -f deploy/docker-compose.release.yml --env-file deploy.env ps
curl -fsS https://api.yourdomain.com/readyz

6. 更新

git pull
docker compose -f deploy/docker-compose.release.yml --env-file deploy.env pull
docker compose -f deploy/docker-compose.release.yml --env-file deploy.env up -d

数据安全:stdb-seed init 容器从该版本起默认 幂等SEED2_SEEDER_MODE=if-empty,见 deploy/deploy.env.example)。当 STDB 中已经有任意用户 profile 时,它会自动跳过,不会再覆盖你的运营数据(用户、积分、proxy key、任务、账单等)。需要主动重置开发/验证环境时,把 SEED2_SEEDER_MODE 改成 forceup -d

如果 stdb-publish 在升级时以下面这种错误退出:

Errors occurred:
Adding a column <name> to table <table> requires a default value annotation

Aborting publish due to required manual migration.
Error: Aborting because publishing would require manual migration or deletion of data and --delete-data was not specified.

说明这次新版本的 STDB 模块 schema 跟你服务器上现存数据不兼容,stdb-publish 已经主动 abort 以避免静默清掉你的真实数据(任务、账户、proxy key、账单记录等)。处理方式按你这台部署的数据敏感度选:

  • 生产环境 / 数据要保留:先备份当前 STDB 状态,然后等仓库给该列补上默认值 annotation 的新版本镜像再升级。

    ./deploy/backup-stdb-state.sh
    
  • 开发 / 演示 / 可以重置的环境:清掉 STDB 卷重新发布、重新 seed(会丢失现存任务和账户,操作前自行确认)。

    docker compose -f deploy/docker-compose.release.yml --env-file deploy.env down --remove-orphans
    docker volume rm deploy_spacetimedb_data deploy_stdb_cli_config
    docker compose -f deploy/docker-compose.release.yml --env-file deploy.env up -d
    

About

No description, topics, or website provided.