在隔离环境恢复服务器
项目现名「聊记」;历史安装器及合成图示可能显示旧名「留痕」。界面请对照适用版本。
本页目录
前置条件
- 选定已深校验备份 ID,并保存对应源码和版本。
- 备份读凭据、附件端点/桶/区域及凭据能在独立位置取得。
- 使用新主机或独立项目、新空卷,不挂载生产卷。
起点:隔离目录 deploy/self-hosted,.env 使用独立项目名和回环端口。
初始化恢复环境
- 编辑独立项目名和端口,核对卷未被任何生产或旧演练使用。
- 显式构建并初始化信任链与空卷:
docker compose --env-file .env build api cert-init data-init docker compose --env-file .env run --rm cert-init docker compose --env-file .env run --rm data-init - 核对目标为空、凭据文件允许 UID 10001 读取。
- 预期:有 CA bundle 与空恢复目标;不要先启动 API 或 provision。
使用临时读配置恢复
起点:空 api_data 卷,API 尚未启动。
- 临时配置放 /tmp/boot,恢复写入空目标:
使用自己的目标信息和已核验备份 ID;周/月备份增加对应 --tier。docker compose --env-file .env run --rm \ -e CHAT_ARCHIVE_DATA_DIR=/tmp/boot \ -v "$PWD/restore-secrets:/cred:ro" api sh -ec ' mkdir -p /tmp/boot python -m chat_archive.server.cli backup config-set \ --endpoint https://cos.ap-nanjing.myqcloud.com \ --bucket YOUR_BACKUP_BUCKET --region ap-nanjing --prefix backup \ --secret-id-file /cred/id --secret-key-file /cred/key python -m chat_archive.server.cli backup restore \ --backup-id YOUR_VERIFIED_BACKUP_ID --target /var/lib/chat-archive ' - 启动隔离 API,检查回环健康;需要网页登录时使用受控 HTTPS 入口。
- 根据恢复提示重设网页认证、重填对象存储与备份凭据。
- 预期:消息恢复,搜索后台重建;旧加密凭据不可直接使用。
- 核验备份
- 独立项目空卷
- 临时读配置
- 恢复
- 认证与附件核对
验证
对象存储 endpoint、bucket、region 必须与恢复库原值逐字一致; 额外斜杠也可能推进存储代号,让旧附件不可用。 核对计数、已知正文、附件读取、索引状态与重新启用的备份。
历史合成恢复见版本与验证边界;本手册基线核对时未执行恢复、访问真实桶或异地演练。 历史演练时间不是当前 RTO 保证,验证后不自动切换生产。
失败时
非空目标停止,不通过删目录强行重试。config-set 会写 backup.sqlite, 所以必须与空恢复目标分开。CA、凭据和代号问题先解决根因; 生产切换与回退见服务器运维。