Matrix 使用 BorgBackup 自动备份

最近两天cloudcone的Virtualizor被黑,导致用户vps数据被加密/删除并受到勒索。我有一个吃灰的小鸡,不知道为什么我没有收到通知邮件。

我目前没有定时备份的、丢失数据后最恶心的估计就是matrix了,而且我部署matrix使用的vps商家也是用Virtualizor的。搜索后发现可以使用borg备份。borg算一种类似timemachine的增量备份,并且可以通过二进制文件在虚拟主机运行,看起来方便且划算。

1. 在备份机下载borg

mkdir borg
cd borg
wget -O borg https://github.com/borgbackup/borg/releases/download/1.4.3/borg-linux-glibc231-x86_64
chmod +x borg
./borg --version

2. 在matrix vps 保存ssh信息

生成一个sshkey,不需要passphrase

ssh-keygen -t ed25519

认证一次

ssh-copy-id -p 端口 -i ~/.ssh/id_ed25519.pub 用户名@存储vpsip

获取私钥,之后放到ansible的vars.yml

cat /root/.ssh/id_ed25519

3. 在ansible机添加borg配置

nano inventory/host_vars/matrix.你的域名.com/vars.yml

在末尾附加以下内容,使用 openssl rand -base64 32 生成需要的密码

# ==========================================
# 异地备份配置 (BorgBackup) - 添加到文件末尾
# ==========================================

backup_borg_enabled: true

# 备份仓库地址
# 格式语法: ssh://用户名@IP:端口/./相对路径
# 这里配置为存放在 matrixbackup 用户主目录下的 matrix-backup 文件夹中
backup_borg_repositories:
  - path:"ssh://matrixbackup@123.45.67.89:23432/./matrix-backup"
    label: "123123"  # (可选) 给仓库起个标签,方便看日志

# Borg 加密密码 (非常重要!)
# 这是你的"最后一道防线"。即使黑客攻破了你的备份服务器,没有这个密码也无法还原数据。
# 请务必生成一个随机字符串并保存到你的 1Password/Bitwarden 中。
backup_borg_storage_encryption_passphrase: "这里填写一个复杂的随机密码不要用123456"

# 备份计划 (默认是每天凌晨),这里可以不改,使用默认即可
# backup_borg_schedule: "*-*-* 04:00:00"

# 自动修剪策略 (默认保留最近7天,4周,6个月) 半年生成大概15个备份点
backup_borg_prune_keep_daily: 7
backup_borg_prune_keep_weekly: 4
backup_borg_prune_keep_monthly: 6

# 忽略 SSH 指纹检查 (为了自动化方便,建议加上此行)
# 加上这个参数后,Ansible 第一次连接备份服务器时不会询问 "Are you sure..."
backup_borg_ssh_extra_args: "-o StrictHostKeyChecking=no"

# 填入你刚才 cat 出来的私钥内容
# 注意:
# 1. 竖线 "|" 后面不能有字符
# 2. 密钥内容的每一行必须比 "backup_borg_ssh_key_private" 多缩进两个空格
backup_borg_ssh_key_private: |
  -----BEGIN OPENSSH PRIVATE KEY-----
  b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
  QyNTUxOQAAAC... 
  ...
  ...tCAF+C5v/Q==
  -----END OPENSSH PRIVATE KEY-----

运行部署

ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start

4. 在matrix服务器测试

运行一次备份任务进行测试

# 进行一次备份
systemctl start matrix-backup-borg.service

# 查看日志
journalctl -fu matrix-backup-borg.service

# 查看下次运行时间
systemctl list-timers matrix-backup-borg.timer

# 查看已有的备份数量
/matrix/backup-borg/bin/borgmatic list

# 查看具体的备份信息
/matrix/backup-borg/bin/borgmatic info --archive matrix-2026-01-31-12345
图片[1]-Matrix 使用 BorgBackup 自动备份-THsInk

5. 恢复备份

还未尝试,虽然我知道我应该测试一下,但我太懒了,下次一定

参考文档

https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg/blob/main/docs/configuring-backup-borg.md

https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-backup-borg.md

© 版权声明
THE END
喜欢就支持一下吧
点赞0分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!无需注册,过短或乱码评论会被屏蔽。
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容