网站、邮箱、NAS、路由器,再加上各种 App,账号很快就会多到记不住。很多人只好重复使用同一个密码,或者把密码散落在浏览器、备忘录和聊天收藏里。前者怕撞库,后者换台设备就很难找全。
Bitwarden 就是用来解决这件事的。它可以保存账号、密码、通行密钥和安全笔记,手机、电脑和浏览器插件都能同步,登录网站时还能自动填充。
Bitwarden 和 Vaultwarden 有什么区别
Bitwarden 提供官方客户端和官方服务端。直接注册 Bitwarden 云账号最省事,也可以在自己的设备上部署官方服务端。现在官方还有面向个人和小型环境的 Lite 版。
Vaultwarden 是一个兼容 Bitwarden 客户端的第三方服务端,不是 Bitwarden 官方产品。它默认一个容器配 SQLite 就能运行,配置少、占用资源也不高,很适合家用 NAS。日常使用时,手机 App、桌面客户端和浏览器插件仍然用 Bitwarden 官方版本,只把服务器地址改成自己的 Vaultwarden,可以把它看操作Bitwardeng的开源版。
对 NAS 用户来说,这套组合比较顺手:客户端成熟,服务端放在自己家里,数据由自己保管。不过,Vaultwarden 属于社区项目,官方客户端更新后不能保证永远兼容。更新服务端前要先看发布说明,并做好备份。

图:本站 NAS 上实际运行的 Vaultwarden,已加 `nascheck.cn` 水印。
NAS 是服务端,手机和插件也会保存数据
Vaultwarden 不是一个只能在 NAS 网页里打开的密码本。它是同步服务端:手机、电脑和浏览器插件登录后,会从 NAS 拉取密码库,并在本机留下加密缓存。
简单说,NAS 坏了,不等于手机和插件里已经同步的密码会马上消失。已经登录并完成过同步、且没有清除本地数据的客户端,通常仍能解锁并只读查看此前同步的密码。等 NAS 恢复后,客户端可以继续同步。
有三个限制:
- 服务端离线时其他端不能新增、修改或导入数据。
- 不要在 NAS 故障期间退出账号;“锁定”会保留缓存,“退出登录”会移除本地密码库。
- 新手机、新浏览器或被清除数据的客户端,仍要连接服务端才能登录。
服务端的 /data 目录仍要单独备份。
哪些人适合自己部署
- 重试密码安全但是又不想自己去记忆这么多密码的人。
- 密码要在手机、电脑和多个浏览器之间同步。
- 已经有长期运行的 NAS,也愿意定期备份和更新容器。
- 想把家庭成员的共享账号放进一个独立组织,而不是发在群聊里。
- 希望数据留在自己的设备上,并能控制登录入口。
如果不想维护 HTTPS、备份和更新,直接使用 Bitwarden 官方云服务会更省事。自行部署的好处是掌控数据和访问方式,维护工作也同样归自己。
在 NAS 上部署 Vaultwarden
下面以 Docker Compose 为例。命令和配置先收起来,需要部署时再展开。
展开:Docker Compose 部署步骤
1. 准备目录和域名
先在 NAS 上建立持久化目录,例如:
/你的NAS目录/docker/vaultwarden/data
再准备一个只用于密码库的域名,例如 vault.example.com。Bitwarden 客户端连接自建服务时应使用 HTTPS。
2. 新建 compose.yaml
services:
vaultwarden:
image: vaultwarden/server:1.37.1
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
# 第一次注册账号时临时改成 true,注册完成后立即改回 false
SIGNUPS_ALLOWED: "false"
volumes:
- /你的NAS目录/docker/vaultwarden/data:/data
ports:
# 只交给 NAS 本机的反向代理,不直接监听所有网卡
- "127.0.0.1:8222:80"
把域名和目录改成自己的。这里固定使用核对过的版本,没有直接写 latest。
3. 第一次启动和注册
第一次启动前,把 SIGNUPS_ALLOWED 临时改成 true:
docker compose up -d
docker compose logs --tail=100 vaultwarden
确认容器正常后,在 NAS 的反向代理中把 https://vault.example.com 转发到 http://127.0.0.1:8222,并配置有效的 HTTPS 证书。注册自己的账号后,把 SIGNUPS_ALLOWED 改回 false,再运行一次:
docker compose up -d
如果反向代理本身也在 Docker 中,就让它和 Vaultwarden 加入同一个 Docker 网络,通过容器名访问。不要为了方便把端口改成直接监听公网。
手机、电脑和浏览器怎么连接
安装 Bitwarden 官方 App 或浏览器插件,在第一次登录前打开服务器设置,选择“自托管”,填入自己的地址:
https://vault.example.com
然后正常登录。之后在任意一台设备保存或修改密码,其他在线设备都会同步。个别客户端没有立刻更新时,可以在菜单里手动点一次“同步”。

