
README | https://github.com/ttionya/vaultwarden-backup/blob/master/README_zh.md
用于https://github.com/dani-garcia/vaultwarden%EF%BC%88%E5%89%8D%E8%BA%AB%E4%B8%BA**%60bitwarden_rs%60**%EF%BC%89%E8%BF%9C%E7%A8%8B%E5%A4%87%E4%BB%BD%E7%9A%84Docker%E5%AE%B9%E5%99%A8%E3%80%82
本工具支持备份以下文件或目录:
db.sqlite3(适用于SQLite数据库)db.dump(适用于PostgreSQL数据库)db.sql(适用于MySQL/MariaDB数据库)config.jsonrsa_key*(多个文件)attachments(目录)sends(目录)并支持以下备份结果通知方式:
重要提示: 假设您已阅读vaultwarden的https://github.com/dani-garcia/vaultwarden/wiki%E3%80%82
备份功能需要先配置Rclone,否则备份工具无法工作。
恢复功能不需要配置Rclone。
我们通过Rclone将备份文件上传到存储系统。
访问https://github.com/rclone/rclone%E8%8E%B7%E5%8F%96%E6%9B%B4%E5%A4%9A%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F%E6%95%99%E7%A8%8B%EF%BC%8C%E4%B8%8D%E5%90%8C%E7%B3%BB%E7%BB%9F%E7%9A%84%E4%BB%A4%E7%89%8C%E8%8E%B7%E5%8F%96%E6%96%B9%E5%BC%8F%E4%B8%8D%E5%90%8C%E3%80%82
配置与检查
通过以下命令获取令牌:
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
使用Docker Compose(推荐)
如果您是新用户或正在重建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 \ [选项]
选项信息见选项说明。
选项说明
-f / --force-restore
无需确认直接恢复。请谨慎使用!
backup的压缩文件--zip-file <文件>
需要使用此选项指定backup压缩包。确保压缩包内的文件名未被修改。
-p / --password
此方式不安全!
如果backup压缩包有密码,可使用此选项设置解压密码。如果不指定,将以交互方式询问密码。
--db-file <文件>
需要使用此选项指定db.*文件。
--config-file <文件>
需要使用此选项指定config.json文件。
--rsakey-file <文件>
需要使用此选项指定rsakey.tar文件。
--attachments-file <文件>
需要使用此选项指定attachments.tar文件。
--sends-file <文件>
需要使用此选项指定sends.tar文件。
注意: 所有环境变量都有默认值,您可以不设置任何环境变量直接使用docker镜像。
RCLONE_REMOTE_NAME
Rclone远程名称,需要与rclone配置中的远程名称一致。可通过以下命令查看当前远程名称:
shelldocker run --rm -it \ --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \ ttionya/vaultwarden-backup:latest \ rclone config show # [BitwardenBackup] <- 此处即为远程名称 # ...
默认值:BitwardenBackup
RCLONE_REMOTE_DIR
存储系统中存放备份文件的文件夹。
默认值:/BitwardenBackup/
RCLONE_GLOBAL_FLAG
Rclone全局标志,详见标志。不要添加会改变输出的标志(如-P),这会影响过时备份文件的删除。
默认值:''
CRON
备份脚本的执行计划,基于https://github.com/aptible/supercronic%E3%80%82%E5%8F%AF%E5%9C%A8%E6%AD%A4%E5%A4%84%E6%B5%8B%E8%AF%95%E8%A7%84%E5%88%99%E3%80%82
默认值:5 * * * *(每小时的第5分钟执行备份)
ZIP_ENABLE
是否将所有备份文件打包为一个压缩文件。设置为'FALSE'时,每个备份文件将独立上传。
默认值:TRUE
ZIP_PASSWORD
压缩文件的密码。打包备份文件时将始终使用此密码。
默认值:WHEREISMYPASSWORD?
ZIP_TYPE
由于zip格式安全性较低,我们为追求安全性的用户提供7z格式的压缩包。注意,vaultwarden的密码在发送到服务器前已加密,服务器不存储明文密码,因此zip格式已满足基本加密需求。
默认值:zip(仅支持zip和7z格式)
BACKUP_KEEP_DAYS
在存储系统中仅保留最近几天的备份文件。设置为0保留所有备份文件。
默认值:0
BACKUP_FILE_SUFFIX
默认每个备份文件的后缀为%Y%m%d。如果一天内备份多次,此后缀将不再唯一。此环境变量允许您在日期后附加唯一后缀以创建唯一备份名称。
不能包含/(Linux文件名不允许)。此变量整合了https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_date%E5%92%8Chttps://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_date_suffix%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%BC%98%E5%85%88%E7%BA%A7%E6%9B%B4%E9%AB%98%E3%80%82%E6%A0%BC%E5%BC%8F%E5%8F%82%E8%80%83date%E6%89%8B%E5%86%8C%E9%A1%B5%E3%80%82
默认值:%Y%m%d
TIMEZONE
设置时区名称。时区列表见***。
默认值:UTC
DISPLAY_NAME
用于在通知和日志中标识您的vaultwarden实例的自定义名称。不影响功能,仅影响通知标题和部分日志输出的显示。
默认值:vaultwarden
DATA_DIR
vaultwarden的数据存储文件夹。使用Docker Compose时无需修改;使用自动备份时需改为/data。
默认值:/bitwarden/data
※ 通知相关环境变量详见通知部分。
除非您知道自己在做什么,否则无需修改这些环境变量。
BACKUP_FILE_DATE
应使用https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_suffix%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%BB%A3%E6%9B%BF%E3%80%82%E4%BB%85%E5%BD%93%E6%82%A8%E6%98%8E%E7%A1%AE%E6%83%B3%E8%A6%81%E6%9B%B4%E6%94%B9%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E7%9A%84%E6%97%B6%E9%97%B4%E5%89%8D%E7%BC%80%EF%BC%88%E5%A6%8220220101%EF%BC%89%E6%97%B6%E7%BC%96%E8%BE%91%E6%AD%A4%E5%8F%98%E9%87%8F%E3%80%82**%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE%E5%8F%AF%E8%83%BD%E5%AF%BC%E8%87%B4%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E8%A2%AB%E8%AF%AF%E8%A6%86%E7%9B%96%E3%80%82** 格式规则与https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_date_suffix%E7%9B%B8%E5%90%8C%E3%80%82
默认值:%Y%m%d
BACKUP_FILE_DATE_SUFFIX
应使用https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_suffix%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%BB%A3%E6%9B%BF%E3%80%82%E9%BB%98%E8%AE%A4%E6%AF%8F%E4%B8%AA%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E7%9A%84%E5%90%8E%E7%BC%80%E4%B8%BA%60%25Y%25m%25d%60%E3%80%82%E5%A6%82%E6%9E%9C%E4%B8%80%E5%A4%A9%E5%86%85%E5%A4%87%E4%BB%BD%E5%A4%9A%E6%AC%A1%EF%BC%8C%E6%AD%A4%E5%90%8E%E7%BC%80%E5%B0%86%E4%B8%8D%E5%86%8D%E5%94%AF%E4%B8%80%E3%80%82%E6%AD%A4%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%85%81%E8%AE%B8%E6%82%A8%E5%9C%A8%E6%97%A5%E6%9C%9F%E5%90%8E%E9%99%84%E5%8A%A0%E5%94%AF%E4%B8%80%E5%90%8E%E7%BC%80%EF%BC%88%60%25Y%25m%25d$%7BBACKUP_FILE_DATE_SUFFIX%7D%60%EF%BC%89%E4%BB%A5%E5%88%9B%E5%BB%BA%E5%94%AF%E4%B8%80%E5%A4%87%E4%BB%BD%E5%90%8D%E7%A7%B0%E3%80%82%E4%BB%85%E6%94%AF%E6%8C%81%E6%95%B0%E5%AD%97%E3%80%81%E5%A4%A7%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D%E3%80%81%60-%60%E3%80%81%60_%60%E3%80%81%60%25%60%E3%80%82%E6%A0%BC%E5%BC%8F%E5%8F%82%E8%80%83date%E6%89%8B%E5%86%8C%E9%A1%B5%E3%80%82
默认值:''
DATA_DB
SQLite数据库文件路径。
默认值:${DATA_DIR}/db.sqlite3
DATA_RSAKEY
RSA密钥文件路径。
默认值:${DATA_DIR}/rsa_key
DATA_ATTACHMENTS
附件文件夹路径。
默认值:${DATA_DIR}/attachments
DATA_SENDS
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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务