Lazy loaded image
Vaultwarden 多服务器备份
Words 1383Read Time 4 min
2025-11-23
2025-11-23
type
status
date
slug
summary
tags
category
icon
password
😀
在不同服务器上搭建了Vaultwarden服务,因为平时只用一个服务器上的服务。想做到每天让服务器上的密码同步到其他服务器上
使用 rsync 配合 cron 任务
这种方法假设你的 Vaultwarden 数据(包括 db.sqlite3 文件、配置文件、附件等)都存储在一个 Docker volume 或 bind mount 目录中。

1.确定 Vaultwarden 数据目录:

  • 在 Server A 上,找到你的 Vaultwarden 容器正在使用的 v 或 -mount 参数指定的宿主机路径Docker Volume 名称。假设这个路径是 /path/to/vaultwarden/data/on/A
  • 在 Server B 上,确定目标 Vaultwarden 容器的数据目录。假设这个路径是 /path/to/vaultwarden/data/on/B
如何查找?
在服务器上运行 docker ps 找到 Vaultwarden 容器的 ID 或名称。
然后运行 docker inspect <container_id_or_name>
在输出的 JSON 中查找 "Mounts" 部分,它会显示 Source (宿主机路径或 Volume 名称) 和 Destination (容器内的路径,通常是 /data)。你要的是 Source 路径。

2.配置 SSH 免密登录:

start 和 rsync 命令,我们需要设置 SSH 密钥认证。rsync 脚本依赖这个功能。 以下是如何创建 .ssh 文件夹和生成 SSH 密钥的步骤(请在 Server A 上执行): 1. 创建 .ssh 文件夹(如果不存在) 以您计划用来运行脚本的用户身份登录到 Server A。 执行以下命令: mkdir -p ~/.ssh chmod 700 ~/.sshmkdir -p 会创建文件夹,如果它已存在,则不会报错。 • chmod 700 为 .ssh 文件夹设置了正确的权限(只有所有者可读、写、执行),这是 SSH 安全要求的。 2. 生成 SSH 密钥对 在 Server A 上,执行以下命令来生成一对新的 SSH 密钥(公钥和私钥): ssh-keygen -t rsa -b 4096-t rsa 指定密钥类型为 RSA。 • -b 4096 指定密钥长度为 4096 位,这是目前推荐的长度,更安全。 程序会询问您密钥文件的保存位置。默认情况下,它会建议保存在 ~/.ssh/id_rsa直接按 Enter 键接受默认位置。 接下来,它会询问您输入一个 "passphrase"(密码短语)。为了实现脚本的自动化(免密码登录),这里请直接按 Enter 键两次,留空密码短语。 • 重要提示: 留空密码短语意味着任何人如果获取到您的私钥文件,就可以直接使用它登录,因此请确保 Server A 的安全,并且不要泄露私钥文件 (id_rsa)。 命令执行完毕后,您会在 ~/.ssh/ 目录下找到两个文件: • id_rsa: 这是您的私钥绝不能让任何人或其他服务器知道。 • id_rsa.pub: 这是您的公钥,可以安全地分享给其他服务器。 3. 将 Server A 的公钥复制到 Server B 现在,您需要将 Server A 的公钥 (~/.ssh/id_rsa.pub) 添加到 Server B 上对应用户的 authorized_keys 文件中。 使用 ssh-copy-id 命令 在 Server A 上执行(请将 your_ssh_user 替换为你在 Server B 上的用户名,ServerB_IP 替换为 Server B 的 IP 地址): ssh-copy-id your_ssh_user@ServerB_IP • 这个命令会自动连接到 Server B,并在目标用户的 ~/.ssh/authorized_keys 文件末尾追加 Server A 的公钥。 • 它会要求您输入一次 Server B 用户的密码(这是最后一次需要手动输入密码)。

3.创建同步脚本:

在 Server A 上创建一个脚本文件,例如 /opt/scripts/sync_vaultwarden.sh,并添加以下内容:

4.使用 Cron 调度脚本:

  • 在 Server A 上,编辑 crontab 文件:crontab -e
  • 添加一行来每天执行脚本。例如,每天凌晨 3:00 执行:
0 3 * * * /opt/scripts/sync_vaultwarden.sh
 
上一篇
每日bing图片
下一篇
鱼缸光照时长