密码管理器劝退自托管的理由通常是两条,官方服务端太重,官方客户端不够顺手。少数派十月初的实践文章给出了一套组合解法,轻量服务端 Vaultwarden 配多平台客户端 Keyguard。我把两个项目的官方文档过了一遍,再加上 Bitwarden 官方口径,把这套方案的边界讲清楚。
两件套各管什么
Vaultwarden 是用 Rust 重写的 Bitwarden 兼容服务端,前身叫 bitwarden_rs,仓库星数六万八千多,宽传染许可,二零一八年创建至今持续维护,我查时最近一次推送就在前一天。功能覆盖了官方服务端的绝大部分条目,组织与密码分享、附件、密码暂存发送、两步验证含硬件密钥、紧急访问、管理面板都有,还打包了修改版网页保险库。它存在的意义就一条,资源占用小,一台小型主机甚至树莓派就能跑,官方服务端那套多容器架构可以省了。体感对比更直接,官方服务端要拉起一串容器组件,内存占用以 GB 计,小型主机扛得辛苦。这个 Rust 实现单进程跑起来,几百 MB 内存足矣,树莓派这类低功耗设备常年开机也轻松,电费与噪音都友好。
Keyguard 是第三方客户端,同时兼容 Bitwarden 服务端与 KeePass 数据库,安卓可穿戴设备、Linux、视窗、苹果桌面全覆盖,苹果手机端尚未正式发布可内测。自动填充、通行密钥、动态口令、离线使用、安全审查一应俱全。有个常见误解要纠正,它常被叫作开源客户端,实际许可证为保留所有权利,源码仅限个人使用,属于源码可见的商业软件,介意这一点的读者要知道实情。技术栈倒是很现代,跨平台界面框架加原生 Rust 模块,二零二三年创建,推送频繁,桌面端的键盘体验与命令面板做得到位,重度用户迁移成本低。
怎么搭起来
部署以容器为主。官方提供三大镜像仓库的现成镜像,一条命令或一份编排文件起服务,数据目录挂载好,域名环境变量填对,剩下交给反向代理处理证书。这里给新手划重点,官方文档明确建议生产环境用反代实现加密连接,移动客户端连接自建服务要求有效证书,自签证书会卡在校验。管理面板的动态令牌务必设强值,面板暴露在公网又用弱口令等于把保险库钥匙挂门上。
客户端接入只需一步。各平台客户端设置里都有服务器地址项,填自建域名即可,Bitwarden 官方帮助文档写明了这条路径。官方对第三方服务端没有正式兼容声明,出了问题别去官方支持渠道问,Vaultwarden 自己的文档也这么提醒,社区议题区才是对的地方。安全审查功能顺带一提,客户端会定期检查保险库里有无泄露过的、弱的、重复的口令并汇总提醒,相当于自带的体检报告,企业级产品把这个当卖点,这里免费送。
解决了什么需求
自托管的动机无非信任与成本。全家人的密码放在第三方云上,理论上零知识加密,实际上你信的是厂商的工程与管理。自己保管数据,备份策略、访问控制、事故责任全部自己承担,换来的是确定性。成本上,这套组合软件层面免费,Keyguard 只在谷歌商店渠道把编辑保险库与多账户锁在付费墙,其他渠道的构建全部功能开放,订阅或买断由授权令牌打通设备。
三条铁律来自官方文档与文章作者共同的叮嘱。备份自己负责,数据库文件与挂载目录定期快照,作者对数据丢失明确免责。主密码忘了谁也救不了你,这不是客服能重置的口令。证书与域名续费设提醒,服务断了自己锁自己门外的滋味不好受。
会动手的爱好者从一台闲置小主机开始,一小时能跑通全家方案。不想碰运维的继续用官方云服务没有任何问题,自托管从来只是一种选择,不是道德高地。
来源
- Vaultwarden 仓库 https://github.com/dani-garcia/vaultwarden
- Keyguard 仓库 https://github.com/AChep/keyguard-app
- Keyguard 官网 https://keyguard.dev
- Keyguard 付费说明 https://keyguard.dev/docs/premium/
- Bitwarden 客户端自托管配置 https://bitwarden.com/help/configure-clients-selfhost/
- 少数派实践文章 https://sspai.com/post/115416