NordBastion 北极熊吉祥物置身北欧石制密室,手持青色 N 形盾牌,周围环绕着带挂锁和钥匙图标的半透明青色全息密码库卡片,墙上的如尼文雕刻微微发光
操作指南 · 30 分钟实操·2026 年更新

在 VPS 上自托管 Vaultwarden。
30 分钟内拥有您自己的 Bitwarden 兼容密码库。

Vaultwarden 是轻量级、基于 Rust、与 Bitwarden 兼容的密码服务器。五条 Docker 命令、一个 HTTPS 反向代理、一个备份定时任务——您拥有的每个账户的凭据密码库存储在您租用的金属上,而非您信任的基础设施上。

简而言之
  • 01

    Vaultwarden 在协议和密码库层面与 Bitwarden 兼容——每个官方客户端都能直接使用。运行于 50–100 MB RAM;任何 VPS 都能处理。

  • 02

    密码库在客户端使用 AES-256 加密。服务器永远看不到您的主密码。攻破 VPS 只能得到加密数据块,而非凭据。

  • 03

    不那么显而易见的步骤是元数据层——用 KYC 关联的信用卡为托管商付款,会将您的真实身份与密码库的 IP 绑定。无 KYC、加密货币付款的托管商消除了这一关联。

第一章

Vaultwarden 是什么,以及它不是什么。

Vaultwarden——前身为 bitwarden_rs——是用 Rust 对 Bitwarden API 进行的独立服务端重新实现。它使用与官方 Bitwarden 服务器相同的网络协议,以相同的加密格式存储密码库,并不加修改地接受每个官方客户端。对于 Bitwarden 浏览器扩展或 iOS 应用而言,Vaultwarden 服务器与 bitwarden.com 无法区分。

有趣的差异在于运营层面。官方 Bitwarden 服务器是专为企业部署设计的多容器 .NET 技术栈;发布的自托管镜像在 2 GB RAM 和 SQL Server 许可证下才能从容运行。Vaultwarden 是一个 15 MB 的单一 Rust 二进制文件,默认使用 SQLite,在 50 MB RAM 中运行良好,冷启动不到一秒。整个项目装入一个无依赖的单一 Docker 容器。

您获得的是完整的 Bitwarden 功能面——密码库、安全笔记、身份记录、支付卡、文件附件、Send(一次性加密共享)、TOTP 验证器、带共享集合的 Organizations、硬件密钥 2FA、浏览器自动填充、移动端生物识别解锁——且没有任何付费档门控。Families 计划等价功能和 Enterprise SSO 等价功能在自托管 Vaultwarden 上都是免费的。

Vaultwarden 不是:正式经过审计的服务器。加密原语继承自 Bitwarden 客户端(已经过独立审计),但 Vaultwarden 服务器本身尚未通过第三方安全审计。对于个人或小团队密码库而言,这是完全合理的权衡;对于受监管的企业则不然。

第二章

选择 VPS——为何您租用的托管商比规格更重要。

Vaultwarden 实际上可以在任何 Linux VPS 上运行——资源底线极低,规格表是错误的优化轴。正确的轴是您为租用服务器而必须交出的内容。

密码库是个人拥有的最高价值单一目标。攻破它即可访问拥有者的所有其他账户。加密立场保护密码库的内容;但它无法保护密码库周围的元数据——谁租用了该 IP、来自何处、用哪张卡付款、以什么名义注册。

当您从执行完整 KYC 的主流提供商租用 VPS 时,计费数据库将您的法定姓名与服务器的 IPv4 关联。如果托管商遭到入侵、收到传票或简单地将匿名化数据出售给营销分析合作伙伴,这一关联都将留存。密码库保持加密,但元数据层在设计上就是泄漏的。

