Vaultwarden:在 VPS 上安装自己的密码管理器
Vaultwarden 允许您将密码存储在自己的服务器上,并在电脑、手机和浏览器之间同步。它使用 Bitwarden 官方应用和扩展,只需在其中指定您自己的服务器地址。
下面将介绍 Vaultwarden 需要怎样的 VPS、如何通过 Docker Compose 在 Ubuntu 上运行它、关闭开放注册、启用 HTTPS,以及配置备份。
五步部署 Vaultwarden
最简部署方案:
- 创建一台安装 Ubuntu 的 VPS,并将一个子域名指向它,例如
vault.example.com。 - 安装 Docker 和 Docker Compose。
- 同时运行 Vaultwarden 与 Caddy,以自动启用 HTTPS。
- 创建第一个账户并关闭开放注册。
- 启用双因素认证、更新和备份。
对于个人密码库或小家庭使用,内置的 SQLite 数据库已经足够。通常不需要单独部署 PostgreSQL 服务器。
什么是 Vaultwarden
Vaultwarden 是 Bitwarden API 的非官方服务器端实现,使用 Rust 编写,面向自托管部署。它兼容 Bitwarden 官方客户端,包括网页界面、移动端和桌面端应用、浏览器扩展以及 CLI。
密码库数据会先在用户设备上加密,再发送到服务器。VPS 只负责同步加密后的数据库,不知道主密码,也无法在主密码丢失后将其恢复。
Vaultwarden 不是 Bitwarden 的官方产品。所有者需要自行负责更新、可用性、HTTPS、备份以及 VPS 安全。
Vaultwarden 与 Bitwarden:有什么区别
| 参数 | Bitwarden Cloud | Vaultwarden |
|---|---|---|
| 服务器 | 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 version3. 创建配置
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 恢复忘记的主密码吗?
不可以。管理员可以管理服务器和账户,但并不拥有用户密码库的解密密钥。主密码和恢复代码必须单独保存。
