
| 类型 | 密码管理服务器 |
| 语言 | Rust |
| 兼容 | Bitwarden 客户端 |
| 官网 | github.com/dani-garcia/vaultwarden |
Vaultwarden(旧称 bitwarden_rs)是用 Rust 语言编写的非官方 Bitwarden 服务端实现,完全兼容 Bitwarden 官方客户端(浏览器插件、iOS/Android App、桌面客户端、CLI)的 API 协议。相比官方 Bitwarden 服务端依赖多个微服务和 MSSQL 的高资源消耗,Vaultwarden 以单一二进制运行,内存占用通常低于 30 MB,非常适合在低功耗 NAS、树莓派或普通 VPS 上自托管个人或家庭密码库。
官方 Bitwarden 服务端最初以 C# 编写并依赖 Microsoft SQL Server,运行需要大量内存和较复杂的服务编排,对于只想自托管密码库的个人用户门槛过高。2018 年,开发者 Daniel García 以 Rust 编写了兼容 Bitwarden API 的轻量替代后端,初期命名为 bitwarden_rs。2022 年项目更名为 Vaultwarden,以避免与官方 Bitwarden 品牌混淆。同年官方 Bitwarden 也开放了 C# 服务端的源代码,但 Vaultwarden 凭借极低的资源占用继续保持广泛使用。项目采用 AGPL-3.0 许可证,代码托管于 GitHub,维护活跃。
Vaultwarden 服务端以 Rust 编写,使用 Axum Web 框架和 Diesel ORM,默认使用 SQLite 作为数据库,亦支持 MySQL 和 PostgreSQL。所有密码库数据在客户端以端到端加密方式保护:用户的主密码通过 PBKDF2-SHA256 或 Argon2id(客户端可选)派生出加密密钥,再用此密钥加密实际的对称密钥(Protected Symmetric Key),服务器始终只存储和传输加密后的密文,无法在任何时刻访问明文数据,这是零知识架构的核心保证。
PBKDF2 的迭代次数由 Bitwarden 客户端控制,2023 年后新账号默认迭代次数提升至 600,000 次,与 Vaultwarden 服务端版本无关。传输层安全依赖 HTTPS,Vaultwarden 自身不处理 TLS,推荐通过 Nginx 或 Caddy 反向代理终止 TLS。WebSocket 连接(/notifications/hub)用于向客户端推送实时同步通知,反向代理配置中必须正确代理 WebSocket 才能实现多设备间的即时数据同步,否则客户端需手动触发同步才能看到最新变更。
最常用的部署方式是 Docker Compose,使用 vaultwarden/server 镜像,挂载本地目录持久化 SQLite 数据库和附件文件。关键环境变量包括:DOMAIN 设置外部访问域名(含协议前缀,如 https://vault.example.com,用于生成 WebAuthn 挑战和邮件链接);ADMIN_TOKEN 启用管理后台(建议使用 openssl rand -base64 48 生成随机值或配置为 argon2 哈希);SMTP_HOST、SMTP_FROM 等变量配置邮件发送以支持注册邀请和邮件 OTP;SIGNUPS_ALLOWED 默认应设为 false,通过管理后台或邀请链接添加用户,避免公开注册带来的安全风险。
备份策略至关重要:SQLite 数据库文件和附件目录是关键数据,建议每日使用 sqlite3 .backup 命令进行热备份(无需停服),或使用 Litestream 进行实时流复制,并定期将备份上传至异地存储。升级时只需拉取新镜像重启容器,Vaultwarden 启动时自动执行数据库迁移,一般无需手动干预。
官方 Bitwarden 自托管版包含完整的微服务架构,依赖 MSSQL 或 PostgreSQL,内存占用通常超过 1 GB,部署较复杂。Vaultwarden 以单容器运行,内存通常低于 50 MB,部署极为简单。功能上,Vaultwarden 缺少官方版的企业级特性(SSO/SAML 集成、目录同步、高级审计日志),但对个人和小团队的日常需求已完全覆盖。官方 Bitwarden 云服务的免费层是无需自托管的便捷选择,Vaultwarden 的核心价值在于以极低资源成本实现完全的数据自主权。
在密码库安全性的实践细节上,有几点值得用户特别关注。首先,主密码的强度直接决定密码库在服务器数据泄露情况下的抗破解能力:由于加密密钥由主密码派生,攻击者获取到加密数据库后可以进行离线字典攻击,主密码越弱被破解的风险越高。建议主密码长度不低于十六个字符并混合多种字符类型,或使用四到五个随机单词组成的口令短语。其次,Vaultwarden 的附件功能会将文件以加密形式存储在服务器文件系统的 attachments 子目录中,备份时须同时备份数据库文件和此目录,缺一不可。最后,对于需要多人共享凭据的场景,建议为每位成员创建独立账号并通过组织功能共享,而非共用同一个账号密码,这样既便于审计访问记录,也可以在成员离职时单独吊销其权限而不影响其他人。

| 类型 | 密码管理服务器 |
| 语言 | Rust |
| 兼容 | Bitwarden 客户端 |
| 官网 | github.com/dani-garcia/vaultwarden |
登录 后参与讨论
暂无讨论,来发表第一条评论吧