上一节我们已经部署好了自己的密码管理器,本节我们来讲讲如何让他自动化备份。
本来我是考虑用rclone+onedrive来存储的(在我们自己的电脑安装rclone协助鉴权,然后把token配置到服务器),但是经过测试,我的服务器并不能稳定连上onedrive,于是我换用了阿里云对象存储。
1.前置准备
服务器已经部署好vaultwarden。
2.开通OSS
来到阿里云,进入oss管理控制台。如果你以前没用过这个,他会让你先开启,跟着步骤走,开启之后别去购买,我们直接选择按量计费(因为他的资源包有点过于大了,最低都是100GB,我们用不着那么大的)。
来到oss管理控制台,新建一个Bucket

Bucket名称随便填,但是一定要记好,后面要用。地域尽量选离自己服务器近的,尽量同一个省的。版本控制可以考虑打开,服务端加密方式也可以打开:

创建完成,点击进入,来到概览界面,复制下面的访问端口链接(一会要用),我们用Endpoint链接:

3.获取 AccessKey 和 SecretKey
鼠标悬停到右上角个人头像,点击访问控制(或者阿里云搜索框直接搜RAM访问控制),来到访问控制界面。
点击身份管理-用户,创建用户,名字随意。创建好之后把AccessKey ID和AccessKey Secret复制下来,一会要用。
之后刷新页面,给你的用户添加AliyunOSSFullAccess权限

打钩之后记得点下面的确认新增授权。之后我们回到服务器端进行操作
4.修改服务器端配置
4.1创建rclone.conf
(其实我们还是用到rclone了,我们使用的 Docker 镜像 ttionya/vaultwarden-backup 的核心上传引擎就是Rclone)
来到我们放Vaultwarden的docker-compose.yml的目录。
nano rclone.conf输入:
[AliyunOSS]
type = s3
provider = Alibaba
access_key_id = <你的阿里云AccessKey_ID>
secret_access_key = <你的阿里云AccessKey_Secret>
endpoint = 刚才让你复制的Endpoint链接
acl = private注意Endpoint 不带 https 前缀,直接填类似oss-cn-shanghai.aliyuncs.com即可。
4.2修改vaultwarden的配置
nano docker-compose.yml在其中添加backup服务:
backup:
image: ttionya/vaultwarden-backup:latest
container_name: vaultwarden_backup
restart: always
environment:
- TZ=Asia/Shanghai
# 每天凌晨 4 点备份
- CRON=0 4 * * *
# 对应你在 rclone.conf 里中括号[]里的名字,一定要一模一样!
- RCLONE_REMOTE_NAME=AliyunOSS
# 格式:Bucket名称/文件夹 (注意中间没有冒号)
- RCLONE_REMOTE_DIR=nv-bac/Vaultwarden
# 我们存到阿里的是一个加密过的压缩包,这是压缩包密码 (为了安全,强烈建议修改!)
- ZIP_PASSWORD=Naseeledekey123@!
# 保留最近 30 天的备份
- BACKUP_KEEP_DAYS=30
# === 强制指定数据路径 ===
- DATA_DIR=/data
volumes:
# 注意:这里冒号左边的路径,必须和上面 vaultwarden 服务挂载的数据目录保持一致!
# 假设你的 vaultwarden 挂载的是 ./vw-data:/data
- ./vw-data:/data
# 挂载我们刚才创建的 rclone 配置文件
- ./rclone.conf:/config/rclone/rclone.conf
depends_on:
- vaultwarden完整docker-compose.yml如下:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- DOMAIN=https://你的vaultwarden域名
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=false # 注册完记得改成 false 并重建容器
- ADMIN_TOKEN=你的密码
volumes:
- ./vw-data/:/data/
networks:
- caddy_net
# 自动备份服务
backup:
image: ttionya/vaultwarden-backup:latest
container_name: vaultwarden_backup
restart: always
environment:
- TZ=Asia/Shanghai
# 每天凌晨 4 点备份
- CRON=0 4 * * *
# 对应你在 rclone.conf 里中括号[]里的名字,一定要一模一样!
- RCLONE_REMOTE_NAME=AliyunOSS
# 网盘里的目标文件夹名字
# === 修改这里:Bucket名字 + 文件夹 ===
# 格式是:Bucket名称/文件夹路径
- RCLONE_REMOTE_DIR=你的Bucket名称/Vaultwarden
# 压缩包密码 (为了安全,强烈建议修改!)
- ZIP_PASSWORD=Naseeledekey123@!
# 保留最近 30 天的备份
- BACKUP_KEEP_DAYS=30
# === 增加这一行,强制指定数据路径 ===
- DATA_DIR=/data
volumes:
# 注意:这里冒号左边的路径,必须和上面 vaultwarden 服务挂载的数据目录保持一致!
# 假设你的 vaultwarden 挂载的是 ./vw-data:/data
- ./vw-data:/data
# 挂载我们刚才创建的 rclone 配置文件
- ./rclone.conf:/config/rclone/rclone.conf
depends_on:
- vaultwarden
# 这里声明网络是外部存在的
networks:
caddy_net:
external: true拉取镜像并启动服务:
docker compose up -d如果你不放心,还可以手动触发一次,等镜像拉取完成且服务启动之后,稍等十秒钟,然后执行:
docker compose exec backup /app/backup.sh如果看见一堆输出,还有Backup successful,说明备份完成,我们可以去阿里云那边看一下是不是多了一个文件夹,里面多了个压缩包。

Comments NOTHING