Vaultwarden 数据备份与高可用方案:SQLite 自动备份、迁移 PostgreSQL、异地容灾
Vaultwarden 数据备份与高可用方案SQLite 自动备份、迁移 PostgreSQL、异地容灾Vaultwarden 是 Bitwarden 服务端的轻量级 Rust 实现凭借极低的资源占用成为自托管密码管理的首选。然而密码数据库一旦损坏或丢失后果极为严重。本文聚焦生产级备份与高可用从 SQLite WAL 热备、rclone 异地同步到切换 PostgreSQL 提升稳定性帮助你在单台 VPS 上构建可靠的密码管理基础设施。服务器配置密码管理服务对计算资源要求不高但对数据可靠性要求极高。推荐使用雨云服务器 rainyun-com注册填优惠码2026off领 5 折优惠券选择1 核 2GB 内存机型即可轻松运行 Vaultwarden 及其备份套件。推荐机型1 核 2GB / SSD 40GB操作系统Debian 12 或 Ubuntu 22.04 LTS带宽要求1Mbps 上行即可满足多人使用额外建议开启自动快照功能为磁盘层面提供额外保护数据安全永远比省钱重要。建议同时配置本地备份 对象存储异地备份的双保险策略本文将详细讲解实现方法。前置准备基础环境安装# 更新系统aptupdateaptupgrade-y# 安装 Docker 和必要工具curl-fsSLhttps://get.docker.com|shaptinstall-ydocker-compose-plugin sqlite3croncurl# 安装 rclone用于对象存储同步curlhttps://rclone.org/install.sh|bash目录结构规划mkdir-p/opt/vaultwarden/{data,backup,scripts}# data/ - Vaultwarden 数据目录# backup/ - 本地备份存储# scripts/ - 备份脚本配置步骤1. 基础 Docker Compose 部署# /opt/vaultwarden/docker-compose.ymlversion:3.8services:vaultwarden:image:vaultwarden/server:latestcontainer_name:vaultwardenrestart:unless-stoppedports:-127.0.0.1:8080:80volumes:-/opt/vaultwarden/data:/dataenvironment:# 管理员面板 Token强烈建议设置为随机长字符串ADMIN_TOKEN:${ADMIN_TOKEN}# 禁止公开注册仅管理员邀请SIGNUPS_ALLOWED:false# 启用管理员面板ADMIN_ENABLED:true# 域名配置必须与实际访问地址一致DOMAIN:https://vault.yourdomain.com# 日志级别LOG_LEVEL:warn# SMTP 邮件用于 2FA 和邀请SMTP_HOST:smtp.example.comSMTP_PORT:587SMTP_FROM:vaultyourdomain.comSMTP_USERNAME:${SMTP_USER}SMTP_PASSWORD:${SMTP_PASS}生成安全的 ADMIN_TOKEN# 生成高强度随机 Token32字节 base64openssl rand-base6448# 创建 .env 文件存储敏感变量cat/opt/vaultwarden/.envEOF ADMIN_TOKENyour_generated_token_here SMTP_USERyour_smtp_user SMTP_PASSyour_smtp_password EOFchmod600/opt/vaultwarden/.envADMIN_TOKEN 安全配置要点长度至少 40 个字符包含大小写字母、数字和特殊字符绝对不能与密码库密码相同定期轮换建议每 6 个月一次使用.env文件而非直接写入docker-compose.yml2. SQLite WAL 备份脚本Vaultwarden 默认使用 SQLite 存储数据其 WALWrite-Ahead Logging模式允许在数据库写入时进行在线热备。# /opt/vaultwarden/scripts/backup-sqlite.sh#!/bin/bashset-euopipefailVAULTWARDEN_DATA/opt/vaultwarden/dataBACKUP_DIR/opt/vaultwarden/backupTIMESTAMP$(date%Y%m%d_%H%M%S)BACKUP_FILE${BACKUP_DIR}/vaultwarden_${TIMESTAMP}.sqlite3RETENTION_DAYS30# 创建备份目录mkdir-p${BACKUP_DIR}# 使用 SQLite .backup 命令进行在线热备WAL 安全sqlite3${VAULTWARDEN_DATA}/db.sqlite3.backup ${BACKUP_FILE}# 同时备份 attachments 和 sends 目录tar-czf${BACKUP_DIR}/attachments_${TIMESTAMP}.tar.gz\-C${VAULTWARDEN_DATA}attachments sends2/dev/null||true# 校验备份文件完整性ifsqlite3${BACKUP_FILE}PRAGMA integrity_check;|grep-q^ok$;thenecho[$(date)] 备份成功${BACKUP_FILE}elseecho[$(date)] 备份校验失败2exit1fi# 清理超过保留期的旧备份find${BACKUP_DIR}-namevaultwarden_*.sqlite3-mtime${RETENTION_DAYS}-deletefind${BACKUP_DIR}-nameattachments_*.tar.gz-mtime${RETENTION_DAYS}-deleteecho[$(date)] 本地备份完成保留最近${RETENTION_DAYS}天chmodx /opt/vaultwarden/scripts/backup-sqlite.sh# 设置 cron 定时任务每天凌晨 3:00 执行echo0 3 * * * root /opt/vaultwarden/scripts/backup-sqlite.sh /var/log/vaultwarden-backup.log 21\/etc/cron.d/vaultwarden-backup3. rclone 同步到对象存储S3 兼容# 配置 rclone交互式配置rclone config# 配置示例使用雨云对象存储或其他 S3 兼容服务# 选择 s3 → AWS S3 or compatible# 填写 endpoint、access_key_id、secret_access_keyrclone 配置文件示例~/.config/rclone/rclone.conf[myoss] type s3 provider Other endpoint https://oss.yourstorage.com access_key_id YOUR_ACCESS_KEY secret_access_key YOUR_SECRET_KEY region auto创建异地同步脚本# /opt/vaultwarden/scripts/sync-to-oss.sh#!/bin/bashset-euopipefailBACKUP_DIR/opt/vaultwarden/backupREMOTE_PATHmyoss:vaultwarden-backupLOG_FILE/var/log/vaultwarden-sync.logecho[$(date)] 开始同步备份到对象存储...|tee-a${LOG_FILE}# 同步备份文件到对象存储仅上传新文件删除远端旧文件rclonesync${BACKUP_DIR}${REMOTE_PATH}\--min-age 5m\--log-file${LOG_FILE}\--log-level INFOecho[$(date)] 同步完成|tee-a${LOG_FILE}# 验证远端文件数量REMOTE_COUNT$(rclonels${REMOTE_PATH}|wc-l)echo[$(date)] 远端备份文件数${REMOTE_COUNT}|tee-a${LOG_FILE}chmodx /opt/vaultwarden/scripts/sync-to-oss.sh# 添加到 cron每天凌晨 4:00 执行在本地备份完成后echo0 4 * * * root /opt/vaultwarden/scripts/sync-to-oss.sh\/etc/cron.d/vaultwarden-backup4. 迁移到 PostgreSQL当用户数量超过 20 人或需要更高并发读写性能时建议切换到 PostgreSQL。步骤一部署 PostgreSQL# 在 docker-compose.yml 中添加 PostgreSQL 服务services:postgres:image:postgres:16-alpinecontainer_name:vaultwarden-dbrestart:unless-stoppedvolumes:-/opt/vaultwarden/pgdata:/var/lib/postgresql/dataenvironment:POSTGRES_DB:vaultwardenPOSTGRES_USER:vaultwardenPOSTGRES_PASSWORD:${PG_PASSWORD}healthcheck:test:[CMD-SHELL,pg_isready -U vaultwarden]interval:10stimeout:5sretries:5步骤二停机迁移数据# 1. 停止 Vaultwardendockercompose stop vaultwarden# 2. 导出 SQLite 数据sqlite3 /opt/vaultwarden/data/db.sqlite3 .dump/tmp/vaultwarden_dump.sql# 3. 启动 PostgreSQLdockercompose up-dpostgres# 4. 使用迁移工具推荐使用官方迁移脚本pip3installsqlite-to-postgres2/dev/null||\pipinstallsqlite-utils psycopg2-binary# 5. 更新 Vaultwarden 环境变量# 在 docker-compose.yml 中添加# DATABASE_URL: postgresql://vaultwarden:${PG_PASSWORD}postgres/vaultwarden# 6. 重启 Vaultwarden首次启动会自动创建表结构dockercompose up-dvaultwarden核心功能备份验证与恢复演练# 从备份恢复测试场景BACKUP_FILE/opt/vaultwarden/backup/vaultwarden_20260523_030000.sqlite3# 停止服务dockercompose stop vaultwarden# 替换数据库cp/opt/vaultwarden/data/db.sqlite3 /opt/vaultwarden/data/db.sqlite3.bakcp${BACKUP_FILE}/opt/vaultwarden/data/db.sqlite3# 恢复 attachmentstar-xzf/opt/vaultwarden/backup/attachments_20260523_030000.tar.gz\-C/opt/vaultwarden/data/# 重启服务并验证dockercompose up-dvaultwarden进阶技巧监控备份健康状态# 创建监控脚本发送 HTTP 通知到 Uptime Kuma 或 ntfycat/opt/vaultwarden/scripts/notify-backup.shEOF #!/bin/bash # 备份完成后 ping 监控端点 curl -s https://your-uptime-kuma.com/api/push/YOUR_TOKEN?statusupmsgbackup_ok /dev/null EOF双重加密备份# 使用 GPG 加密备份文件gpg--symmetric--cipher-algo AES256${BACKUP_FILE}# 生成 ${BACKUP_FILE}.gpg删除原文件后上传到对象存储常见问题QSQLite 备份时报 “database is locked”确认 Vaultwarden 的 WAL 模式已启用。检查db.sqlite3-wal文件是否存在这是正常现象备份脚本中使用的.backup命令支持 WAL 在线热备。Qrclone sync 速度太慢添加--transfers 4 --checkers 8参数增加并行传输数量或使用rclone copy替代sync仅上传新文件。Q切换 PostgreSQL 后数据丢失迁移前务必保留完整的 SQLite 备份并在 Vaultwarden 日志中确认数据库连接字符串正确。可通过docker compose logs vaultwarden | grep Database查看连接状态。QADMIN_TOKEN 忘记了怎么办从.env文件或 docker-compose.yml 的环境变量中查找。如果确实遗失停止容器修改环境变量为新 Token重启即可生效不影响用户密码库数据。密码安全无小事完善的备份策略是 Vaultwarden 自托管的必修课。从 SQLite 热备到异地对象存储再到 PostgreSQL 高可用一步步将个人密码管理打造成生产级可靠系统。想要低成本起步雨云服务器 rainyun-com1 核 2GB 机型完全够用使用优惠码2026off享 5 折优惠把省下来的钱用于对象存储备份服务才是真正的安全投资。

