- 使用 Rust 语言编写的轻量级版本,完全兼容官方 Bitwarden 客户端。
- 使用 Docker 容器简化部署,实现完全隐私控制。
- 适用于小型服务器或树莓派的理想最低硬件要求。
Vaultwarden 允许您在自己的服务器上托管与 Bitwarden 客户端兼容的密码管理器。这样,您可以决定信息的存储位置、服务的访问权限以及备份方式。
从一开始就明确这一点很重要: Vaultwarden 不是 Bitwarden 的官方服务器这是一个用 Rust 编写的独立社区驱动型实现,它复刻了 Bitwarden 的大部分 API。因此,它可以与 Bitwarden 的官方移动应用、桌面程序和扩展程序一起使用。
自托管服务可以提供更多控制权,但是 它并不能自动保证更高的安全性。从那一刻起,您将负责安装更新、确保访问安全、审查日志、维护 HTTPS 以及确保备份可以恢复。
使用 Docker 安装 Vaultwarden 需要哪些工具?

开始之前,您需要一个兼容 Docker 的系统,并且在您需要同步密码时该系统必须保持开机状态。这可以是 Linux 服务器、NAS、迷你电脑或架构与镜像支持的 Raspberry Pi。
您还需要:
- Docker 引擎 已安装并运行正常。
- 当前附加组件 Docker Compose.
- 用于永久存储数据的文件夹。
- 拥有管理 Docker 的终端访问权限。
- 如果您要从其他设备使用该服务,请采用安全的访问方式。
并非所有安装都要求统一的内存或存储空间。实际占用空间取决于用户数量、附件数量、存储空间大小以及同一台计算机上运行的其他服务。对于家庭用户而言,它通常是一个轻量级应用程序,但您仍应预留足够的空间。 数据及其备份.
使用以下命令检查安装情况:
docker --version
docker compose version
如果两条命令都显示版本信息,则可以继续。
如何使用 Docker Compose 安装 Vaultwarden
创建一个专用文件夹并将其放入:
mkdir vaultwarden
cd vaultwarden
在文件夹内,创建一个名为“ compose.yml 初始配置如下:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8080:80"
集会 ./vw-data:/data 这至关重要。文件夹 /data 它包含服务器使用的数据库、附件、配置和密钥。如果您在未保留此文件夹的情况下删除容器,则会丢失存储的信息。
地址 127.0.0.1 此初始安装仅在服务器端响应。这适合在不将端口暴露到网络的情况下测试 Vaultwarden。
启动容器:
docker compose up -d
查看其状态:
docker compose ps
docker compose logs --tail=100 vaultwarden
您可以在同一设备上打开:
http://localhost:8080
通过以下方式访问 localhost 这用于完成初始设置。要从另一台计算机、移动应用或分机连接,您需要使用 HTTPS 设置安全地址。
如何创建您的第一个帐户并关闭注册
打开网页界面,创建你的第一个账户,并验证你是否可以登录。使用 长、独一无二且易于记忆的主密码因为它能保护整个仓库的访问权限。
创建必要的帐户后,进行编辑 compose.yml 以及变化:
SIGNUPS_ALLOWED: "true"
经过:
SIGNUPS_ALLOWED: "false"
通过重新创建容器来应用更改:
docker compose up -d
Vaultwarden 默认允许匿名用户创建账户。不必要地开放注册功能会使第三方更容易占用空间或未经许可使用您的服务器。
如果您之后启用管理面板,即使禁用公开注册,您仍然可以发送邀请。
为什么 Vaultwarden 需要 HTTPS
该网上商店使用浏览器的 Web Crypto API。这些加密功能通常仅在以下情况下可用: 安全上下文,例如 HTTPS 或 localhost.
因此,打开 http://192.168.1.50:8080 从另一台计算机访问时,即使容器正在运行,也可能显示错误。在网络上发布端口并不能替代 HTTPS 配置。
使用 Vaultwarden 的常见方法有三种:
- 仅限服务器端: 通过以下方式访问
localhost可用于测试。 - 在专用网络或 VPN 上: 访问受限,但需保持有效的HTTPS证书。
- 来自互联网: 域名、反向代理、有效证书和配置正确的防火墙。
您无需公开 Vaultwarden 即可在家外使用它。VPN 可以限制对您授权设备的访问,但客户端使用的地址仍然必须具有它们认可的证书。
如何使用 Caddy 配置 HTTPS
Caddy 是最简单的选择之一,因为它可以通过 ACME 自动申请和续订证书。要使用公钥证书,域名必须解析到您的服务器,并且必要的端口必须可访问。
Vaultwarden 和 Caddy 的联合配置可以使用此文件。 compose.yml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "false"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
替换 vault.example.com 针对您的实际域名。然后创建一个名为 Caddyfile:
vault.example.com {
reverse_proxy vaultwarden:80 {
header_up X-Real-IP {remote_host}
}
}
激活服务:
docker compose up -d
Caddy 会通过 Compose 创建的内部网络向容器发送请求。当前配置也可以通过同一目标处理 WebSocket 通知,因此无需发布另一个 Vaultwarden 端口。
变量 DOMAIN 必须包含完整的外部 URL,包括 https://错误的地址可能会导致附件、链接、身份验证或客户端出现问题。
如何连接官方的Bitwarden应用程序
在扩展程序的登录界面、移动应用或桌面程序中,打开服务器选择器并选择该选项。 自托管.
请输入完整地址:
https://vault.example.com
登录前请保存设置。每个客户端必须连接到同一服务器,更改才能正确同步。
如果您使用私有机构颁发的证书,则需要在所有设备上正确安装并信任该机构。为避免兼容性问题,最好使用有效的公共证书或您可以妥善控制其信任链的私有证书解决方案。
客户端连接成功后,您可以 将 Chrome 密码导入 Vaultwarden 并检查它们是否出现在您的所有设备上。
如何保护管理面板
Vaultwarden 提供了一个可选面板 /admin在这里,您可以查看用户、组织、诊断信息和某些服务器选项。
如果你不需要面板,最安全的做法是…… 保持禁用状态要启用它,您必须进行配置。 ADMIN_TOKEN它不会以明文形式存储密码,而是生成一个 Argon2id 哈希值:
docker run --rm -it vaultwarden/server /vaultwarden hash
该命令会提示输入密码两次,并返回一个以“ $argon2id$.
避免美元符号问题的便捷方法是将其保存到文件中。 .env 位于旁边 compose.yml:
VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=...'
然后将其添加到服务中:
environment:
ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"
如果你直接把哈希值写进去 compose.yml你必须将每个美元符号乘以 2。 $$ 防止 Docker Compose 将其解释为变量。
使用以下命令检查已处理的配置:
docker compose config
该面板只能通过HTTPS访问。如果可能,请将其访问路径限制在本地网络、VPN或特定IP地址。
请注意,保存选项后…… /admin秘藏守卫者创建 config.json它的值优先于等效的环境变量。这种优先级解释了为什么在编辑 Compose 文件时,很多情况下看起来没有任何变化。
保护秘藏守卫的必要措施
安全措施并非仅仅启用 HTTPS 就结束了。至少应采取以下措施:
- 使用以下方法禁用打开注册表:
SIGNUPS_ALLOWED=false. - 使用独一无二且强度高的主密码。
- 积极的 双重身份验证 所有账户。
- 将身份验证恢复代码保存在其他安全位置。
- 定期更新镜像和主机系统。
- 请勿在容器内挂载不必要的文件夹或 Docker 套接字。
- 使用防火墙限制真正必要的端口。
- 请勿公开数据库或文件夹
vw-data.
Fail2ban 可以屏蔽累积登录失败次数的地址,但当存在反向代理时,必须谨慎配置。Caddy 或 Nginx 必须传输真实的 IP 地址;否则,Fail2ban 可能会屏蔽代理自身的地址。
您还可以禁用密码提示的显示。当服务器公开可访问时,这些提示可能会助长密码猜测攻击。
要了解更多关于这些做法的信息,您可以咨询如何 安全地使用密码管理器.
如何设置电子邮件通知
SMTP 配置允许您发送邀请、验证和通知。您需要指定服务器、发件人、端口、安全方法以及电子邮件服务提供商提供的凭据。
不要将 SMTP 邮件与保险库备份混淆,也不要将其作为账户恢复的唯一途径。如果您忘记了主密码且没有设置其他恢复方法,则可能会丢失对加密数据的访问权限。
保存设置后,发送一封测试邮件,如果邮件未送达,请检查日志。同时,请检查您的垃圾邮件文件夹和 SMTP 服务提供商的限制。
如何对 Vaultwarden 进行完整备份
SQLite数据库存储用户、物品、设备和组织,但是 它不包含所有文件附件和某些提交内容存储在单独的目录中。
完整副本应包含:
db.sqlite3或者数据库的一致副本。- 文件夹
attachments. - 文件夹
sends如果你想保留这些文件的话。 - 文件
config.json如果你使用面板的话。 - 文件
rsa_key*. - Compose 文件、Caddy 及其变量。
为了进行简单且一致的备份,您可以暂时停止 Vaultwarden 并归档文件夹:
docker compose stop vaultwarden
tar -czf vaultwarden-backup-$(date +%F).tar.gz vw-data compose.yml Caddyfile .env
docker compose start vaultwarden
该文件可能包含管理令牌和 SMTP 凭据。 复制前请先加密。 传输到另一台计算机或远程存储设备。
如果您不想停止该服务,Vaultwarden 提供了一个使用 SQLite 复制机制的命令:
docker exec vaultwarden /vaultwarden backup
此命令可保护数据库,但您仍应备份附件、配置文件和密钥。请设置备份自动化,至少保留一份异地备份,并定期测试恢复功能。
如何使用 Docker 更新 Vaultwarden
更新前请先创建已验证的副本。然后运行:
docker compose pull
docker compose up -d
查看状态和最新消息:
docker compose ps
docker compose logs --tail=100 vaultwarden
Docker 将下载镜像并重新创建容器,同时保留镜像。 vw-data不要在未先检查将要删除哪些容器、镜像和网络之前使用全局清理命令。
在稳定性至关重要的安装环境中,您可以固定使用特定版本的镜像,而不是始终使用默认版本。 latest这样您就可以查看版本说明,并决定何时应用每个更新。
使用 Docker 安装 Vaultwarden 时常见的错误
该界面在本地主机上可以正常工作,但在其他计算机上则无法正常工作。
该端口受限于 127.0.0.1 或者,浏览器在通过 HTTP 访问时会拒绝加密功能。请在其他设备上使用该服务之前配置 HTTPS 地址。
官方客户端无法连接到服务器
选择环境 自托管 并输入确切地址 https://检查证书、DNS、代理和变量 DOMAIN.
容器启动后,数据在重新创建时消失了。
音量控制未正确安装。请检查一下。 ./vw-data:/data 设置中会显示“您正在从预期文件夹运行 Compose”。
我无法创建另一个帐户
Si SIGNUPS_ALLOWED 是 false此行为正确。请从控制面板发送邀请,或者仅在创建帐户期间临时启用注册功能。
ADMIN_TOKEN 哈希值无效
检查符号的插值情况 $使用文件 .env 如果直接在 Compose 中插入字符串,请使用单引号或双引号。
环境因素似乎被忽略了。
检查它是否存在 vw-data/config.json从面板保存的选项可能会覆盖在面板中定义的变量。 compose.yml.
这些证书在浏览器中可以使用,但在移动设备上无法使用。
该设备可能不信任整个证书链。请使用受认可的证书颁发机构,或正确安装您自己的证书颁发机构及其证书。
附件失效
检查一下 DOMAIN 匹配外部地址并确保代理允许所需的请求大小。同时检查可用空间和权限。 vw-data.
Vaultwarden 无法写入 vw-data 内部。
主机文件夹权限不兼容。请根据日志中显示的错误检查所有者和权限。请勿使用 chmod 777 作为永久解决方案。
Fail2ban 阻止了错误的地址
代理服务器未传输真实 IP 地址,或者 Fail2ban 读取了错误的字段。请正确配置。 X-Real-IP 或者与您的代理对应的标头。
恢复后的副本不包含附件。
仅备份了 SQLite 数据库。请同时恢复文件夹。 attachments y sends除了 RSA 配置和密钥之外。
Vaultwarden 允许您使用组织和收藏集来 共享家庭密码 使用兼容的客户端。添加更多用户之前,请验证 HTTPS、两步验证和备份功能是否正常工作。
最终可以得到一个快速、私密且灵活的密码管理器,但其安全性取决于维护。只有配合更新、限制访问权限和成熟的恢复策略,对服务器的控制才能真正发挥作用。
我是一名技术爱好者,已将自己的“极客”兴趣变成了职业。出于纯粹的好奇心,我花了 10 多年的时间使用尖端技术并修改各种程序。现在我专攻计算机技术和视频游戏。这是因为 5 年多来,我一直在为各种技术和视频游戏网站撰写文章,旨在以每个人都能理解的语言为您提供所需的信息。
如果您有任何疑问,我的知识范围涵盖与 Windows 操作系统以及手机 Android 相关的所有内容。我对您的承诺是,我总是愿意花几分钟帮助您解决在这个互联网世界中可能遇到的任何问题。


