ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Chatto备份与恢复完全指南:age加密、密钥分离与灾难恢复清单

Chatto备份与恢复完全指南:age加密、密钥分离与灾难恢复清单 Chatto备份与恢复完全指南age加密、密钥分离与灾难恢复清单【免费下载链接】chattoA fully-featured team and group chat application that you can easily selfhost.项目地址: https://gitcode.com/gh_mirrors/chatt/chattoChatto 是一款功能完整、可以自托管的团队与群组聊天应用。这篇指南带你从零掌握Chatto 备份与恢复用一条命令打包全部数据、用 age 加密保护归档、正确分离加密密钥并给出一份可直接抄作业的灾难恢复清单确保磁盘故障时团队聊天记录一条都不丢。Chatto 备份包含哪些数据Chatto 把所有核心状态存在 NATS JetStream 里chatto backup会把这些持久化数据打包成一个.tar.gz归档包括服务器数据—— 用户、角色权限、房间、消息、线程、表情回应、消息正文通话事实—— 房间通话的开始/加入/结束事件用于恢复进行中通话NATS 侧资源—— 头像、服务器图标与横幅、消息附件投影快照—— 启用core.projection_snapshots时的加密派生状态同时以下数据会被有意排除数据排除原因加密密钥默认排除除非--include-keys防止数据归档被偷后自解密用户在线状态临时数据运行时自动重建链接预览 / 资源缓存可随时重新生成S3 侧资源与快照体积大且生命周期独立需用 S3 自身的备份策略备份流程本身也很讲究快照先写入私有暂存目录最终归档以仅属主可读的权限原子性落盘失败的备份绝不会用半截文件覆盖你已有的归档见 backup.go 中的writeArchiveAtomically。一条命令创建备份chatto backup 快速上手备份时 Chatto 服务无需停止命令通过chatto.toml里的客户端配置连接 NATS 即可。推荐的最小自托管服务器「一体化」方案——加密归档 内置密钥恢复最不容易出错chatto backup -c chatto.toml --encrypt --include-keys执行后会提示你输入并确认口令生成的文件是带时间戳的backups/timestamp.tar.gz.age。Docker Compose 部署则跑一个一次性容器即可示例编排见 compose.ymldocker compose run --rm chatto backup --encrypt --include-keys 小提示如果你用的是chatto init生成的内嵌 NATS 配置NATS 默认只进程内运行、不开 TCP 监听。执行 CLI 备份前需在chatto.toml中为[nats.embedded]打开port与bind_address 127.0.0.1。age 加密详解口令从哪里来、去哪里--encrypt使用age这一现代文件加密格式整份归档端到端加密扩展名变为.tar.gz.age。关键在于口令输入方式——Chatto 拒绝把口令写在命令行参数里会泄漏进 shell 历史和进程列表只提供三种安全入口交互式提示手动运行时输入并确认--passphrase-file /run/secrets/chatto-backup-passphrase从受限权限文件读取适合定时任务--passphrase-stdin从标准输入显式读取适合对接密钥管理系统# 无人值守的定时备份 chatto backup -c chatto.toml --encrypt --include-keys \ --passphrase-file /etc/chatto/backup-passphrase -o /mnt/backups/chatto-daily.tar.gz.age由于采用标准 age 格式你还能用独立的age命令行工具验证、手动解密或更换口令重新加密——归档不绑定 Chatto永远不会被锁定。⚠️务必记住--include-keys意味着任何拿到归档的人都能解密全部消息正文与用户个人数据。凡是包含密钥的归档必须同时--encrypt并按敏感材料保管。密钥分离策略keys export 与 keys import默认备份不包含密钥加密记录KEK这是刻意设计数据归档被盗时攻击者无法解密其中的消息。代价是恢复时必须能找到配套密钥。两种方式按需选择方式一一体化备份推荐小型服务器chatto backup -c chatto.toml --encrypt --include-keys方式二数据与密钥分开保管纵深防御# 1. 备份数据不含密钥 chatto backup -c chatto.toml --encrypt -o data.tar.gz.age # 2. 单独导出 age 加密的密钥文件 chatto keys export -c chatto.toml -o keys.backup恢复时先还原数据再导入密钥chatto restore data.tar.gz.age -c chatto.toml chatto keys import keys.backup -c chatto.toml导入逻辑只写入不存在的密钥引用、从不覆盖已有记录因此可以安全重复执行实现见 keys.go。恢复步骤chatto restore 操作清单恢复前务必停掉 Chatto内嵌 NATS 场景下restore会自启一个临时 NATS 服务器写回数据外部 NATS 场景则停应用、保持 NATS 运行。# 1. 停止服务 docker compose stop chatto # 2. 恢复归档自动识别 age 加密并提示口令 docker compose run --rm chatto restore /backups/2026-09-04T12-00-00Z.tar.gz.age # 3. 重启 docker compose up -d chatto⚠️ 不要用docker compose down那会把 NATS 一起停掉。冲突处理通过--conflict控制详见 restore.go参数行为适用场景--conflicterror默认目标流已存在则直接失败全新服务器恢复--conflictskip跳过已存在的流部分恢复 / 合并--conflictoverwrite删除并重建已有流⚠️ 破坏性全量覆盖恢复还有内建安全边界拒绝符号链接等非常规文件、拦截路径穿越、限制条目数与解压体积防止畸形归档无限膨胀。另外保留相同的core.secret_key可以让可续期会话、OAuth 凭据等运行时凭据在恢复后继续有效换一个值则是灾难恢复时一次性作废所有旧凭据的干净手段。灾难恢复清单照抄就能上生产把下面这份清单贴在运维手册里频率活跃服务器每日备份是合理起点按你能容忍的数据丢失量调整保留常见模式是每日保留 14 天 每周保留 8 周数据与密钥文件用同一保留窗口异地备份放到与数据不同的卷或远端对象存储——同盘备份防不了磁盘故障加密存到共享/远端存储的备份一律--encrypt密钥一体化--include-keys或分离保管二选一但必须有答案演练定期在独立环境恢复一份备份验证口令有效、流程跑通S3若资源走 S3为其配置独立的备份与生命周期策略一个容易踩的坑备份不在账户删除流程之内。如果你恢复的旧备份里还包含某已注销用户的密钥该用户的加密消息会重新可读。请让备份保留策略与合规义务匹配见 backup-restore.mdx 中的详细说明。延伸阅读官方备份与恢复文档backup-restore.mdx功能需求文档FDR-040-backup-and-restore.md加密体系背景KEK/DEK 两级密钥与加密擦除encryption.mdxCLI 命令源码backup.go、restore.go、keys.go掌握「备份 → 加密 → 密钥分离 → 定期演练」这条主线你的 Chatto 服务器就能从容应对任何一次硬件故障。️【免费下载链接】chattoA fully-featured team and group chat application that you can easily selfhost.项目地址: https://gitcode.com/gh_mirrors/chatt/chatto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表