873 字
4 分钟
Docker自建Vaultwarden 密码管理器以及迁移备份的解决方案
Random Cover
Vaultwarden 采用 Rust 语言开发,内存占用极低,通常仅需 10-50MB,远低于官方 Bitwarden 服务器的资源需求。其模块化设计支持 Docker 容器化部署,默认镜像体积小巧,约 100MB,启动速度快,适合资源有限的环境。
一、docker搭建Vaultwarden
1.连接vps,输入代码
sudo mkdir -p /opt/aultwarden && cd /opt/aultwardennano docker-compose.yml复制粘贴进去
version: '3'
services: vaultwarden: container_name: vaultwarden image: vaultwarden/server:latest restart: unless-stopped volumes: - /opt/aultwarden/data:/data ports: - 3017:80 environment: - DOMAIN= # 这是您希望与您的Vaultwarden实例关联的域名。 - LOGIN_RATELIMIT_MAX_BURST=10 # 允许在一阵登录/两步验证尝试中的最大请求次数。 - LOGIN_RATELIMIT_SECONDS=60 # 这是来自同一IP的登录请求之间的平均秒数,在Vaultwarden限制登录次数之前。 - ADMIN_RATELIMIT_MAX_BURST=10 # 这与LOGIN_RATELIMIT_MAX_BURST相同,只争对admin面板。 - ADMIN_RATELIMIT_SECONDS=60 # 这与LOGIN_RATELIMIT_SECONDS相同 - ADMIN_SESSION_LIFETIME=20 # 会话持续时间 - ADMIN_TOKEN= # 此值是Vaultwarden管理员面板的令牌(一种密码)。为了安全起见,这应该是一个长的随机字符串。如果未设置此值,则管理员面板将被禁用。建议openssl rand -base64 48 生成ADMIN_TOKEN确保安全 - SENDS_ALLOWED=true # 此设置决定是否允许用户创建Bitwarden发送 - 一种凭证共享形式。 - EMERGENCY_ACCESS_ALLOWED=true # 此设置控制用户是否可以启用紧急访问其账户的权限。例如,这样做可以在用户去世后,配偶可以访问密码库以获取账户凭证。可能的值:true / false。 - WEB_VAULT_ENABLED=true # 此设置决定了网络保险库是否可访问。一旦您配置了您的账户和客户端,停止您的容器,然后将此值切换为false并重启Vaultwarden,可以用来防止未授权访问。可能的值:true/false。 - SIGNUPS_ALLOWED=false # 此设置控制新用户是否可以在没有邀请的情况下注册账户。可能的值:true / false。2.启动
docker compose up -d访问http://ip:3017 反代的话1panel面板设置就好了。

二、最近换服务器了,记录下怎么迁移Vaultwarden
1.打包并下载aultwarden文件,上传到新服务器。
2.在 Vaultwarden 容器内安装 SQLite
3.进入容器:
docker exec -it vaultwarden bash4.安装 SQLite
apt update && apt install sqlite3 -y5.执行完整性检查
sqlite3 /data/db.sqlite3 "PRAGMA integrity_check;"6.如果有错误,尝试修复:
sqlite3 /data/db.sqlite3 "VACUUM;"7.退出并重启容器
exitdocker restart vaultwarden8.定期重启 Vaultwarden 可以设置一个 cron 任务,每天重启 Vaultwarden,防止 SQLite 内存占用累积:
0 3 * * * docker restart vaultwarden三、备份 Vaultwarden
1panel面板计划任务添加以下代码:
#!/bin/bash
set -e # 遇到错误自动退出,防止异常情况下继续执行
# 备份相关路径SRC_DIR="/opt/aultwarden/data"BACKUP_FILENAME="vaultwarden_backup_$(date +%Y%m%d).7z"LOCAL_BACKUP_DIR="/root/backups"RETENTION_DAYS=7PASSWORD=""RCLONE_REMOTE="jianguoyun:/vaultwarden_backup"
# 创建本地备份目录(如果不存在)mkdir -p "$LOCAL_BACKUP_DIR"
# 备份并压缩为 7zif command -v 7z >/dev/null 2>&1; then 7z a -t7z -mx=9 -p"$PASSWORD" "$LOCAL_BACKUP_DIR/$BACKUP_FILENAME" "$SRC_DIR"else echo "❌ 7z 未安装,请安装 p7zip!" exit 1fi
# 确保压缩成功if [ ! -f "$LOCAL_BACKUP_DIR/$BACKUP_FILENAME" ]; then echo "❌ 备份文件创建失败!" exit 1fi
# 确保坚果云目录存在rclone mkdir "$RCLONE_REMOTE"
# 上传到坚果云if rclone copy "$LOCAL_BACKUP_DIR/$BACKUP_FILENAME" "$RCLONE_REMOTE"; then echo "✅ 备份上传成功!" rm "$LOCAL_BACKUP_DIR/$BACKUP_FILENAME" # 上传成功后删除本地备份else echo "❌ 备份上传失败!" exit 1fi
# 清理 7 天前的旧备份find "$LOCAL_BACKUP_DIR" -type f -name "vaultwarden_backup_*.7z" -mtime +$RETENTION_DAYS -exec rm {} \;
echo "? 备份任务完成!"没有安装7z,请先安装7z
sudo apt install p7zip-full这就是我的Vaultwarden 迁移备份的解决方案。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Docker自建Vaultwarden 密码管理器以及迁移备份的解决方案
https://www.weirain.com/posts/326/ 最后更新于 2025-03-25,距今已过 310 天
部分内容可能已过时
风尘落微雨