Tropic Host

Vaultwarden 是什么以及如何在 VPS 上安装

阅读约需 8 分钟
Tropic
Vaultwarden 是什么以及如何在 VPS 上安装

Vaultwarden:在 VPS 上安装自己的密码管理器

Vaultwarden 允许您将密码存储在自己的服务器上,并在电脑、手机和浏览器之间同步。它使用 Bitwarden 官方应用和扩展,只需在其中指定您自己的服务器地址。

下面将介绍 Vaultwarden 需要怎样的 VPS、如何通过 Docker Compose 在 Ubuntu 上运行它、关闭开放注册、启用 HTTPS,以及配置备份。

五步部署 Vaultwarden

最简部署方案:

  1. 创建一台安装 Ubuntu 的 VPS,并将一个子域名指向它,例如 vault.example.com
  2. 安装 Docker 和 Docker Compose。
  3. 同时运行 Vaultwarden 与 Caddy,以自动启用 HTTPS。
  4. 创建第一个账户并关闭开放注册。
  5. 启用双因素认证、更新和备份。

对于个人密码库或小家庭使用,内置的 SQLite 数据库已经足够。通常不需要单独部署 PostgreSQL 服务器。

什么是 Vaultwarden

Vaultwarden 是 Bitwarden API 的非官方服务器端实现,使用 Rust 编写,面向自托管部署。它兼容 Bitwarden 官方客户端,包括网页界面、移动端和桌面端应用、浏览器扩展以及 CLI。

密码库数据会先在用户设备上加密,再发送到服务器。VPS 只负责同步加密后的数据库,不知道主密码,也无法在主密码丢失后将其恢复。

Vaultwarden 不是 Bitwarden 的官方产品。所有者需要自行负责更新、可用性、HTTPS、备份以及 VPS 安全。

Vaultwarden 与 Bitwarden:有什么区别

参数Bitwarden CloudVaultwarden
服务器Bitwarden 基础设施您的 VPS 或家庭服务器
应用Bitwarden 客户端Self-hosted 模式下的相同客户端
维护由服务商负责由所有者负责
备份控制受服务限制完全控制
启动方式注册账户配置域名、Docker 和 VPS

Vaultwarden 适合希望掌控服务器端,并愿意更新 Linux 和检查备份的用户。如果不想进行系统管理,云服务会更实用。自托管并不会自动让系统变得安全,而是将责任转移给所有者。

Vaultwarden 的服务器要求

个人使用时,合理的起步配置如下:

  • 1 个 vCPU;
  • 1–2 GB RAM;
  • 10–20 GB SSD 或 NVMe;
  • Ubuntu 24.04 LTS;
  • 公网 IP 和域名;
  • 开放 80 和 443 端口。

这是为 Ubuntu、Docker、Caddy 和更新预留的实用余量,并非项目的硬性最低要求。如果有几十名用户、大量附件或多个容器,建议选择至少 2 GB RAM。

如何在 VPS 上安装 Vaultwarden

本示例使用 Ubuntu 24.04 和子域名 vault.example.com。请在所有文件中将其替换为您自己的地址。

1. 配置 DNS 并准备 Ubuntu

创建一条指向 VPS IPv4 地址的 DNS A 记录。然后通过 SSH 连接:

ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

在确认新的连接可以正常建立之前,不要关闭当前 SSH 会话。

2. 安装 Docker 和 Docker Compose

添加 Docker 官方软件源:

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

3. 创建配置

mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

创建 compose.yaml

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2-alpine
    container_name: vaultwarden-caddy
    restart: unless-stopped
    depends_on:
      - vaultwarden
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config

创建 Caddyfile 文件:

vault.example.com {
    reverse_proxy vaultwarden:80
}

只有 Caddy 对外开放。Vaultwarden 容器可在 Docker 网络内部访问,数据保存在 /opt/vaultwarden/vw-data。在当前配置中,不需要为 WebSocket 单独开放端口。

4. 启动 Vaultwarden

docker compose up -d
docker compose ps
docker compose logs --tail=100 caddy

打开 https://vault.example.com。如果 DNS 已经指向 VPS,并且 80 与 443 端口可以访问,Caddy 会自动获取 TLS 证书。如果网站无法打开,请检查 DNS、防火墙,以及这些端口上是否运行着其他 Web 服务器。

5. 创建账户并关闭注册

注册第一个账户。请使用较长且唯一的主密码,并在 Vaultwarden 之外保存一份应急副本:服务器管理员无法重置或恢复主密码。