图:Bitwarden 官方客户端的自托管服务器设置。原图来自 Bitwarden 官方帮助文档,本站加注 `nascheck.cn`。
导入旧密码和 OTP
导入浏览器或其他密码管理器的数据
先从原来的工具导出,再到 Vaultwarden 网页端打开“工具 / Tools → 导入数据”,选择对应格式上传。建议先用几条数据试一次,确认用户名、网址和备注都正常后再导入全部内容。
重复导入通常会产生重复项目,不会自动覆盖。导出的 CSV 或 JSON 很可能是明文文件,导入完成并确认无误后应尽快删除,也不要通过聊天软件传输。
迁移以前的 OTP
OTP 迁移靠的是密钥或 otpauth:// 数据,不是当前显示的六位验证码。只有六位验证码,无法还原后续验证码。
建议继续让 OTP 和密码分开保存。Bitwarden Authenticator 可以导入 Google Authenticator、Aegis、2FAS、LastPass Authenticator 等常见格式。迁移后先逐个登录测试,确认新旧验证器生成的验证码一致,再删除旧 App 里的记录。

图:Bitwarden Authenticator。原图来自 Bitwarden 官方,本站加注 `nascheck.cn`。画面为演示数据。
也可以把 OTP 密钥填进 Vaultwarden 对应的登录项目,这样自动填密码后还能自动填验证码,使用更方便。代价是密码和第二重验证放在了同一个密码库里。无论选哪种方式,不要把 Vaultwarden 自己账号的唯一 OTP 也只放在 Vaultwarden 里;恢复代码应单独保管。
在外面怎么连接家里的 NAS
这部分下一篇再写完整步骤,这里先把三种方案分清:
| 方式 | 适合谁 | 需要注意 |
|---|---|---|
| Tailscale | 想快速用起来,多数家庭用户 | 只在私有 Tailnet 内访问;不要开启会把服务公开到互联网的 Funnel |
| EasyTier | 想自己掌握更多组网节点和配置 | 开启加密/安全模式,所有设备使用同一套网络凭据 |
| 宝塔反向代理 | 已经有公网域名和规范防护经验 | 它是反向代理,不是异地组网;使用它通常意味着要维护公网入口 |
这三种里,家庭使用优先考虑 Tailscale;想减少对第三方协调服务的依赖,再研究 EasyTier。无论用哪一种,都不要直接在路由器上把 Vaultwarden 容器端口转发到公网。
备份和更新
备份时,直接备份 compose 中映射到 /data 的整个目录,里面包括数据库、附件和密钥材料。至少再放一份到另一台设备或加密云存储,不能只留在同一台 NAS 上。
更新前先备份 /data,再查看 Vaultwarden 的发布说明和兼容性信息。确认没有问题后,修改镜像版本并重建容器。手机和插件里的离线缓存只是临时副本,不应当作为恢复服务端的办法。
发布前检查这几项就够了:关闭公开注册、全程使用 HTTPS、不直接开放容器端口、单独保存恢复代码、定期备份整个 /data 目录。