
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 bitwarden_rs)远程备份的 Docker 容器。
本工具支持备份以下文件或目录:
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 了解更多存储系统教程。不同系统获取令牌的方式不同。
配置与检查
您可以通过以下命令获取令牌:
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 # Microsoft 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 到您的机器,编辑环境变量并启动:
您需要进入保存 docker-compose.yml 文件的目录:
shell# 启动 docker-compose up -d # 停止 docker-compose stop # 重启 docker-compose restart # 删除 docker-compose down
自动备份
如果您已有运行中的 vaultwarden 但不想使用 docker-compose.yml,我们也提供了备份方法。
确保您的 vaultwarden 容器名为 vaultwarden,否则需要替换 Docker 运行命令中 --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 \ [选项]
选项信息参见 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#options%E3%80%82
选项
-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%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%9C%A8 此处 测试规则。
默认值: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 和 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_date_suffix 的功能,且优先级更高。您可以直接使用此环境变量控制备份文件的后缀。
格式说明参见 date 手册页。
默认值:%Y%m%d
TIMEZONE
设置时区名称。
时区列表参见 ***。
默认值:UTC
DISPLAY_NAME
用于在通知和日志中标识您的 vaultwarden 实例的自定义名称。
这不影响功能,仅影响通知标题和部分日志输出中的显示。
默认值:vaultwarden
DATA_DIR
vaultwarden 的数据存储文件夹。
使用 Docker Compose 时,无需修改此值。但使用自动备份时,需要将其改为 /data。
默认值:/bitwarden/data
※ 通知相关环境变量请参见 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#notification 部分。
除非您清楚了解其作用,否则无需修改这些环境变量。
BACKUP_FILE_DATE
您应使用 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_suffix 环境变量代替。
仅当您明确希望更改备份文件的时间前缀(如 20220101)时编辑此环境变量。错误配置可能导致备份文件被误覆盖。
格式规则与 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_date_suffix 相同。
默认值:%Y%m%d
BACKUP_FILE_DATE_SUFFIX
您应使用 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#backup_file_suffix 环境变量代替。
默认情况下,每个备份文件的后缀为 %Y%m%d。如果您一天内多次备份,此后缀将不再唯一。此环境变量允许您在日期后附加唯一后缀(%Y%m%d${BACKUP_FILE_DATE_SUFFIX})以创建唯一备份名称。
注意仅支持数字、大小写字母、-、_、%。
格式说明参见 date 手册页。
默认值:''
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 发送。
“测试标识符”是 https://github.com/ttionya/vaultwarden-backup/blob/master/README.md#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 的存根,其大部分功能兼容。因此,您可能不需要为此更改修改任何环境变量。
| 环境变量 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务