相关新闻

BetterJoy终极指南:3个简单步骤让你的Switch手柄在PC上完美运行

BetterJoy终极指南:3个简单步骤让你的Switch手柄在PC上完美运行

BetterJoy终极指南:3个简单步骤让你的Switch手柄在PC上完美运行 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://git…

2026/6/30 10:44:19阅读更多 →
线下展会见不到客户?短视频或许是工厂获客的另一个抓手

线下展会见不到客户?短视频或许是工厂获客的另一个抓手

做工业品的老板,每年总得跑几趟展会。订展位、搭展台、印资料、安排人手,前前后后忙活一两个月。但到了现场,常常发现来逛展的同行比客户还多。这种现象在最近几年越来越普遍,但即便如此,大部分工厂还是不愿意放弃展会…

2026/6/30 10:44:19阅读更多 →
分布式数据库:跨设备数据查询与冲突解决(98)

分布式数据库:跨设备数据查询与冲突解决(98)

在鸿蒙生态中,分布式数据库是实现跨设备无缝协同的核心底座。它允许应用在不同设备(如手机、平板、手表)间共享数据,并在设备重新连网时自动完成同步。针对跨设备数据查询与并发冲突解决,鸿蒙提供了从系统级API到应用层…

2026/6/30 10:39:19阅读更多 →
基于Airtest与Jenkins的自动化测试流水线实战指南

