密码多了记不住、用一个密码到处用又不安全,密码管理器就成了现代数字生活的刚需。1Password / LastPass 是闭源 SaaS,价格不菲、数据出境也有合规风险。Bitwarden 是开源免费的密码管理器,官方有 SaaS 版也可以自托管——但官方服务端是 .NET + MSSQL,重型不友好。Vaultwarden(原 bitwarden_rs)是 Bitwarden 服务端的第三方 Rust 重写版,完全兼容官方客户端,资源占用只有官方的 1/10——一个容器、单文件二进制、SQLite 存储,1C1G 都能跑。这篇文章讲清楚部署、反代、客户端使用。
阅读对象:想给团队/个人自托管密码管理器、又想用 Bitwarden 官方客户端体验的同学
覆盖范围:Vaultwarden 容器化部署、Nginx 反代(WebSocket + /admin)、Robots 屏蔽、客户端使用
一、背景
| 项目 | 状态 | 特点 |
|---|---|---|
| Bitwarden 官方服务端 | 闭源、.NET + MSSQL | 重型、SaaS 也用 |
Vaultwarden(原 bitwarden_rs) | 活跃 | Rust 重写、Bitwarden 兼容、SQLite |
| Bitwarden 客户端 | 闭源客户端 / 开源 SDK | 全平台(Win/macOS/Linux/iOS/Android/浏览器) |
重要时间线:
- 2021-04-27:
bitwarden_rs项目更名为 Vaultwarden(因为 Bitwarden 官方要求改名)- 后续社区全力投入 Vaultwarden 维护,Bitwarden 官方也认可 Vaultwarden 兼容客户端
兼容客户端:Vaultwarden 部署后,所有 Bitwarden 官方客户端(桌面、移动、浏览器扩展)都能直接连接 Vaultwarden 服务端。
二、容器化部署
2.1 拉镜像
| |
Alpine 版 ~50MB,比 Debian 版小 5 倍。
2.2 最简启动
| |
访问 http://{{HOST}}:8087 看 Web 界面(其实 Web 端用得少,主要用客户端)。
2.3 数据持久化
/data 目录存 SQLite 数据库 + 附件,必须挂出来。
2.4 启用管理后台(可选)
容器内 /data/config.json:
| |
重启 Vaultwarden 后,访问 https://{{DOMAIN}}/admin,输入 {{ADMIN_TOKEN}} 进入管理后台:
- 查看注册用户数
- 邀请新用户
- 删除用户
- 查看系统状态
生产环境强烈建议开启:方便清退离职员工、清异常账号。
2.5 禁用注册(生产环境)
默认任何人都能注册。要么手动邀请(管理后台生成邀请链接),要么关掉:
| |
关掉后只有管理后台邀请的邮箱能注册,安全得多。
2.6 关闭 Web Vault(可选)
如果你只用客户端、不需要 Web 端:
| |
减少攻击面。
三、Nginx 反向代理
Vaultwarden 涉及 WebSocket(实时通知)+ HTTPS(官方客户端要求) + /admin(管理后台) + /notifications/hub(实时通知):
| |
/notifications/hub必须用 WebSocket:客户端实时同步密码变更(多设备)依赖 WebSocket,缺了同步会有延迟。robots.txt屏蔽:Vaultwarden 路径不应当被搜索引擎收录,避免泄露用户邮箱前缀(注册验证邮件 URL)。 HTTPS 必须:Bitwarden 官方客户端要求 HTTPS,明文 HTTP 客户端拒绝连接。
3.1 /admin 必须 IP 白名单
/admin 是高权限入口,建议加 IP 白名单:
| |
四、客户端使用
4.1 桌面 / 移动客户端
到 https://bitwarden.com/download/ 下载对应平台客户端,安装过程和官方 SaaS 一样。
首次配置:
- 服务器 URL:填
https://vault.example.com(不是官方https://vault.bitwarden.com) - 邮箱 + 密码注册(如果开了
disable_signup,先用管理后台邀请) - 登录后自动同步
4.2 浏览器扩展
Chrome / Edge / Firefox 都有 Bitwarden 官方扩展,安装后点"设置 → 服务器 URL"填自托管地址。
4.3 客户端特性
- 密码自动填充
- 跨设备同步(WebSocket 实时)
- TOTP 双因素认证
- 密码生成器
- 安全审计(弱密码、重复密码、泄露检查)
- 附件 / 文件存储
- 紧急访问(指定信任人)
五、备份与安全
5.1 备份
- SQLite 数据库(
/data/db.sqlite3):每周sqlite3 .backup或直接cp - 附件目录(
/data/attachments):增量备份到 OSS config.json:包含admin_token,单独保管
5.2 安全建议
- 强制 HTTPS——客户端拒绝明文 HTTP
- 管理后台 IP 白名单——见 3.1
- 强 admin_token——32+ 位随机字符串
- 开启 2FA——所有用户强制开启二次验证(管理后台可设)
- 禁用注册——
disable_signup: true,只邀请 - 定期审计——
/admin看活跃用户、清退离职员工 - fail2ban——
/admin加 fail2ban 防止爆破
六、踩坑清单
- 客户端连不上——HTTPS 没配 / 证书错误 / 客户端服务器 URL 填错
- 同步延迟——
/notifications/hubWebSocket 没配,缺实时推送 - /admin 502——
config.json没挂出来或admin_token没设 - 数据丢失——
/data没挂出来,容器销毁即丢 - 附件上传失败——
client_max_body_size默认 1M,调成 128M - 被搜索引擎收录——
/robots.txt没配,路径暴露到 Google - 多人协作看不到——
disable_signup: true后只用管理后台邀请,Organization 功能需要付费
七、参考资料
- Vaultwarden 官方仓库:https://github.com/dani-garcia/vaultwarden
- Vaultwarden 文档:https://github.com/dani-garcia/vaultwarden/wiki
- Bitwarden 客户端:https://bitwarden.com/download/
- Bitwarden 自托管文档:https://bitwarden.com/help/install-on-premise/
下一步
- 想要 HTTPS 网关?→ Nginx 反向代理实战 一文
- 想要 VPN?→ OpenVPN 自建 VPN 服务 一文
- 想做安全监控?→ HertzBeat 轻量监控告警 一文
