全部文档
06DOCS / 产品文档
部署与升级
自托管怎么起、升级前备份什么、出问题怎么退回去。
Tanumo 后台默认装在你自己的服务器上。镜像由我们构建并推送到服务器上的私有 registry,服务器只负责运行,不编译代码。
服务器上有什么
一套 Docker Compose 会起这些服务:
| 服务 | 作用 |
|---|---|
| web | 后台静态资源 + 容器内 nginx,反代 /api、/socket.io、/uploads |
| api | NestJS 接口 |
| worker | 队列消费进程,没有 HTTP 端口 |
| migrate / seed | 跑数据库迁移和初始化,跑完即退,可重复执行 |
| postgres | 数据库 |
| redis | 缓存和队列 |
| registry | 私有镜像仓库,只绑服务器回环 |
外层再用宿主机的 nginx 或 Caddy 做域名和 HTTPS。
首次部署
- 服务器装 Docker(含 Compose),准备一个能解析到你服务器的域名。
- 填
.env.selfhosted:PUBLIC_URL、DATABASE_URL、REDIS_URL、PostgreSQL 密码、两个 JWT 密钥、首次超级管理员密码、各镜像的版本 tag。 - 启动 compose。启动顺序是 migrate → seed → api / worker → web,迁移和初始化都是幂等的。
- 访问
/health,确认返回的版本号是这次要发的版本。 - 配好外层代理,必须挂 TLS。生产环境的登录 cookie 带
Secure,纯 http 登录不进。
密钥用 openssl rand -base64 48 生成,不要用短字符串,也不要把 .env.selfhosted 提交到仓库。
升级
升级只改 .env.selfhosted 里对应镜像的 tag,然后重新 up -d。顺序不能反:
- 先备份:数据库、上传文件、旧日志。
- 改镜像 tag(api / web / seed 各自有 tag)。
docker compose up -d,compose 只会重建 tag 变了的服务。- 看
/health的版本号和日志,确认没有反复重启。 - 在后台点一遍关键页面:登录、列表、上传、授权状态。
回滚
把 tag 改回上一个版本,再 up -d。数据库迁移通常向前兼容一个版本;如果这次迁移改了结构,回滚时要同时恢复升级前的数据库备份。备份文件和部署记录会留在部署目录里,出问题先看记录,不要靠记忆。
日常维护
- 日志按大小轮转,不会把磁盘写满。
- 每个服务有内存和 CPU 上限,单个服务跑飞不会拖死整机。
- registry 里保留发过的版本,回滚不需要重新构建。
- 备份要定期拉到另一台机器或对象存储;只留在同一块磁盘上不算备份。