NordBastion 恰恰相反——注册仅需电子邮件和密码,支持 Bitcoin、Monero、Lightning 或其他加密货币付款,数据中心受四个北欧宪法性新闻自由体制保护。密码库归您所有;从密码库追溯至您身份的元数据轨迹根本不存在。对于 Vaultwarden 托管需求,入门级<a href="/zh/vps/" class="text-nord-cyan border-b border-nord-cyan/40 hover:border-nord-cyan transition">每月 $5.90 的 Ravelin VPS</a> 绰绰有余——2 vCPU、4 GB RAM 和 80 GB SSD 足以在同一台服务器上运行 Vaultwarden、反向代理以及另外三个自托管应用。

第三章

Docker 安装。五条命令,十分钟。

启动全新 Debian 12 VPS,以非 root sudo 用户 SSH 登录,然后运行这五个代码块。在整个过程中将 vault.example.com 替换为您自己的子域名——这将是您访问 Web 密码库的 URL。

1. 安装 Docker。 curl -fsSL https://get.docker.com | sh && sudo usermod -aG docker $USER — 注销并重新登录以使组成员身份生效。

2. 创建数据目录。 mkdir -p ~/vw-data — Vaultwarden 的全部状态(SQLite 密码库数据库、附件、图标缓存)存在于一个目录中;正因如此备份非常直接。

3. 生成管理员 token。 docker run --rm vaultwarden/server /vaultwarden hash --preset owasp — 在提示时粘贴您选择的管理员密码,捕获生成的 Argon2 哈希。这将保护 /admin 面板。

4. 启动容器。 docker run -d --name vaultwarden --restart unless-stopped -e DOMAIN="https://vault.example.com" -e ADMIN_TOKEN='<paste-hash-from-step-3>' -e SIGNUPS_ALLOWED=false -e WEBSOCKET_ENABLED=true -v ~/vw-data:/data -p [redacted-ip]:80 vaultwarden/server:latest — 注意 -p [redacted-ip] 绑定使 Vaultwarden 对主机保持私有;第 4 章的反向代理在其前端。

5. 验证。 curl -s http://[redacted-ip]/alive 应返回一个时间戳。如果返回,Vaultwarden 正在运行。如果没有,docker logs vaultwarden 会显示出了什么问题——几乎总是 ADMIN_TOKEN 环境变量中的拼写错误。

第 4 步中的 SIGNUPS_ALLOWED=false 是最容易被遗忘的设置。保持为 true 时,任何找到 URL 的人都可以注册您的密码库。仅在创建自己账户所需的时间内将其设为 true,然后改回 false 并重启。

第四章

HTTPS 与管理面板。不可省略,但只需五分钟。

Vaultwarden 拒绝从非 localhost 地址通过纯 HTTP 提供 Web 密码库;每个官方客户端也拒绝与非 HTTPS 服务器通信。反向代理 + Let's Encrypt 步骤是其余设置的门槛。Caddy 是最轻的路径——一个二进制文件、自动 ACME、无需单独调度 certbot。

将 vault.example.com 的 DNS A 记录指向 VPS IP 并等待传播(大多数提供商的新记录约需两分钟)。sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg && echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | sudo tee /etc/apt/sources.list.d/caddy-stable.list && sudo apt update && sudo apt install caddy。

编写 /etc/caddy/Caddyfile:vault.example.com { reverse_proxy [redacted-ip] header_up X-Real-IP {remote_host} }——这就是全部配置。sudo systemctl reload caddy,十秒内 Caddy 已获取 Let's Encrypt 证书,密码库可通过 https://vault.example.com 访问。

/admin 管理面板。 Vaultwarden 在 /admin 提供管理 UI,由您在第 3 章生成的 Argon2 哈希保护。在那里您可以禁用注册(第 4 步已完成)、设置邀请和密码重置邮件的 SMTP 服务器、配置 Yubikey 或 Duo 2FA、设置每用户限制并检查用户列表。打开一次,逐一浏览每个部分,保存设置——从那以后设置存储在 /vw-data/config.json 中。

