Blog
自建 Vaultwarden 密码库
密码管理器是安全体系的枢纽:站点口令、恢复码、服务器密钥、甚至家人的共享条目,可能都汇在一处。Bitwarden 官方很好用。我额外跑了 Vaultwarden 作为自托管节点,关键数据仍保持可导出——双轨,图的是可控,不是信仰。这篇按威胁模型随笔来写,并强调备份是义务。
威胁模型:你在防谁,又在赌什么
先列几类对手,避免空谈「更安全」。
- 随机扫公网的机器人:撞默认端口、弱管理令牌、开放注册。对策是不暴露或强限制 admin、关公开注册、HTTPS 与强主密码。
- 拿到你备份包的人:若备份未加密,密码库等于整锅端。对策是备份本身加密,密钥分开放。
- 你自己:误删卷、升级翻车、磁盘静默坏、三年没测恢复。这往往是自托管最大的敌人。
- 设备丢失:手机丢了,会话与 2FA 设备是否还能控。远程登出、会话超时、2FA 恢复码离线存放。
自托管把「SaaS 厂商的可用性与备份」换成了「你的 SRE 能力」。主权拿回家的前提,是你真的有能力照看它。若不能保证备份与恢复演练,请用可靠 SaaS,不要硬刚「全部自己掌控」的浪漫。
部署底线(不满足就别上生产条目)
HTTPS 必须,别内网 HTTP 凑合——密码管理器的流量不该以明文习惯起步。管理令牌设强,装完尽快关掉公开注册。反代要通 WebSocket,否则同步和通知行为会怪。反代后注意真实 IP 与安全头。容器数据目录权限收紧;admin 只走 VPN 或 Access,用完可关或限制 IP。
官方 Bitwarden 客户端可连自建 URL。开启 2FA。Web 保险库会话超时设短一点。这些不是锦上添花,是威胁模型里「机器人 + 会话劫持」的直接回应。
备份义务:丢了比相册惨
数据目录和数据库要加密备份到异地。密码库丢了,损失可能大于相册——所有站点密码、恢复码、服务器密钥可能都在里面。节奏上:自动每日加密备份,异地一份;定期(例如每季度)在另一台机器还原,客户端能否解锁、条目是否完整。别假设 tar 出来就能用;权限、路径、版本都可能绊你。
导出纪律单独一条:定期加密导出到第二个地点,与自动备份互补。导出是人类可读的退路,备份是整库恢复的退路。主密码与备份密钥不要写在同一张明文备忘录里。手机丢了靠 2FA 和远程登出止损;恢复码放密封纸质或加密 U 盘,不放在被同一个盘加密的「保险库说明.md」里循环依赖。
家庭与应急出口
家庭场景再多想一步:万一你不在,家人如何在授权下取出必要密码?可信联系人功能、或离线应急包(密封、分地点),这不是晦气,是成年人的备份。条目组织上,真正紧急的(门禁、银行客服、云控制台)与「可稍后重置的论坛号」分开,应急包只放最小集。
升级 Vaultwarden 前快照或备份;看变更日志里有没有破坏性迁移。监控容器存活与磁盘空间——库所在盘写满,比被黑更常见地造成「打不开」。反代层的请求体大小与超时也要够客户端同步大附件条目,否则会出现「网页能开、客户端同步失败」的假故障,排障时别先怀疑数据库坏了。
和官方云双轨怎么处
我把真正高价值、需要多端稳定同步的一部分仍保持可迁回官方或可导出状态;实验性自建节点先装不致命的条目练手,跑稳备份演练后再迁移核心。迁移那天再测一遍:新客户端加解锁、旧设备撤销、2FA 仍可用。双轨不是永久分裂人格,是给自己留撤退路线。
威胁模型随笔写到最后,其实就一句:自托管密码库让你成为自己的 SRE,可用性、升级、备份演练是义务。做得到,主权有意义;做不到,主密码记在浏览器里加「我有自建库」的幻觉,比老实用 SaaS 更危险。备份义务写进日历,与磁盘 scrub、证书到期同一优先级——密码库不是「又一个 Docker 玩具」,是整屋密钥的总账本。