本项目用于自动化备份 Vaultwarden 密码管理服务的数据,支持加密、云端存储、备份轮换和 Telegram 通知。
Find a file
2025-07-29 18:41:24 +08:00
.env-ex 添加 Vaultwarden 自动备份脚本及相关配置文件 2025-07-29 18:16:46 +08:00
backup.py 添加 Vaultwarden 自动备份脚本及相关配置文件 2025-07-29 18:16:46 +08:00
backup.sh 添加 Vaultwarden 自动备份脚本及相关配置文件 2025-07-29 18:16:46 +08:00
README.md Update README.md 2025-07-29 18:41:24 +08:00
requirements.txt 添加 Vaultwarden 自动备份脚本及相关配置文件 2025-07-29 18:16:46 +08:00

Vaultwarden 自动备份脚本

本项目用于自动化备份 Vaultwarden 密码管理服务的数据,支持加密、云端存储、备份轮换和 Telegram 通知。

README.md是由Copilot AI 生成的,可能包含一些不准确或不完整的信息,请根据实际情况进行调整和补充。如果遇到情况请提交 Issue 或 PR 进行修正,万分感谢!


项目背景

Vaultwarden 是 Bitwarden 的轻量级开源实现,常用于自建密码管理服务。数据安全至关重要,定期自动备份能有效防止数据丢失。本脚本实现了备份、加密、上传、轮换和通知的全流程自动化。

功能亮点

  • 自动备份 Vaultwarden 的数据库、配置文件、私钥和附件目录
  • 使用 openssl 强加密备份文件,保障数据安全
  • 上传加密备份至 Cloudflare R2 对象存储
  • 自动轮换旧备份,保留指定数量,节省存储空间
  • 备份失败时自动通过 Telegram 推送通知
  • 支持多平台Windows/Linux

环境准备

1. 克隆或下载项目

将本项目代码克隆或下载zip:

git clone https://github.com/Coldin04/vaultwarden_backup.git

2. 配置环境变量

  1. .env-ex 文件重命名为 backup.env,并根据实际情况填写各项配置。

  2. 各项配置说明:

    • R2_ACCESS_KEY_IDCloudflare R2 的 Access Key
    • R2_SECRET_ACCESS_KEYCloudflare R2 的 Secret Key
    • R2_ACCOUNT_IDCloudflare R2 的账号 ID
    • R2_BUCKET_NAMER2 存储桶名称
    • R2_REGIONR2 区域(通常填 auto
    • BACKUP_SOURCE_DIRVaultwarden 数据目录(如 /opt/vaultwarden/dataC:\vaultwarden\data
    • BACKUP_TEMP_FILE:临时 tar 文件路径(如 /tmp/vaultwarden-backup.tar.gzC:\temp\vaultwarden-backup.tar.gz
    • BACKUP_ENCRYPTED_FILE:加密后文件路径(如 /tmp/vaultwarden-backup.tar.gz.enc
    • ENCRYPT_PASSWORD:备份加密密码(请妥善保存)
    • SLOT_COUNT:保留的备份数量(如 3
    • BACKUP_PREFIX:备份文件前缀(如 back-vault-s
    • TELEGRAM_BOT_TOKENTelegram Bot Token可选
    • TELEGRAM_CHAT_IDTelegram Chat ID可选
  3. 配置示例:

R2_ACCESS_KEY_ID=xxxxxx
R2_SECRET_ACCESS_KEY=xxxxxx
R2_ACCOUNT_ID=xxxxxx
R2_BUCKET_NAME=vault-backup
R2_REGION=auto
BACKUP_SOURCE_DIR=/opt/vaultwarden/data
BACKUP_TEMP_FILE=/tmp/vaultwarden-backup.tar.gz
BACKUP_ENCRYPTED_FILE=/tmp/vaultwarden-backup.tar.gz.enc
ENCRYPT_PASSWORD=你的强密码
SLOT_COUNT=3
BACKUP_PREFIX=back-vault-s
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_CHAT_ID=123456789

依赖安装

Python 依赖

请确保已安装 Python 3.7 及以上版本。

方式一:使用 requirements.txt

pip install -r requirements.txt

方式二:手动安装

pip install boto3 python-dotenv requests

系统依赖

  • Windows请确保 sqlite3.exeopenssl.exe 已加入环境变量(可用 scoop/choco 安装)
  • Linux
sudo apt install sqlite3 openssl

备份流程详解

  1. 备份数据库:使用 sqlite3 的 .backup 命令生成安全副本
  2. 打包数据:将数据库、配置文件、私钥和附件目录打包为 tar.gz
  3. 加密备份:用 openssl AES-256-CBC 加密备份文件
  4. 上传备份:将加密文件上传至 Cloudflare R2
  5. 轮换备份:自动删除超出 SLOT_COUNT 的旧备份
  6. 清理临时文件:删除本地临时文件
  7. 通知推送:如有异常,自动推送 Telegram 消息

运行方法

在项目目录下执行:

python backup.py

如需定时自动运行,可结合系统计划任务:

  • Windows任务计划程序
  • Linuxcrontab

数据安全说明

  • 备份文件采用 AES-256-CBC 加密,密码由 ENCRYPT_PASSWORD 指定
  • 加密密码请妥善保存,遗失将无法恢复备份内容
  • 云端存储采用 Cloudflare R2需正确配置密钥

Telegram 通知配置

如需异常通知,请在 Telegram 创建 Bot 并获取 Token查找你的 Chat ID 并填写到 backup.env


备份轮换机制

  • 每次备份后自动检查云端备份数量,超出 SLOT_COUNT 时自动删除最旧的备份
  • 备份文件命名格式:{BACKUP_PREFIX}{日期时间}.tar.gz.enc

常见问题与故障排查

  • 依赖未安装:请检查 Python 包和系统工具是否安装齐全
  • 权限问题:请确保数据目录和临时文件路径有读写权限
  • 上传失败:检查 R2 配置和网络连接
  • 加密失败:确认 openssl 命令可用,密码无特殊字符
  • Telegram 未推送:检查 Bot Token 和 Chat ID 是否正确

FAQ

  • Q: 如何恢复备份? A: 下载加密备份文件,使用 openssl 解密后解包 tar 文件即可。
  • Q: 可以只备份数据库吗? A: 可自行修改 backup.py只保留数据库相关打包逻辑。
  • Q: 支持多平台吗? A: 支持 Windows 和 LinuxMacOS 亦可。

贡献与反馈

如有建议、问题或需求,欢迎提交 Issue 或 PR。


本项目旨在简化 Vaultwarden 的备份流程,提升数据安全性。感谢您的使用!