一个小型加固细节:将 /admin 完全绑定于公网之外。在 Caddyfile 中添加:vault.example.com { @admin path /admin* @admin not remote_ip [redacted-ip]/8 [redacted-ip]/16 your.home.ip/32 respond @admin 404 ... }——不在您家庭 IP 的任何人探测 /admin 时都会收到 404,管理面板对公网不可见。

第五章

备份。那个会要命的错误。

无法从备份还原的密码库等于已经丢失。Vaultwarden 的备份方案简单得令人欣慰——所有重要内容都在一个目录里——但围绕还原测试的纪律性,才是工作正常的配置与未来事故之间的分水岭。

备份什么内容。 整个 ~/vw-data/ 目录树。其中:db.sqlite3 是加密密码库,attachments/ 保存文件附件,config.json 保存 /admin 设置,sends/ 保存临时加密共享,rsa_key.* 是会话使用的 JWT 签名密钥。

如何备份。 SQLite 通过其 .backup 命令处理并发备份——设置每晚定时任务:0 4 * * * docker exec vaultwarden sqlite3 /data/db.sqlite3 ".backup /data/db.sqlite3.bak" && tar czf /backups/vw-$(date -I).tgz -C /home/<user>/vw-data . ——50 个账户的密码库产生不到 1 MB 的压缩包。

将备份发送至何处。 任何不是同一 VPS 的地方。通过 rclone 备份至 S3 兼容存储桶、第二台 VPS、通过 WireGuard 备份至家庭 NAS,或每季度邮寄给亲属一个加密 USB 密钥——选择适合您威胁模型的方式。基本原则是与主服务器在地理上和管理上相互独立。

还原演练。 启动第二台 VPS,将昨天的备份复制到其中,解压至 ~/vw-data,运行第 3 章的 docker 代码块并指向它,在临时子域名上打开 Web 密码库,用主密码登录。如果您的账户打开且密码库解密成功,备份是真实的。现在进行一次这样的演练,在将真实凭据放入密码库之前。每六个月重新演练一次。

第六章

客户端、共享、移动端。Bitwarden 生态系统,指向您的服务器。

安装您选择的官方 Bitwarden 客户端——浏览器扩展、桌面应用、iOS、Android。登录前,点击左上角齿轮图标,将服务器从 bitwarden.com 切换为 https://vault.example.com,然后使用第 4 章创建的账户登录。客户端无法区分差异,其行为与托管 Bitwarden 订阅完全相同。

移动端客户端有一个额外步骤:生物识别解锁需要设备注册,iOS / Android 上的第一次登录会自动处理。浏览器自动填充、移动端自动填充、TOTP 生成、密码生成器、数据泄露监控查询(HaveIBeenPwned)和 Bitwarden Send 无需进一步配置即可使用。

家庭共享。 在 Web 密码库中创建 Organization → 新建 Organization → 命名(如「家庭」),选择免费计划。在 Organization 内创建 Collection(「共享账单」、「流媒体服务」、「WiFi 和路由器」)。通过服务器本地邮箱邀请每位家庭成员,在他们注册时接受邀请,并将其分配至 Collection。从那一刻起,Collection 中的任何条目都对所有成员端对端加密——服务器只能看到密文。

您不必为之付费的内容。 所有属于服务端策略的 Bitwarden 付费功能(Organizations、共享集合、Families 计划等价功能、硬件密钥 2FA、Send 文件附件)在 Vaultwarden 上默认解锁,因为服务器是门控所在。属于客户端策略的付费功能(部分 Bitwarden 移动端高级功能门控)由客户端执行,除非您打补丁——对诚实用户而言不值得这样做。

FAQ · 自托管 Vaultwarden

问题,已解答。

运行自托管 Vaultwarden 第一个月前后常见的八个问题。

Vaultwarden 与 Bitwarden 是同一个东西吗?