基于Airtest与Jenkins的自动化测试流水线实战指南

1. 项目概述:为什么我们需要“代码提交即触发”的自动化测试流水线?在移动应用和游戏开发领域,每一次代码提交都可能引入新的功能或隐藏的Bug。传统的测试流程往往是开发完成后,由测试人员手动触发一轮回归测试,这不仅…

2026/6/30 17:10:43阅读更多 →
openEuler/bigdata流处理指南:Flink与Kafka集成最佳实践

openEuler/bigdata流处理指南:Flink与Kafka集成最佳实践

openEuler/bigdata流处理指南:Flink与Kafka集成最佳实践 【免费下载链接】bigdata This repository contains common information and common tools of bigdata. 项目地址: https://gitcode.com/openeuler/bigdata 前往项目官网免费下载:https://…

2026/6/30 17:10:43阅读更多 →
d2s-editor:暗黑破坏神2存档编辑器的终极指南与实战教程

d2s-editor:暗黑破坏神2存档编辑器的终极指南与实战教程

d2s-editor:暗黑破坏神2存档编辑器的终极指南与实战教程 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款专为《暗黑破坏神2》及其重制版设计的开源存档编辑工具,能够解析和修改.d2s格式的…

2026/6/30 17:10:43阅读更多 →
DeepInsight社区贡献指南:如何参与开源项目开发

