分类:开源 标签:自托管、密码管理、Docker、开源项目


面对市面上主流密码管理器不断上涨的订阅费用、隐私安全隐患以及功能限制,越来越多的人开始寻求自主可控的替代方案。通过手头一台 24 小时开机的 NAS,结合开源的 Vaultwarden 后端与现代化客户端 Keyguard,我们可以打造一套完全由自己掌控、轻量且强大的密码管理系统。


为什么选择 Vaultwarden

官方的 Bitwarden 后端基于 .NET 且数据库较为笨重,而 Vaultwarden 是由社区维护的非官方开源替代方案。

  • 极致轻量:镜像体积小,常驻内存通常仅需百兆左右,非常适合个人或小微团队自建。
  • 功能完备:不仅完美兼容 Bitwarden 协议,还能直接解锁 TOTP 管理、多人共享等原本在官方版中需要付费的高级功能。

NAS 部署与配置指南

对于成品 NAS 用户,使用 Docker 部署是最高效的选择。整个部署过程可以归纳为以下几个核心要点:

  1. 镜像选择:拉取 vaultwarden/server 的 latest 标签,后续更新只需重新拉取镜像即可。
  2. 持久化目录映射:将容器内部的 /data 目录映射到 NAS 实体文件夹(例如 /mnt/nvme16/bigk/Docker/vw/data:/data),方便后续进行数据备份或迁移。
  3. 端口与网络设置:建议使用 bridge 网络,并将容器内的 80 端口映射为 NAS 上的其他可用端口(如 8808:80),避免与宿主机服务产生冲突。
  4. 域名与环境变量:在环境变量中配置 DOMAIN 的值为公网访问的域名。

解决 HTTPS 与公网访问难题

现代浏览器的「安全上下文」策略强制规定:密码管理器网页端依赖的 Web Crypto API 必须在可信网络(如 HTTPS)中才能被调用。如果在非本地网络直接通过 HTTP 或局域网 IP 访问,Vaultwarden 将会拒绝工作。

如果你不想折腾复杂的反向代理或受到运营商大内网的限制,强烈推荐使用 Cloudflare Tunnel 隧道功能:

  1. 登录 Cloudflare 控制台,进入 Zero Trust 的「隧道与网状网络」页面创建隧道。
  2. 在 NAS 上部署 cloudflared 客户端(同样推荐使用 Docker)。
  3. 将内网的 Vaultwarden 服务映射至你的专属域名(需提前将域名托管至 Cloudflare)。

通过这种方式,不仅可以一键解决 SSL/TLS 证书问题,还能免费获得 DDoS 防护和稳定的公网访问体验。


安全加固:必要的权限管理

成功搭建并从公网访问后,务必做好安全收尾工作:

  • 关闭开放注册:在容器环境变量中将 SIGNUPS_ALLOWED 设置为 false 并重新部署,防止陌生人通过扫描或误触注册账号。
  • 收紧管理后台权限:管理后台(/admin)掌控着整个服务的数据库。建议在初始配置完成后移除 ADMIN_TOKEN 环境变量,彻底关闭后台访问功能。
  • 开启两步验证:为主账号配置 TOTP、通行密钥或 Duo Security 等 2FA 验证方式,并妥善保管紧急恢复代码。

客户端搭配:Keyguard 与数据迁移

密码库迁移过程非常便捷,只需登录网页端进入「工具 -> 导入」,即可无缝导入 Enpass、1Password 或 Bitwarden 等主流服务导出的 JSON 数据。

在客户端选择上,除了官方的浏览器插件外,移动端及多平台体验推荐使用开源前端 Keyguard:

  • 优秀的 UI 与交互:其动画效果和界面设计相比官方客户端更加现代。
  • 通行密钥迁移:支持从其他应用中直接导入通行密钥,免去了繁琐的重新配置流程。
  • 现代特性支持:完美接管 Android 系统的第三方自动填充功能,并且在网络波动无法连接自建数据库时,依然能稳健调用本地保存的密码库。

总结

自己动手搭建一套密码管理系统,虽然在初期需要配置网络与安全策略,但一旦链路跑通,就能获得商业软件无法比拟的可控性与自由度。配合 AI 辅助排查问题,不仅能摆脱订阅费用的束缚,还能在实践中掌握更多数码与网络原理。