注册后,在 compose.yaml 中将其修改为:

SIGNUPS_ALLOWED: "false"

应用设置:

docker compose up -d

此后,其他人将无法创建账户。需要添加新用户时,可以临时启用注册或配置邀请。

如何连接 Bitwarden 应用

无需安装单独的 Vaultwarden 客户端。在 Bitwarden 应用或扩展的登录界面中选择 Self-hosted,并填写:

https://vault.example.com

在电脑、手机和浏览器上都使用这个地址。迁移时,请导入旧密码管理器导出的文件。传输完成后,应立即删除未加密的 CSV 或 JSON 文件,并且不要通过电子邮件或公开链接发送它。

Vaultwarden 的安全配置

启动后,请完成以下操作:

  • 启用 TOTP 或 WebAuthn,并将恢复代码单独保存;
  • 保持 SIGNUPS_ALLOWED 关闭;
  • 使用 SSH 密钥,并定期更新 Ubuntu;
  • 不要公开 Vaultwarden 容器的内部端口;
  • 不要在同一台 VPS 上运行可疑容器;
  • 检查备份是否能够恢复。

对于个人密码库,通常不需要 /admin 面板。如果启用它,请使用 Argon2 哈希形式的长令牌,并尽可能通过 IP 或 VPN 限制访问。不建议以明文形式保存 ADMIN_TOKEN

更新前先创建备份,然后执行:

cd /opt/vaultwarden
docker compose pull
docker compose up -d

服务器应定期更新:Bitwarden 客户端独立发布,因此过旧的 Vaultwarden 版本可能会失去兼容性。

备份 Vaultwarden

主要的 SQLite 数据库位于 vw-data/db.sqlite3,附件则以单独文件保存。不要使用普通的 cp 命令复制正在运行的数据库:如果此时发生写入,副本可能会不一致。

使用内置命令创建安全快照:

docker exec vaultwarden /vaultwarden backup

数据目录中会出现一个单独的 db_.sqlite3 文件。同时还应保存 attachments、sends、已创建时的 config.json,以及 rsa_key 文件。

保存在同一台 VPS 上的备份无法防范服务器被删除或磁盘故障。请自动将副本发送到其他设备或独立的对象存储,最好再进行额外加密。还应定期执行恢复测试。

如何为 Vaultwarden 选择 VPS

对于个人或家庭密码库,一台配备 2 GB RAM 的基础 Linux VPS 已经足够。这样的容量可为 Ubuntu、Docker、Caddy、更新和自动备份留出余量。

您可以在 tropic.host 的入门级 VPS 上运行 Vaultwarden;如果以后在服务器上增加其他自托管服务,再提高资源配置即可。对于密码管理器而言,稳定的网络、固定公网地址和可靠磁盘,比额外的 CPU 核心更重要。

家庭服务器也可以使用,但这意味着您需要自行保障外部访问、HTTPS、稳定供电以及故障后的恢复。如果密码库需要在任何网络中都可访问,VPS 通常更加简单。

总结

Vaultwarden 是一款方便的自托管密码管理器,适合希望继续使用 Bitwarden 客户端,同时将服务器端保留在自有基础设施上的用户。启动它只需要一台小型 VPS、一个域名、Docker Compose 和 Caddy。

真正的责任从安装完成后开始:需要关闭注册、启用 2FA、更新容器,并在服务器之外保存经过验证的备份。

FAQ

可以在没有域名的情况下安装 Vaultwarden 吗?

从技术上说,可以使用本地地址,但网页密码库需要安全的 HTTPS 环境。为了从不同设备访问,使用域名和 TLS 证书会更加简单。

Vaultwarden 需要多少内存?

对于一名或几名用户,通常 1 GB RAM 就足够。配备 2 GB RAM 的 VPS 可以为系统、Docker、Caddy 和更新提供更充足的余量。

Vaultwarden 能与 Bitwarden 移动应用配合使用吗?

可以。在登录界面选择自托管服务器,并填写 Vaultwarden 的完整 HTTPS 地址。

如果 VPS 暂时不可用,会发生什么?

此前已经同步的数据通常仍保存在客户端的本地加密缓存中。但在服务器恢复之前,同步、在新设备上登录以及接收变更都无法进行。

可以通过 /admin 恢复忘记的主密码吗?

不可以。管理员可以管理服务器和账户,但并不拥有用户密码库的解密密钥。主密码和恢复代码必须单独保存。