DeepInsight社区贡献指南:如何参与开源项目开发

DeepInsight社区贡献指南:如何参与开源项目开发 【免费下载链接】deepInsight The deep-research enables efficient RAG retrieval and multi-source data analysis, supporting intelligent reasoning for automated complex research tasks. 项目地址: https:/…

2026/6/30 17:10:43阅读更多 →
毕昇JDK 25部署最佳实践:生产环境中的性能调优策略

毕昇JDK 25部署最佳实践:生产环境中的性能调优策略

毕昇JDK 25部署最佳实践:生产环境中的性能调优策略 【免费下载链接】bishengjdk-25 BiSheng JDK 25 is a high-performance, production-ready distribution of OpenJDK 25. 项目地址: https://gitcode.com/openeuler/bishengjdk-25 前往项目官网免费下载&am…

2026/6/30 17:10:43阅读更多 →
Windows虚拟游戏控制器终极方案:vJoy完整开发指南

Windows虚拟游戏控制器终极方案:vJoy完整开发指南

Windows虚拟游戏控制器终极方案:vJoy完整开发指南 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy 虚拟游戏控制器vJoy是一个强大的Windows开源驱动项目,为开发者和技术爱好者提供了完整的虚拟摇杆解决…

2026/6/30 17:05:37阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode…

2026/6/30 0:02:58阅读更多 →
第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

1. PowerPoint 2010基础操作全攻略 刚接触PowerPoint 2010时,很多人会被它复杂的界面吓到。其实只要掌握几个核心区域,就能快速上手。我最开始用PPT时,经常找不到功能按钮在哪,后来发现主要操作都集中在顶部功能区。 工作窗口主要…

2026/6/30 0:02:58阅读更多 →
XGBoost超参数实战:从理论到调优策略

XGBoost超参数实战:从理论到调优策略

1. XGBoost超参数基础认知 第一次接触XGBoost时,我被它那密密麻麻的参数列表吓到了。这感觉就像面对一架波音747的驾驶舱——每个按钮都可能有神奇的效果,但按错了就可能坠机。经过多年实战,我发现其实掌握十几个核心参数就能解决90%的问题。…

2026/6/30 0:02:59阅读更多 →