Vaultwarden:自托管密码管理器实战指南,用Docker部署你的私有密码库
每次注册新网站都要想一个新密码,结果要么记不住,要么所有账号共用一个"万金油"密码——只要一个站点泄露,所有账号跟着遭殃。云端密码管理器(1Password、Bitwarden Premium)又要按年付费,密码数据还托管在别人服务器上。有没有一种方案,密码存在自己的机器上,客户端体验又不打折?答案就是自托管密码管理服务器 Vaultwarden。
一、项目背景
Vaultwarden(原名 bitwarden_rs)是 Bitwarden 服务端的第三方开源实现,用 Rust 语言编写,GitHub 收获 69.5k Star。它实现了完整的 Bitwarden Client API,也就是说:你部署一个 Vaultwarden 服务器,然后直接用官方 Bitwarden 的浏览器扩展、手机 APP、桌面客户端连接它,客户端体验和官方云端版完全一致,但数据只存在你自己的机器上。
和官方 Bitwarden 服务端(C#/.NET 实现)相比,Vaultwarden 的内存占用通常只有 50MB 左右,官方版本动辄几百 MB 到 1GB,非常适合部署在 NAS、低配 VPS 或树莓派上。
二、主流密码管理方案对比
| 对比维度 | Vaultwarden(自托管) | Bitwarden 云端免费版 | 1Password |
|---|---|---|---|
| 费用 | 完全免费(含TOTP、报告) | 免费(TOTP需Premium) | $35.88/年 |
| 数据存储 | 自己服务器,端到端加密 | Bitwarden官方服务器 | AgileBits服务器 |
| 内存占用 | ~50MB(Rust) | 几百MB(C#/.NET) | — |
| 客户端 | 官方Bitwarden全平台客户端 | 官方Bitwarden全平台客户端 | 1Password专属客户端 |
| TOTP双因素 | 免费内置 | 需Premium($10/年) | 内置 |
| 紧急访问/家庭共享 | 支持Organizations | 支持(免费有限额) | 支持 |
简单来说:想要数据自主权 + 零成本,Vaultwarden 是当前最优解;不想折腾服务器就用 Bitwarden 免费云端;预算充足且完全不想运维就选 1Password。
三、Docker 一键部署
部署 Vaultwarden 只需要 Docker 环境,五分钟搞定。以下是完整的 docker-compose 配置:
mkdir -p /opt/vaultwarden/data
cd /opt/vaultwarden
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- "8080:80"
volumes:
- ./data:/data
environment:
# 域名(HTTPS必需,后面会讲为什么)
DOMAIN: "https://vault.example.com"
# 管理后台邀请令牌(首次注册用)
ADMIN_TOKEN: "your-strong-random-token-here"
# 关闭注册,只允许邀请用户
SIGNUPS_ALLOWED: "false"
# 启用WebAuthn(可选)
WEBAUTHN_ENABLED: "true"
# SMTP邮件配置(用于验证邮箱、发送紧急访问请求)
SMTP_HOST: "smtp.qq.com"
SMTP_PORT: "465"
SMTP_FROM: "your@qq.com"
SMTP_USERNAME: "your@qq.com"
SMTP_PASSWORD: "your-smtp-auth-code"
SMTP_SECURITY: "ssl"
EOF
docker compose up -d
echo "部署完成!访问 http://localhost:8080"
其中 ADMIN_TOKEN 是进入管理后台(/admin)的令牌,建议用强随机字符串:
openssl rand -base64 32
访问 http://服务器IP:8080,你会看到 Bitwarden 风格的登录页。用你设置的 ADMIN_TOKEN 访问 /admin 路径,可以进行用户管理、备份配置、SMTP 设置等操作。
四、客户端配置(浏览器+手机)
Vaultwarden 部署好后,直接使用官方 Bitwarden 客户端即可。
4.1 浏览器扩展#
安装 Bitwarden 浏览器扩展(Chrome/Edge/Firefox 应用商店搜索 "Bitwarden"),打开扩展设置,找到 Self-hosted 选项,填入你的服务器地址(如 https://vault.example.com),即可登录并同步你的密码库。
4.2 手机 APP#
iOS 在 App Store、Android 在 Google Play/应用商店搜索 "Bitwarden" 安装。首次打开同样选择 Self-hosted,输入服务器地址即可同步。手机端支持指纹/面容解锁、自动填充表单,体验流畅。
4.3 桌面客户端#
Windows/macOS/Linux 桌面客户端也支持自托管服务器,配置方式同上。
五、踩坑记录
坑1:HTTP 访问时浏览器扩展/手机 APP 拒绝连接
Bitwarden 客户端强制要求 HTTPS(除了 localhost),HTTP 访问会提示 "Invalid server response"。解决方案有两种:
- 方案A(推荐):配置 Nginx/Caddy 反向代理 + Let's Encrypt 免费 SSL 证书
- 方案B(临时测试):浏览器扩展可以在
chrome://flags/#unsafely-treat-insecure-origin-as-secure中把 HTTP 地址加入白名单;手机端比较麻烦,建议还是走 HTTPS
坑2:docker compose up 后容器反复重启
检查日志通常是数据目录权限问题:
docker logs vaultwarden --tail 50
如果看到权限错误,执行:
chown -R 1000:1000 /opt/vaultwarden/data
docker restart vaultwarden
坑3:忘记 ADMIN_TOKEN,无法进入管理后台
直接改环境变量重启即可(docker-compose.yml 里修改 ADMIN_TOKEN 后 docker compose up -d 重建容器);但注意:修改 ADMIN_TOKEN 不影响已注册用户的数据,密码库完全不受影响。
坑4:SMTP 配置后收不到验证邮件
国内 QQ/163 邮箱需要使用"授权码"而不是登录密码,在邮箱设置中生成授权码后填入 SMTP_PASSWORD。SMTP_PORT 用 465(SSL)或 587(STARTTLS),Security 字段要对应填 ssl 或 starttls。
六、总结与选型建议
- Vaultwarden:有 NAS/VPS、想要数据自主权、追求零成本的开发者和自托管爱好者,首选方案
- Bitwarden 云端:不想运维、对数据存储地点不敏感的普通用户
- 1Password:预算充足、追求极致 UI 和家庭共享体验的用户
- KeePassXC:完全离线、不需要多设备同步的纯本地派
Vaultwarden 最大的价值在于:用 50MB 内存换回了密码数据的完整所有权,同时又保留了 Bitwarden 全平台客户端的优秀体验。对开发者来说,这几乎是零成本就能获得的"密码自由"。
部署过程中有任何问题,欢迎在评论区留言讨论。如果这篇文章对你有帮助,欢迎点赞、收藏、转发三连!