自建密码库 Vaultwarden:部署、备份与「别把自己锁在外面」
密码库是「丢了就全丢」的服务,自建能拿回控制权,但也把「备份责任」揽到自己身上。
Vaultwarden 用 SQLite 或 PostgreSQL 存数据,单容器即可运行,资源占用小,适合小主机。
先说结论
必须 HTTPS,必须每日备份数据库,必须留一份离线应急副本。
- 官方客户端要求 HTTPS,纯 HTTP 无法登录
- 管理员面板用 token 保护,不要对外开放
- 每日备份 db.sqlite3 并异地保存
- 记下主密码:忘了谁都救不了
先把问题说清楚
Vaultwarden 的数据就是一个 SQLite 文件(或 PG 库),备份极其简单——但正因为简单,很多人忘了做。
客户端在登录时会校验服务端证书,自签证书需要额外信任配置,最好用正式证书。
具体怎么做
按顺序执行,每步都验证完再进下一步:
- 用 compose 起服务,挂载 data 目录
- 配反向代理与证书,强制 HTTPS
- 设置 ADMIN_TOKEN,登录管理面板关闭注册
- 加每日备份任务:sqlite3 .backup 或直接 copy(停机)
- 在手机与浏览器装 Bitwarden 客户端,指向自建地址
参数与成本对照
把关键数值摊开,方便判断该选哪条路:
| 项目 | 建议 | 说明 |
|---|---|---|
| 部署方式 | Docker 单容器 | 升级简单 |
| 数据库 | SQLite(小规模) | 备份只需一个文件 |
| HTTPS | 必须 | 客户端强校验 |
| 备份频率 | 每日 + 每周异地 | 库很小,成本低 |

几个容易踩的坑
下面这些是最常见的错误做法:
- 用 HTTP 访问:客户端直接拒绝登录
- 注册开放:陌生人可以注册你的实例
- 忘记主密码:数据无法解密
- 只备份容器不备份 data 目录
最后补两句
密码库的可靠性 = 备份频率 × 恢复演练次数。只做前一半,等于没做。
工具是手段,理解机制才是能力。命令记不住没关系,知道「该看什么」就够了。
评论 (3)
照着做了一遍,确实少走弯路。第二步最容易漏,建议顺手加个检查清单。
比「一键脚本」有用多了,知道为什么比知道怎么做重要。
补充一句:不同版本行为会变,动手前先确认自己的版本号。
发表评论