Vaultwarden 是 Bitwarden 服务器的独立 Rust 重新实现,与每个官方 Bitwarden 客户端完全兼容——浏览器扩展、桌面应用、iOS、Android、CLI。它不由 Bitwarden Inc. 生产。网络协议和密码库格式相同;服务器二进制文件大小约为原来的 1/100,在 50–100 MB RAM 中运行自如。

为何自托管 Vaultwarden 而非付费使用托管版 Bitwarden?

三个原因。其一:没有其他人持有您的加密密码库——即使 Bitwarden 也无法读取,但消除第三方是最干净的威胁模型。其二:成本——每月 $5 的 VPS 可处理五口之家并为其余自托管服务留有空间。其三:无遥测、无分析端点、无与姓名绑定的账户验证邮件。

自托管密码库真的安全吗?

是——Vaultwarden 使用与 Bitwarden 相同的客户端加密。密码库在发送至服务器前在客户端使用 AES-256 加密;服务器永远看不到您的主密码或任何明文。攻破 VPS 只能得到加密数据块,其安全性与您的主密码同等级。运营风险由您承担(备份、HTTPS、服务器加固),但加密风险与托管版 Bitwarden 完全相同。

我需要多少 VPS 资源?

非常少。Vaultwarden 本身在 1 vCPU 和 512 MB RAM 上运行良好。最低配置的 NordBastion VPS(2 vCPU,4 GB,$5.90/月)足以在同一台机器上运行 Vaultwarden、反向代理和三个其他自托管服务。磁盘使用量可以忽略不计——50 个账户的密码库含附件保持在 200 MB 以下。

无 KYC、加密货币付款的托管商对密码管理器有何重要意义?

密码库是个人拥有的最高价值目标——它包含所有其他账户的凭据。以真实姓名租用服务器并绑定真实身份的信用卡,意味着一旦托管商的计费数据库被攻破,您的身份就与密码库的 IP 挂钩。无 KYC、加密货币付款的托管商从设计上消除了这一关联。密码库本身仍为客户端加密;无 KYC 立场保护的是元数据层。

Vaultwarden Web 密码库真的需要 HTTPS 吗?

是,严格来说如此。Vaultwarden 拒绝从 localhost 以外的任何地址通过纯 HTTP 提供 Web 密码库,每个官方客户端也拒绝与非 HTTPS 服务器通信。本指南中的反向代理 + Let's Encrypt 设置是不可省略的。好消息:一旦您的 DNS A 记录传播完成,整个 TLS 步骤只需约三分钟。

人们自托管 Vaultwarden 时犯的最大单一错误是什么?

未测试从备份还原。对 /vw-data/ 的每晚 tar.gz 备份,在您将其解压到全新 VPS 并成功登录恢复后的 Web 密码库之前,都不算是真正的备份。为失败情况做好规划:服务器消失,磁盘被清除,您唯一拥有的是昨天的备份文件——您能重新进入密码库吗?在将真实凭据放入密码库之前,先进行一次这样的演练。

我能从自托管的 Vaultwarden 与家人共享密码库吗?

是。Vaultwarden 重新实现了 Bitwarden 的 Organizations 功能——包括共享集合、细粒度权限以及 Bitwarden Families 计划的等价功能——无需任何付费档。您在 Web 密码库中创建 Organization,通过邮件邀请家人(或直接共享邀请链接),从那以后共享 UX 与官方 Bitwarden 产品完全相同。

获取服务器

立即租用无 KYC VPS,加密货币付款,运行 Vaultwarden。

Ravelin 入门套餐(2 vCPU,4 GB RAM,80 GB SSD,$5.90/月)对于 Vaultwarden 来说绰绰有余,并在同一台机器上为其余自托管服务留有空间。

最后审核 · 2026-05-20 · 来源 · Vaultwarden 上游文档,Bitwarden 客户端兼容性矩阵,Let's Encrypt ACME · 周期 · 每年