远程备份的Docker容器。
本工具支持备份以下文件或目录:
db.sqlite3(适用于SQLite数据库)db.dump(适用于PostgreSQL数据库)db.sql(适用于MySQL/MariaDB数据库)config.jsonrsa_key*(多个文件)attachments(目录)sends(目录)并支持以下备份结果通知方式:
重要提示: 假设您已阅读vaultwarden的文档。
备份功能需要先配置Rclone,否则备份工具无法工作。
恢复功能不需要配置Rclone。
我们通过Rclone将备份文件上传到存储系统。
访问GitHub获取更多存储系统教程,不同系统的令牌获取方式不同。
通过以下命令获取令牌:
shelldocker run --rm -it \ --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \ ttionya/vaultwarden-backup:latest \ rclone config
建议将远程名称设置为BitwardenBackup,否则需要通过环境变量RCLONE_REMOTE_NAME指定您设置的远程名称。
配置完成后,通过以下命令检查配置内容:
shelldocker run --rm -it \ --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \ ttionya/vaultwarden-backup:latest \ rclone config show # 微软OneDrive示例 # [BitwardenBackup] # type = onedrive # token = {"access_token":"访问令牌","token_type":"令牌类型","refresh_token":"刷新令牌","expiry":"过期时间"} # drive_id = 驱动器ID # drive_type = personal
如果您是新用户或正在重建vaultwarden,建议使用项目提供的docker-compose.yml。
下载docker-compose.yml到您的机器,编辑环境变量后启动:
shell# 启动 docker-compose up -d # 停止 docker-compose stop # 重启 docker-compose restart # 删除 docker-compose down
如果您已有运行中的vaultwarden且不想使用docker-compose.yml,我们也提供了备份方法。
确保您的vaultwarden容器名称为vaultwarden,否则需要替换docker run命令中--volumes-from部分的容器名称。
vaultwarden的数据文件夹默认是/data,您需要通过环境变量DATA_DIR显式指定数据文件夹。
使用默认设置启动备份容器(每小时的第5分钟自动备份):
shelldocker run -d \ --restart=always \ --name vaultwarden_backup \ --volumes-from=vaultwarden \ --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \ -e DATA_DIR="/data" \ ttionya/vaultwarden-backup:latest
重要提示: 恢复会覆盖现有文件。
恢复前需要停止Docker容器,并将备份文件下载到本地机器。
由于Docker容器内无法访问主机文件,需要将存放待恢复备份文件的目录映射到容器中。
并进入存放待恢复备份文件的目录。
如果您使用本项目提供的docker-compose.yml,可使用以下命令:
shelldocker run --rm -it \ --mount type=volume,source=vaultwarden-data,target=/bitwarden/data/ \ --mount type=bind,source=$(pwd),target=/bitwarden/restore/ \ ttionya/vaultwarden-backup:latest restore \ [选项]
如果您使用“自动备份”方式,请确认vaultwarden的卷,并替换--mount的source部分。同时不要忘记使用环境变量DATA_DIR指定数据目录(-e DATA_DIR="/data"):
shelldocker run --rm -it \ \ # 如果将本地文件夹映射到docker容器,例如`vw-data` --mount type=bind,source="本地文件夹绝对路径",target=/data/ \ \ # 如果使用docker卷 --mount type=volume,source="docker卷名称",target=/data/ \ --mount type=bind,source=$(pwd),target=/bitwarden/restore/ \ -e DATA_DIR="/data" \ ttionya/vaultwarden-backup:latest restore \ [选项]
选项信息见选项说明。
无需确认直接恢复。请谨慎使用!
backup的压缩文件需要使用此选项指定backup压缩包。确保压缩包内的文件名未被修改。
此方式不安全!
如果backup压缩包有密码,可使用此选项设置解压密码。如果不指定,将以交互方式询问密码。
需要使用此选项指定db.*文件。
需要使用此选项指定config.json文件。
需要使用此选项指定rsakey.tar文件。
需要使用此选项指定attachments.tar文件。
需要使用此选项指定sends.tar文件。
注意: 所有环境变量都有默认值,您可以不设置任何环境变量直接使用docker镜像。
Rclone远程名称,需要与rclone配置中的远程名称一致。可通过以下命令查看当前远程名称:
shelldocker run --rm -it \ --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \ ttionya/vaultwarden-backup:latest \ rclone config show # [BitwardenBackup] <- 此处即为远程名称 # ...
默认值:BitwardenBackup
存储系统中存放备份文件的文件夹。
默认值:/BitwardenBackup/
Rclone全局标志,详见标志。不要添加会改变输出的标志(如-P),这会影响过时备份文件的删除。
默认值:''
备份脚本的执行计划,基于supercronic。可在此处测试规则。
默认值:5 * * * *(每小时的第5分钟执行备份)
是否将所有备份文件打包为一个压缩文件。设置为'FALSE'时,每个备份文件将独立上传。
默认值:TRUE
压缩文件的密码。打包备份文件时将始终使用此密码。
默认值:WHEREISMYPASSWORD?
由于zip格式安全性较低,我们为追求安全性的用户提供7z格式的压缩包。注意,vaultwarden的密码在发送到服务器前已加密,服务器不存储明文密码,因此zip格式已满足基本加密需求。
默认值:zip(仅支持zip和7z格式)
在存储系统中仅保留最近几天的备份文件。设置为0保留所有备份文件。
默认值:0
默认每个备份文件的后缀为%Y%m%d。如果一天内备份多次,此后缀将不再唯一。此环境变量允许您在日期后附加唯一后缀以创建唯一备份名称。
不能包含/(Linux文件名不允许)。此变量整合了BACKUP_FILE_DATE和BACKUP_FILE_DATE_SUFFIX的功能,优先级更高。格式参考date手册页。
默认值:%Y%m%d
设置时区名称。时区列表见***。
默认值:UTC
用于在通知和日志中标识您的vaultwarden实例的自定义名称。不影响功能,仅影响通知标题和部分日志输出的显示。
默认值:vaultwarden
vaultwarden的数据存储文件夹。使用Docker Compose时无需修改;使用自动备份时需改为/data。
默认值:/bitwarden/data
※ 通知相关环境变量详见通知部分。
除非您知道自己在做什么,否则无需修改这些环境变量。
应使用BACKUP_FILE_SUFFIX环境变量代替。仅当您明确想要更改备份文件的时间前缀(如20220101)时编辑此变量。错误配置可能导致备份文件被误覆盖。 格式规则与BACKUP_FILE_DATE_SUFFIX相同。
默认值:%Y%m%d
应使用BACKUP_FILE_SUFFIX环境变量代替。默认每个备份文件的后缀为%Y%m%d。如果一天内备份多次,此后缀将不再唯一。此环境变量允许您在日期后附加唯一后缀(%Y%m%d${BACKUP_FILE_DATE_SUFFIX})以创建唯一备份名称。仅支持数字、大小写字母、-、_、%。格式参考date手册页。
默认值:''
SQLite数据库文件路径。
默认值:${DATA_DIR}/db.sqlite3
RSA密钥文件路径。
默认值:${DATA_DIR}/rsa_key
附件文件夹路径。
默认值:${DATA_DIR}/attachments
sends文件夹路径。
默认值:${DATA_DIR}/sends
我们提供在备份完成、开始、成功或失败时发送通知的功能。
使用healthcheck.io地址或其他类似的 cron 监控地址是个不错的选择,也推荐这样做。 对于更复杂的通知场景,您可以使用带有_CURL_OPTIONS后缀的环境变量设置curl选项,例如添加请求头、更改请求方法等。
对于不同的通知场景,备份工具提供%{subject}和%{content}占位符来替换实际标题和内容。您可以在以下环境变量中使用它们。注意,标题和内容可能包含空格。对于四个包含_CURL_OPTIONS的环境变量,占位符将直接替换并保留空格;对于其他PING_URL环境变量,空格将替换为+以符合URL规则。
| 环境变量 | 触发状态 | 测试标识符 | 描述 |
|---|---|---|---|
| PING_URL | 完成(成功或失败) | completion | 备份完成后发送请求的URL |
| PING_URL_CURL_OPTIONS | 与PING_URL一起使用的curl选项 | ||
| PING_URL_WHEN_START | 开始 | start | 备份开始时发送请求的URL |
| PING_URL_WHEN_START_CURL_OPTIONS | 与PING_URL_WHEN_START一起使用的curl选项 | ||
| PING_URL_WHEN_SUCCESS | 成功 | success | 备份成功后发送请求的URL |
| PING_URL_WHEN_SUCCESS_CURL_OPTIONS | 与PING_URL_WHEN_SUCCESS一起使用的curl选项 | ||
| PING_URL_WHEN_FAILURE | 失败 | failure | 备份失败后发送请求的URL |
| PING_URL_WHEN_FAILURE_CURL_OPTIONS | 与PING_URL_WHEN_FAILURE一起使用的curl选项 |
您可以使用以下命令测试Ping发送功能。“测试标识符”是上一节表格中的标识符,可使用completion、start、success或failure,用于确定使用哪组环境变量:
shelldocker run --rm -it \ -e PING_URL='<您的ping URL>' \ -e PING_URL_CURL_OPTIONS='<您的PING_URL的curl选项>' \ -e PING_URL_WHEN_START='<您的ping URL>' \ -e PING_URL_WHEN_START_CURL_OPTIONS='<您的PING_URL_WHEN_START的curl选项>' \ -e PING_URL_WHEN_SUCCESS='<您的ping URL>' \ -e PING_URL_WHEN_SUCCESS_CURL_OPTIONS='<您的PING_URL_WHEN_SUCCESS的curl选项>' \ -e PING_URL_WHEN_FAILURE='<您的ping URL>' \ -e PING_URL_WHEN_FAILURE_CURL_OPTIONS='<您的PING_URL_WHEN_FAILURE的curl选项>' \ ttionya/vaultwarden-backup:latest ping <测试标识符>
从v1.19.0开始,我们使用s-nail代替heirloom-mailx发送邮件。注意,heirloom-mailx是s-nail的存根,其大部分功能兼容,因此您可能无需修改任何环境变量。
| 环境变量 | 默认值 | 描述 |
|---|---|---|
| MAIL_SMTP_ENABLE | FALSE | 启用邮件发送功能 |
| MAIL_SMTP_VARIABLES | 邮件发送选项 | |
| MAIL_TO | 通知邮件的收件人 | |
| MAIL_WHEN_SUCCESS | TRUE | 备份成功时发送邮件 |
| MAIL_WHEN_FAILURE | TRUE | 备份失败时发送邮件 |
| MAIL_FORCE_THREAD | FALSE | 当邮件客户端尽管主题相同仍无法将相关邮件分组到对话视图时特别有用 |
对于`MAIL_SMTP_V
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429