家庭NAS全家桶记录:密码管理器vaultwarden的搭建与自动备份

对于个人和家庭而言,密码管理至关重要。Vaultwarden(原 bitwarden_rs)是 Bitwarden 服务器的轻量级实现,它让我们能安全地自托管密码库,保障数据隐私。本文将基于 Docker Compose,详细记录 Vaultwarden 的搭建过程,并重点介绍如何集成 vaultwarden-backup 工具实现自动化、加密备份。

我觉得这个还是蛮有用的,特别是类似谷歌这种每次登录完就忘,下次登录重置还总提示不要用之前的密码,还有复杂度要求。现在直接通过Vaultwarden通行密钥,不用输密码即可登录。

:hammer_and_wrench: 配置文件:docker-compose.yml

我们使用 Docker Compose 来一键部署 Vaultwarden 服务和备份服务。
BitwardenBackup 需要使用rclone服务,所以请提前安装rclone。

curl https://rclone.org/install.sh | sudo bash

1.配置 Rclone

在 Docker Compose 设置之前,您必须为备份存储目标配置 Rclone。直接运行以下代码会生成一个有rclone配置的卷,用于之后挂载使用。remote name我设置为 BitwardenBackup。

docker run --rm -it \
  --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \
  ttionya/vaultwarden-backup:latest \
  rclone config

我的目标是软路由上的vaultwarden备份到nas上,nas我已经通过nfs挂载到了软路由的/mnt/backup下,所以我在rclone配置选择本地(local)即可,如果你挂载其他网盘或alist,可参考网络教程或rclone官方文档。

2. 配置文件内容

将以下内容保存为 docker-compose.yml 文件。如果和我一样的portainer,直接在stack中新建stack。

version: '3.7'  
  
services:  
  vaultwarden:  
    image: vaultwarden/server:latest  
    restart: always  
    ports:  
    # 端口按需更改
      - '8086:80'  
    environment:  
      TZ: Asia/Shanghai  
      # ⚠️ 访问管理后台的令牌,请务必修改为强密码!
      ADMIN_TOKEN: 'password'  
      # 允许新用户注册。完成初始注册后,建议改为 'false'
      SIGNUPS_ALLOWED: 'true'  
    volumes:  
      - vaultwarden-data:/data/  

  backup:  
    image: ttionya/vaultwarden-backup:latest  
    restart: always  
    environment:  
      # 这里的NAME和我们之前执行的生成rclone生成配置的建立名称对应,DIR就是我们rclone挂载的文件夹。
      RCLONE_REMOTE_NAME: 'BitwardenBackup'  
      RCLONE_REMOTE_DIR: '/mnt/backup'  
      # 每天0点备份
      CRON: '0 0 * * *'  
      BACKUP_FILE_SUFFIX: '%Y%m%d'  
      ZIP_ENABLE: 'TRUE'
      #压缩包密码
      ZIP_PASSWORD: 'WHEREISMYPASSWORD?'
      ZIP_TYPE: 'zip'
      #备份文件保存天数
      BACKUP_KEEP_DAYS: 7  
      TIMEZONE: 'Asia/Shanghai'  
    volumes:  
      - vaultwarden-data:/bitwarden/data/  # 与 vaultwarden 共享同一个 volume  
      - vaultwarden-rclone-data:/config/   # 使用 rclone 配置 volume  
      - /mnt/backup:/mnt/backup  # 记得加上rclone的挂载文件夹
volumes:  
  vaultwarden-data:  
    name: vaultwarden-data  
  vaultwarden-rclone-data:  
    external: true  # 标记为外部卷  
    name: vaultwarden-rclone-data

3. 启动服务

将文件保存后,进入文件所在目录,运行以下命令启动服务:

docker compose up -d

4. 还原操作

如果需要还原数据,请遵循以下步骤:

  1. 停止 Vaultwarden 容器:在执行还原前,必须确保主容器已停止,防止数据库写入冲突。
 docker stop vaultwarden
  1. 执行还原命令:将备份文件如 backup.20250630.zip 下载到本地,在其目录下使用 vaultwarden-backup 工具运行一个临时容器,将备份文件解压并写入到数据卷中。你需要替换命令中的备份文件名加密密码
docker run --rm -it \
  --mount type=volume,source=vaultwarden-data,target=/bitwarden/data/ \
  --mount type=bind,source=$(pwd),target=/bitwarden/restore/ \
  -e ZIP_PASSWORD='WHEREISMYPASSWORD?' \
  ttionya/vaultwarden-backup:latest restore \
  --zip-file /bitwarden/restore/backup.20250630.zip
  • --zip-file <BACKUP_FILE_NAME>.zip: 指定要还原的备份文件路径。
  • -e ZIP_PASSWORD: 提供你设置的解密密码。
  1. 重启 Vaultwarden 容器:还原完成后,启动容器使更改生效。
docker start vaultwarden

通过这套配置,你的vaultwarden就可以每天自动备份啦!
image

注:vaultwarden默认强制要求https登录,可以使用caddy、nginx或者lucky、 Nginx Proxy Manager等可视化工具实现反向代理。

25 个赞

感谢大佬教程 !

1 个赞

我上午在配置,飞牛有自带但还要配 lucky,搞了半天最后说端口被占用,还不能改!我勒个豆

1 个赞

可以直接备份到谷歌盘吗.没有nas

感谢分享

感谢分享

1 个赞

有没有nas都行,你可以挂本地、挂各种网盘。但要使用rclone,文章里给出了挂载谷歌云盘的教程。

感谢分享,改天试试

感谢教程

感谢教程,有用。

佬,这个可以关掉吗

如今,要正常运行 Vaultwarden,几乎必须启用 HTTPS,这是因为 Bitwarden 网络密码库使用的 Web Crypto API,大多数浏览器只有在 HTTPS 环境下才能使用。

1 个赞

感谢分享
但发在 快问快答 是否是不合适

好吧,谢谢佬

有没有试过还原备份有问题吗

rclone的配置略微复杂,抽空再试试配置

试了 没问题

1 个赞

感谢大佬分享

感谢分享 已经成功部署备份 同步到 腾讯云cos