如何使用 Docker 安装 Vaultwarden:密码自托管完整指南

最后更新: 2026年31月08日

  • 使用 Rust 语言编写的轻量级版本,完全兼容官方 Bitwarden 客户端。
  • 使用 Docker 容器简化部署,实现完全隐私控制。
  • 适用于小型服务器或树莓派的理想最低硬件要求。
如何使用 Docker Compose 安装 Vaultwarden

Vaultwarden 允许您在自己的服务器上托管与 Bitwarden 客户端兼容的密码管理器。这样,您可以决定信息的存储位置、服务的访问权限以及备份方式。

从一开始就明确这一点很重要: Vaultwarden 不是 Bitwarden 的官方服务器这是一个用 Rust 编写的独立社区驱动型实现,它复刻了 Bitwarden 的大部分 API。因此,它可以与 Bitwarden 的官方移动应用、桌面程序和扩展程序一起使用。

自托管服务可以提供更多控制权,但是 它并不能自动保证更高的安全性。从那一刻起,您将负责安装更新、确保访问安全、审查日志、维护 HTTPS 以及确保备份可以恢复。

相关文章:
最佳密码管理器

使用 Docker 安装 Vaultwarden 需要哪些工具?

使用 Docker 安装 Vaultwarden 需要哪些工具?

开始之前,您需要一个兼容 Docker 的系统,并且在您需要同步密码时该系统必须保持开机状态。这可以是 Linux 服务器、NAS、迷你电脑或架构与镜像支持的 Raspberry Pi。

您还需要:

  • Docker 引擎 已安装并运行正常。
  • 当前附加组件 Docker Compose.
  • 用于永久存储数据的文件夹。
  • 拥有管理 Docker 的终端访问权限。
  • 如果您要从其他设备使用该服务,请采用安全的访问方式。

并非所有安装都要求统一的内存或存储空间。实际占用空间取决于用户数量、附件数量、存储空间大小以及同一台计算机上运行的其他服务。对于家庭用户而言,它通常是一个轻量级应用程序,但您仍应预留足够的空间。 数据及其备份.

使用以下命令检查安装情况:

docker --version
docker compose version

如果两条命令都显示版本信息,则可以继续。

如何使用 Docker Compose 安装 Vaultwarden

如何使用 Docker 安装 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 默认允许匿名用户创建账户。不必要地开放注册功能会使第三方更容易占用空间或未经许可使用您的服务器。

独家内容 - 点击这里  BitLocker恢复密钥存储在哪里?如何找到它?

如果您之后启用管理面板,即使禁用公开注册,您仍然可以发送邀请。

为什么 Vaultwarden 需要 HTTPS

该网上商店使用浏览器的 Web Crypto API。这些加密功能通常仅在以下情况下可用: 安全上下文,例如 HTTPS 或 localhost.

因此,打开 http://192.168.1.50:8080 从另一台计算机访问时,即使容器正在运行,也可能显示错误。在网络上发布端口并不能替代 HTTPS 配置。

使用 Vaultwarden 的常见方法有三种:

  • 仅限服务器端: 通过以下方式访问 localhost可用于测试。
  • 在专用网络或 VPN 上: 访问受限,但需保持有效的HTTPS证书。
  • 来自互联网: 域名、反向代理、有效证书和配置正确的防火墙。

您无需公开 Vaultwarden 即可在家外使用它。VPN 可以限制对您授权设备的访问,但客户端使用的地址仍然必须具有它们认可的证书。

如何使用 Caddy 配置 HTTPS

如何使用 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

此命令可保护数据库,但您仍应备份附件、配置文件和密钥。请设置备份自动化,至少保留一份异地备份,并定期测试恢复功能。

独家内容 - 点击这里  Discord 会因可疑活动封禁您的账号:真实原因以及如何保护自己

如何使用 Docker 更新 Vaultwarden

更新前请先创建已验证的副本。然后运行:

docker compose pull
docker compose up -d

查看状态和最新消息:

docker compose ps
docker compose logs --tail=100 vaultwarden

Docker 将下载镜像并重新创建容器,同时保留镜像。 vw-data不要在未先检查将要删除哪些容器、镜像和网络之前使用全局清理命令。

在稳定性至关重要的安装环境中,您可以固定使用特定版本的镜像,而不是始终使用默认版本。 latest这样您就可以查看版本说明,并决定何时应用每个更新。

使用 Docker 安装 Vaultwarden 时常见的错误

使用 Docker 安装 Vaultwarden 时常见的错误

该界面在本地主机上可以正常工作,但在其他计算机上则无法正常工作。

该端口受限于 127.0.0.1 或者,浏览器在通过 HTTP 访问时会拒绝加密功能。请在其他设备上使用该服务之前配置 HTTPS 地址。

官方客户端无法连接到服务器

选择环境 自托管 并输入确切地址 https://检查证书、DNS、代理和变量 DOMAIN.

容器启动后,数据在重新创建时消失了。

音量控制未正确安装。请检查一下。 ./vw-data:/data 设置中会显示“您正在从预期文件夹运行 Compose”。

我无法创建另一个帐户

Si SIGNUPS_ALLOWEDfalse此行为正确。请从控制面板发送邀请,或者仅在创建帐户期间临时启用注册功能。

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、两步验证和备份功能是否正常工作。

最终可以得到一个快速、私密且灵活的密码管理器,但其安全性取决于维护。只有配合更新、限制访问权限和成熟的恢复策略,对服务器的控制才能真正发挥作用。

如何在不发送文件的情况下与家人安全地共享密码
相关文章:
如何在不发送文件的情况下与家人安全地共享密码