
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://img.shields.io/docker/v/ttionya/vaultwarden-backup?label=Version&logo=docker](https://hub.docker.com/r/ttionya/vaultwarden-backup/tags) https://img.shields.io/docker/pulls/ttionya/vaultwarden-backup?label=Docker%20Pulls&logo=docker](https://hub.docker.com/r/ttionya/vaultwarden-backup) https://img.shields.io/github/license/ttionya/vaultwarden-backup?label=License&logo=github](https://github.com/ttionya/vaultwarden-backup/blob/master/LICENSE)
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。
我们通过https://rclone.org/%E5%B0%86%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%88%B0%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F%E3%80%82
访问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/ \ docker.xuanyuan.run/ttionya/vaultwarden-backup:latest \ rclone config
建议将远程名称设置为BitwardenBackup,否则需要通过环境变量RCLONE_REMOTE_NAME指定您设置的远程名称。
配置完成后,通过以下命令检查配置内容:
shelldocker run --rm -it \ --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \ docker.xuanyuan.run/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" \ docker.xuanyuan.run/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/ \ docker.xuanyuan.run/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/ \ docker.xuanyuan.run/ttionya/vaultwarden-backup:latest \ rclone config show # [BitwardenBackup] <- 此处即为远程名称 # ...
默认值:BitwardenBackup
RCLONE_REMOTE_DIR
存储系统中存放备份文件的文件夹。
默认值:/BitwardenBackup/
RCLONE_GLOBAL_FLAG
Rclone全局标志,详见https://rclone.org/flags/%E3%80%82**%E4%B8%8D%E8%A6%81%E6%B7%BB%E5%8A%A0%E4%BC%9A%E6%94%B9%E5%8F%98%E8%BE%93%E5%87%BA%E7%9A%84%E6%A0%87%E5%BF%97%EF%BC%88%E5%A6%82%60-P%60%EF%BC%89%EF%BC%8C%E8%BF%99%E4%BC%9A%E5%BD%B1%E5%93%8D%E8%BF%87%E6%97%B6%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E7%9A%84%E5%88%A0%E9%99%A4%E3%80%82**
默认值:''
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%83https://man7.org/linux/man-pages/man1/date.1.html%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%83https://man7.org/linux/man-pages/man1/date.1.html%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
我们提供在备份完成、开始、成功或失败时发送通知的功能。
使用https://healthchecks.io/%E5%9C%B0%E5%9D%80%E6%88%96%E5%85%B6%E4%BB%96%E7%B1%BB%E4%BC%BC%E7%9A%84 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选项>' \ docker.xuanyuan.run/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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务