自建 Vaultwarden 密码管理器:域名、关闭注册、团队共享与备份
用 Zenavo 的模板把 Vaultwarden 部署到自己的服务器上,绑定 HTTPS 域名,注册后关闭公开注册,配置邮件邀请同事,连接 Bitwarden 客户端,并做好备份和升级。
本文亦提供 English、繁體中文、日本語、Español 和 Bahasa Indonesia。
Vaultwarden 是一个开源的密码管理服务端,兼容 Bitwarden 的官方客户端:浏览器扩展、桌面版、手机 App 和命令行都能直接连上它。它用 Rust 编写,内存占用很小,一台小服务器就能给一个团队用。
把密码库放在自己的服务器上,意味着数据不经过第三方的云;也意味着域名、注册开关、备份和升级都要自己负责。这篇文章用 Zenavo 的 Vaultwarden 模板,从部署一路走到备份。
Vaultwarden 是社区项目,与 Bitwarden 公司没有关系。
部署 Vaultwarden
先在 Zenavo 中连接一台 Linux 服务器,再打开 Vaultwarden 模板,选择服务器并部署。
当前模板的配置如下:
| 配置 | 值或用途 |
|---|---|
| 镜像 | vaultwarden/server:latest |
| HTTP 端口 | 80 |
| 持久化目录 | /data:SQLite 数据库、附件、Send 文件、登录用的密钥和管理后台保存的设置都在这里 |
模板没有预设任何环境变量。下面几步把它补齐。
先绑定域名,再注册
Vaultwarden 的网页版依赖浏览器的加密接口,只能在 HTTPS 下使用,所以注册账号之前先绑定域名。
在 vaultwarden 服务的 网络 页为 80 端口绑定域名,例如 vault.example.com,在 DNS 添加指向服务器的 A 记录,等待 HTTPS 生效。步骤见域名文档。
然后在 变量 标签页添加:
DOMAIN=https://vault.example.com
保存后重启。DOMAIN 要和你实际访问的地址完全一致(包括 https://),邮件里的链接和一些客户端功能都依赖它。
创建账号,然后关闭注册
打开 https://vault.example.com,点 创建账号,设置邮箱和主密码。
主密码无法找回。 Vaultwarden 只保存加密后的数据,服务器管理员也解不开。忘记主密码就等于丢失整个密码库,请把它记在安全的地方,或者开启客户端的生物识别解锁作为日常入口。
模板默认允许任何人注册。团队成员都注册完之后,在 变量 中添加:
SIGNUPS_ALLOWED=false
保存并重启。之后只有被组织邀请的人才能加入(INVITATIONS_ALLOWED 默认开启)。如果只想允许公司邮箱注册,也可以保留注册,改用 SIGNUPS_DOMAINS_WHITELIST=example.com。
配置邮件(邀请同事需要)
邀请成员、邮箱验证、新设备登录提醒都要发邮件。在 变量 中加入你的 SMTP 服务:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURITY=starttls
SMTP_FROM=vault@example.com
SMTP_USERNAME=你的 SMTP 用户名
SMTP_PASSWORD=你的 SMTP 密码
使用 465 端口的服务商,把 SMTP_SECURITY 改为 force_tls。保存并重启。变量值在 Zenavo 中加密保存,并对团队观察者隐藏。
团队共享:组织和集合
在网页版点 新建组织,创建一个组织,再按用途建立集合,例如“服务器”“第三方账号”“财务”。把需要共享的条目放进集合,再邀请成员并指定他们能访问哪些集合。
成员接受邀请后,组织管理员还要在成员列表里确认一次,对方才能看到共享内容。这一步是为了交换加密密钥,是正常现象。
连接 Bitwarden 客户端
所有 Bitwarden 客户端在登录页都可以选择服务器:
- 在登录页找到服务器(或“登录到”)选项,选择 自托管。
- 服务器 URL 填
https://vault.example.com。 - 用你的邮箱和主密码登录。
浏览器扩展、桌面版和手机 App 都会在本地缓存一份加密的密码库,服务器短暂停机时仍能查看已有条目。
管理后台(可选)
Vaultwarden 有一个 /admin 管理后台,可以查看用户、删除账号、修改设置。没有设置 ADMIN_TOKEN 时它是关闭的,我们建议保持关闭,需要时再开启。
要开启时,不要直接用明文密码。在 vaultwarden 服务的 命令 面板运行:
/vaultwarden hash
按提示输入两次密码,它会输出一串以 $argon2id$ 开头的字符串。把整串作为 ADMIN_TOKEN 的值保存,重启后用刚才输入的密码登录 https://vault.example.com/admin。
注意:在管理后台保存的设置会写入 /data/config.json,并覆盖同名的环境变量。之后如果改变量不生效,先检查管理后台里是不是也设过。
备份
一个服务端的全部数据都在 /data 数据卷里。在 vaultwarden 服务的 备份与恢复 中备份这个数据卷:
- 选一个没人使用的时间,停止项目(数据卷备份要求项目处于停止状态)。
- 创建备份,完成后启动项目。客户端在这几分钟里仍能读取本地缓存。
- 下载一份备份自行保存。
备份文件包含加密后的密码库,但也包含附件和登录用的密钥,请像保管密码一样保管它。另外建议每个人定期在网页版用 工具 → 导出密码库 导出一份加密的 JSON,作为与服务器无关的第二份副本。
备份只有在恢复并核对过之后才算可靠。可以把备份恢复到一个新项目里,登录确认条目都在。
升级
模板使用 latest 标签,每次重新部署都可能拿到新版本。长期使用时,在服务 设置 的 来源 中把镜像改成固定版本,例如 vaultwarden/server:1.37.5(以发行页上的版本为准)。升级前先备份,读完发行说明再换版本。
常见问题
网页打不开,或者提示需要安全连接?
网页版只能通过 HTTPS 使用。确认域名已经绑定、证书已生效,并且是用 https:// 访问的。
我关闭了注册,怎么再加人? 在组织里邀请对方。配置好 SMTP 后对方会收到邀请邮件;没有 SMTP 时,被邀请的邮箱可以直接在网页版注册。
忘记主密码怎么办? 无法找回,服务器上没有能解密的东西。只能删除这个账号重新注册,原来的条目会丢失。这也是为什么要定期导出一份密码库。
手机上收不到实时同步?
网页版和桌面版会通过 WebSocket 实时同步。手机 App 的推送通知需要在 bitwarden.com/host 申请安装 ID 和密钥,再设置 PUSH_ENABLED=true、PUSH_INSTALLATION_ID 和 PUSH_INSTALLATION_KEY。不配置时,手机 App 会在打开或下拉刷新时同步。
需要多大的服务器? Vaultwarden 本身通常只占几十 MB 内存,和其他应用共用一台小服务器完全没问题。
从 Vaultwarden 模板开始:先绑定域名,再注册账号、关闭注册,最后安排好备份。
这是 coding agent 读到的内容,地址是 https://zenavo.app/zh-CN/blog/self-host-vaultwarden.md。
无法加载 Markdown,请直接打开: https://zenavo.app/zh-CN/blog/self-host-vaultwarden.md