分类:开源 标签:自托管、密码管理、Docker、开源项目
面对市面上主流密码管理器不断上涨的订阅费用、隐私安全隐患以及功能限制,越来越多的人开始寻求自主可控的替代方案。通过手头一台 24 小时开机的 NAS,结合开源的 Vaultwarden 后端与现代化客户端 Keyguard,我们可以打造一套完全由自己掌控、轻量且强大的密码管理系统。
为什么选择 Vaultwarden
官方的 Bitwarden 后端基于 .NET 且数据库较为笨重,而 Vaultwarden 是由社区维护的非官方开源替代方案。
- 极致轻量:镜像体积小,常驻内存通常仅需百兆左右,非常适合个人或小微团队自建。
- 功能完备:不仅完美兼容 Bitwarden 协议,还能直接解锁 TOTP 管理、多人共享等原本在官方版中需要付费的高级功能。
NAS 部署与配置指南
对于成品 NAS 用户,使用 Docker 部署是最高效的选择。整个部署过程可以归纳为以下几个核心要点:
- 镜像选择:拉取
vaultwarden/server的latest标签,后续更新只需重新拉取镜像即可。 - 持久化目录映射:将容器内部的
/data目录映射到 NAS 实体文件夹(例如/mnt/nvme16/bigk/Docker/vw/data:/data),方便后续进行数据备份或迁移。 - 端口与网络设置:建议使用
bridge网络,并将容器内的80端口映射为 NAS 上的其他可用端口(如8808:80),避免与宿主机服务产生冲突。 - 域名与环境变量:在环境变量中配置
DOMAIN的值为公网访问的域名。
解决 HTTPS 与公网访问难题
现代浏览器的「安全上下文」策略强制规定:密码管理器网页端依赖的 Web Crypto API 必须在可信网络(如 HTTPS)中才能被调用。如果在非本地网络直接通过 HTTP 或局域网 IP 访问,Vaultwarden 将会拒绝工作。
如果你不想折腾复杂的反向代理或受到运营商大内网的限制,强烈推荐使用 Cloudflare Tunnel 隧道功能:
- 登录 Cloudflare 控制台,进入 Zero Trust 的「隧道与网状网络」页面创建隧道。
- 在 NAS 上部署
cloudflared客户端(同样推荐使用 Docker)。 - 将内网的 Vaultwarden 服务映射至你的专属域名(需提前将域名托管至 Cloudflare)。
通过这种方式,不仅可以一键解决 SSL/TLS 证书问题,还能免费获得 DDoS 防护和稳定的公网访问体验。
安全加固:必要的权限管理
成功搭建并从公网访问后,务必做好安全收尾工作:
- 关闭开放注册:在容器环境变量中将
SIGNUPS_ALLOWED设置为false并重新部署,防止陌生人通过扫描或误触注册账号。 - 收紧管理后台权限:管理后台(
/admin)掌控着整个服务的数据库。建议在初始配置完成后移除ADMIN_TOKEN环境变量,彻底关闭后台访问功能。 - 开启两步验证:为主账号配置 TOTP、通行密钥或 Duo Security 等 2FA 验证方式,并妥善保管紧急恢复代码。
客户端搭配:Keyguard 与数据迁移
密码库迁移过程非常便捷,只需登录网页端进入「工具 -> 导入」,即可无缝导入 Enpass、1Password 或 Bitwarden 等主流服务导出的 JSON 数据。
在客户端选择上,除了官方的浏览器插件外,移动端及多平台体验推荐使用开源前端 Keyguard:
- 优秀的 UI 与交互:其动画效果和界面设计相比官方客户端更加现代。
- 通行密钥迁移:支持从其他应用中直接导入通行密钥,免去了繁琐的重新配置流程。
- 现代特性支持:完美接管 Android 系统的第三方自动填充功能,并且在网络波动无法连接自建数据库时,依然能稳健调用本地保存的密码库。
总结
自己动手搭建一套密码管理系统,虽然在初期需要配置网络与安全策略,但一旦链路跑通,就能获得商业软件无法比拟的可控性与自由度。配合 AI 辅助排查问题,不仅能摆脱订阅费用的束缚,还能在实践中掌握更多数码与网络原理。