rakazo 升级前怎么备份、升级坏了怎么回滚

rakazo 还在 beta,升级有改配置格式的可能。所以顺序永远是:先备份、再升级、验不过就回滚。下面这套流程是我们在真机上完整跑通过的:数据库整库删掉再灌回,账号、记忆与沙箱文件全恢复,全程约 2 分钟。

第 1 步:升级前做两份备份

数据库备份(以 部署教程第 4 步 的命令为准):

docker exec rakazo-postgres-1 sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB"' | gzip > backup-with-bot.sql.gz

我们实测:空库备份约 40 KB,带一个 bot 的备份约 54 KB,备份不到 5 秒。备份完先确认文件在、且大小不是 0,再动手升级。

同时另存 .env:数据库备份不包含 .env 里的 ENCRYPTION_KEY,丢了不可恢复。把 .env 复制到你自己的密码管理器或离线位置,不要发给任何人。

第 2 步:升级

重跑官方安装脚本(只用官方仓库 elie222/rakazo 的脚本,不要用第三方改版)。升级完不要只看登录页能打开,接着做第 3 步的冒烟测试。

第 3 步:冒烟测试(升级后、回滚后都要做)

  1. 登录 owner 账号正常;
  2. 问 bot 一句它之前记住的东西(我们实测用的是暗号 BANANA-42,回滚后问 What was my code word? 答对了才算记忆真的回来了);
  3. 让 bot 用电脑做一件小事(例如列出文件、建一个测试文件),确认工具调用与沙箱正常;
  4. 外网 https 地址能打开、返回正常。

任何一项不过,就进入回滚,不要在坏状态上继续修修补补。

第 4 步:回滚(实测过的顺序)

  1. 停掉 web / api / worker / supervisor 与 bot 电脑服务;
  2. 用 dropdb / createdb 重建数据库;
  3. 把升级前的备份灌回数据库;
  4. 重跑一次官方安装脚本,重启服务;
  5. 重做第 3 步的冒烟测试。

我们实测的回滚结果:账号数回到 1 个,暗号在恢复后的数据库里仍在,沙箱里的测试文件完好,本机与外网 https 均正常。

最容易踩的坑:数据库备份 ≠ 沙箱文件备份

我们实测中,bot 建的测试文件能恢复,是因为它存在独立的 appdata 卷里,而回滚时没有删卷。数据库备份只恢复账号、对话与记忆,不恢复沙箱文件。所以回滚时:只重建数据库,不要删数据卷;如果你要换机器迁移,appdata 卷要另外单独备份。

不要在没备份时删库、删卷或重装:删卷后沙箱文件不可恢复;重装前没有 .env,加密数据也可能读不回来。

更新(2026-10-25):真跨版本升级已验证通过

2026-10-25 官方发布新构建后,我们在同一台服务器上补测了真跨版本升级:升级前先按本页流程做了全量备份(55 KB、84 张表),然后拉取新镜像重建服务。结果一次通过:账号数、bot 数、消息数与升级前完全一致,外网访问正常,升级后当场问 bot,它仍记得升级前的暗号。也就是说上面这套「备份→升级→冒烟测试」的流程已经在一次真实版本跳跃中完整跑通;beta 期版本之间仍可能出现个案问题,这正是每次升级前都要先备份的原因。

不想自己走这套流程:代部署服务的交付里包含升级前备份与冒烟测试;升级翻车时按上面同样的回滚流程处理。

基于 2026-10-24 的真机实测整理;官方迭代很快,命令与界面如有出入以官方文档为准。