基于 Vaultwarden 和 Keyguard 的自托管密码管理实践
内容提要
作者因 Enpass 订阅涨价,转而在 NAS 上用 Docker 自托管 Vaultwarden 管理三四百个密码。部署要点:映射 /data 目录持久化数据、修改端口、配置 DOMAIN 环境变量,且必须通过 HTTPS 访问。推荐用 Cloudflare Tunnel 实现内网穿透并自动解决证书问题。安全建议:注册后关闭 SIGNUPS_ALLOWED、慎用或关闭 /admin 后台、启用 2FA。迁移用导入功能,浏览器用官方插件,移动端推荐 Keyguard。
延伸解读
为什么选择 Vaultwarden 而非官方 Bitwarden 自托管
文章指出,Vaultwarden 是社区维护的非官方 Bitwarden 后端,相比官方基于 .NET 和笨重数据库的自托管方案,其 Docker 镜像极其轻巧,常驻内存通常不过百兆。更重要的是,它能从后端直接解锁 TOTP 管理、多人共享等高级功能,而官方服务对免费用户在前端隐藏了 TOTP 入口。对于拥有 NAS 且希望低成本自建的个人或小团队,Vaultwarden 在资源占用和功能完整性上优势明显。
HTTPS 是自托管密码管理的硬性门槛
文章强调,除非仅在 NAS 本地 localhost 访问,否则通过局域网 IP 以 HTTP 打开 Vaultwarden 会被浏览器拒绝,因为密码管理器依赖的 Web Crypto API 只在可信网络(HTTPS)下可用。这意味着远程访问必须配置 HTTPS。作者推荐使用 Cloudflare Tunnel 实现内网穿透,它不仅能自动解决 SSL/TLS 证书问题,还附带免费 DDoS 防护和访问控制,尤其适合国内低等级 NAT 家庭宽带用户。
部署后必须立即收紧的权限设置
文章提醒,Vaultwarden 默认允许任何人注册账号,若域名被扫描或误入,他人可在你的服务中注册并上传附件,使其沦为公共网盘。因此注册完自己的账号后,应立即将 SIGNUPS_ALLOWED 设为 false 并重新部署。此外,/admin 管理后台默认关闭,若开启需设置复杂的 ADMIN_TOKEN;作者建议配置完成后直接删除该字段,彻底关闭后台,以降低安全风险。
迁移与客户端选择:并行过渡,移动端可换 Keyguard
文章建议迁移时使用 Vaultwarden 的导入功能,作者的三四百条 Enpass 数据通过 JSON 格式完美解析。在确认所有登录方式迁移完成前,最好让新旧工具并行一段时间,不要立即卸载原密码管理器。浏览器端目前只有 Bitwarden 官方插件可用;移动端作者推荐开源第三方客户端 Keyguard,其 UI 和交互更优,支持通行密钥迁移,并能接管 Android 14 的第三方自动填充,即使网络波动也能依靠本地密码库正常使用。
Q&A
为什么作者选择自托管 Vaultwarden 而不是继续用 Enpass 或其他密码管理器?
作者因 Enpass 订阅涨价而决定不再续费,需要为三四百个密码搬家。其他选项各有问题:1Password 订阅费用高昂,LastPass 有安全丑闻,KeePass 跨平台体验碎片化,Bitwarden 官方服务对 TOTP 等高级功能收费且客户端体验不拔尖。由于家里有 24 小时开机的 NAS,自托管 Vaultwarden 成为自然选择。
Vaultwarden 和官方 Bitwarden 自托管后端相比有什么优势?
Vaultwarden 是由社区维护的非官方开源 Bitwarden 后端服务。与官方基于 .NET 和笨重数据库的自托管后端相比,Vaultwarden 镜像极其轻巧,常驻内存通常不过百兆;核心功能完备,还能直接从后端解锁 TOTP 管理、多人共享等高级功能,非常适合个人和小微团队自建使用。
在 NAS 上用 Docker 部署 Vaultwarden 需要注意哪些关键参数?
关键参数包括:1. 镜像拉取使用 vaultwarden/server 的 latest 标签;2. 目录映射将容器内 /data 目录映射到 NAS 实体文件夹以持久化数据;3. 端口映射修改 ROCKET_PORT 或使用 bridge 网络将 80 端口映射为其他端口;4. 环境变量中配置 DOMAIN 为公网域名。图形化部署修改环境变量后可能需重建容器,Docker Compose 建议将变量写入 .env 文件。
为什么 Vaultwarden 必须通过 HTTPS 访问?如何解决 HTTPS 和公网访问问题?
因为浏览器有安全上下文强制策略,密码管理器网页端依赖的 Web Crypto API 加密接口只在可信网络中才能调用,家庭内网 HTTP 连接会被判定为不可信,Vaultwarden 无法调用该接口就会拒绝访问。解决方法是使用反向代理处理 HTTPS 请求,并通过 Let's Encrypt 或 Cloudflare 获取证书。对于低等级 NAT 或想省事的用户,推荐使用 Cloudflare Tunnel 隧道功能,它能安全映射内网服务并自动解决 SSL/TLS 证书问题,还提供免费 DDoS 防护和访问控制。
部署 Vaultwarden 后有哪些必要的安全设置?
注册账号后应立即将 SIGNUPS_ALLOWED 环境变量设为 false 并重新部署容器,防止他人注册。管理后台 /admin 默认关闭,如需启用需设置复杂的 ADMIN_TOKEN,但建议配置完成后删除该字段彻底关闭后台。此外应启用主账号的 2FA 两步验证,支持 TOTP、通行密钥或 Duo Security,并妥善保管紧急恢复代码。
如何将现有密码迁移到 Vaultwarden?浏览器和移动端分别用什么客户端?
登录 Vaultwarden 后进入「工具」页面选择「导入」,可导入主流密码管理器格式,如 Enpass (JSON)。迁移完成前建议不要立即卸载旧工具,让两者并行一段时间。浏览器端使用 Bitwarden 官方插件,安装后选择自托管服务并输入域名登录即可自动填充。移动端推荐第三方开源客户端 Keyguard,支持多平台,UI 和交互更出色,还能从其他应用导入通行密钥,并接管 Android 版 Chrome 的第三方自动填充。