全部文档

06DOCS / 产品文档

部署与升级

自托管怎么起、升级前备份什么、出问题怎么退回去。

Tanumo 后台默认装在你自己的服务器上。镜像由我们构建并推送到服务器上的私有 registry,服务器只负责运行,不编译代码。

服务器上有什么

一套 Docker Compose 会起这些服务:

服务作用
web后台静态资源 + 容器内 nginx,反代 /api、/socket.io、/uploads
apiNestJS 接口
worker队列消费进程,没有 HTTP 端口
migrate / seed跑数据库迁移和初始化,跑完即退,可重复执行
postgres数据库
redis缓存和队列
registry私有镜像仓库,只绑服务器回环

外层再用宿主机的 nginx 或 Caddy 做域名和 HTTPS。

首次部署

  1. 服务器装 Docker(含 Compose),准备一个能解析到你服务器的域名。
  2. 填 .env.selfhosted:PUBLIC_URL、DATABASE_URL、REDIS_URL、PostgreSQL 密码、两个 JWT 密钥、首次超级管理员密码、各镜像的版本 tag。
  3. 启动 compose。启动顺序是 migrate → seed → api / worker → web,迁移和初始化都是幂等的。
  4. 访问 /health,确认返回的版本号是这次要发的版本。
  5. 配好外层代理,必须挂 TLS。生产环境的登录 cookie 带 Secure,纯 http 登录不进。

密钥用 openssl rand -base64 48 生成,不要用短字符串,也不要把 .env.selfhosted 提交到仓库。

升级

升级只改 .env.selfhosted 里对应镜像的 tag,然后重新 up -d。顺序不能反:

  1. 先备份:数据库、上传文件、旧日志。
  2. 改镜像 tag(api / web / seed 各自有 tag)。
  3. docker compose up -d,compose 只会重建 tag 变了的服务。
  4. 看 /health 的版本号和日志,确认没有反复重启。
  5. 在后台点一遍关键页面:登录、列表、上传、授权状态。

回滚

把 tag 改回上一个版本,再 up -d。数据库迁移通常向前兼容一个版本;如果这次迁移改了结构,回滚时要同时恢复升级前的数据库备份。备份文件和部署记录会留在部署目录里,出问题先看记录,不要靠记忆。

日常维护

  • 日志按大小轮转,不会把磁盘写满。
  • 每个服务有内存和 CPU 上限,单个服务跑飞不会拖死整机。
  • registry 里保留发过的版本,回滚不需要重新构建。
  • 备份要定期拉到另一台机器或对象存储;只留在同一块磁盘上不算备份。

下一步:看AI 与接入,或更新记录。