Vaultwarden Wiki 中文版
⮐ Vaultwarden Wiki个人主页联系我
  • 关于
  • 首页
  • FAQ
    • 1.FAQ
    • 2.审计
    • 故障排除
      • 1.Bitwarden Android 故障排除
  • 容器镜像的使用
    • 1.容器镜像的选择
    • 2.启动容器
    • 3.更新 Vaultwarden 镜像
    • 4.使用 Docker Compose
    • 5.使用 Podman
  • 部署
    • 1.构建您自己的镜像
    • 2.构建二进制
    • 3.预构建二进制
    • 4.第三方包
    • 5.部署示例
    • 6.代理示例
    • 7.转储示例
    • HTTPS
      • 1.启用 HTTPS
      • 2.使用 Let's Encrypt 证书运行私有 Vaultwarden 实例
  • 配置
    • 1.配置概述
    • 2.禁用新用户注册
    • 3.禁用邀请
    • 4.启用管理页面
    • 5.禁用管理令牌
    • 6.启用 WebSocket 通知
    • 7.启用移动客户端推送通知
    • 8.启用 U2F 和 FIDO2 WebAuthn 身份验证
    • 9.启用 YubiKey OTP 身份验证
    • 10.更改持久性数据位置
    • 11.更改 API 请求大小限制
    • 12.更改 worker 数量
    • 13.SMTP 配置
    • 14.显示密码提示
    • 15.禁用或覆盖密码库接口托管
    • 16.日志记录
    • 17.设置为 systemd 服务
    • 18.从 LDAP 同步用户
    • 19.使用备用基本目录(子目录/子路径)
    • 20.其他配置
    • *使用 systemd docker 运行
    • 数据库
      • 1.使用 MariaDB (MySQL) 后端
      • 2.使用 PostgreSQL 后端
      • 3.在未启用 WAL 的情况下运行
      • 4.从 MariaDB (MySQL) 迁移到 SQLite
    • 安全
      • 1.强化指南
      • 2.Fail2ban 设置
      • 3.Docker Traefik ModSecurity 设置
    • 其他
      • 1.翻译电子邮件模板
      • 2.翻译管理页面
      • 3.自定义 Vaultwarden CSS
  • 备份
    • 1.通用(非 docker)
  • 其他
    • 1.从 Keepass 或 KeepassX 导入数据
    • 2.备份您的密码库
    • 3.与上游 API 实现的区别
    • 4.支持上游的发展
    • 5.使用 Cloudflare DNS 的 Caddy 2.x
    • 6.Git hooks
    • *使用非 root 用户运行 docker 容器
    • *使私有 CA 和自签名证书兼容 Chrome
    • *测试 SSO
由 GitBook 提供支持
在本页
  • 无反向代理/您自己配置的反向代理的最小模板(以下以 Caddy 为例)
  • 带有 HTTP 挑战的 Caddy
  • 带有 DNS 挑战的 Caddy
  1. 容器镜像的使用

4.使用 Docker Compose

上一页3.更新 Vaultwarden 镜像下一页5.使用 Podman

最后更新于1个月前

对应的

是一个用于定义和配置多容器应用程序的工具。在我们的例子中,我们希望 Vaultwarden 服务器和代理都将 WebSocket 请求重定向到正确的地方。

无反向代理/您自己配置的反向代理的最小模板(以下以 Caddy 为例)

此示例假设您已 Docker Compose。此配置可用于不向「外界」开放的本地服务器,也可用作的模板。

首先在您喜欢的位置创建一个新目录,然后更改到该目录下。然后,创建 compose.yml 文件(旧版本为 docker-compose.yml):

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      # DOMAIN: "https://vaultwarden.example.com" # 使用反向代理时必填;您的域名;Vaultwarden 需要知道它是 https 才能正确处理附件
      SIGNUPS_ALLOWED: "true" # 创建账户后,使用 "false" 停用此选项,这样就不会有陌生人注册了
卷
    volumes:
      - ./vw-data:/data # : 前面的路径可以修改
    ports:
      - 11001:80 # 您可以将 11001 替换为您喜欢的端口

要创建并运行容器,请运行:

docker compose up -d && docker compose logs -f

要更新并运行容器,请运行:

docker compose pull && docker compose up -d && docker compose logs -f

带有 HTTP 挑战的 Caddy

首先创建一个新的目录,然后切换到该目录下。接下来,创建如下的 compose.yml 文件(旧版本为 docker-compose.yml),确保将 DOMAIN 和 EMAIL 变量替换为实际的值。

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      DOMAIN: "https://vaultwarden.example.com"  # 您的域名;Vaultwarden 需要知道它是 https 才能正确处理附件
      SIGNUPS_ALLOWED: "true"
    volumes:
      - /vw-data:/data

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - 80:80  #  ACME HTTP-01 验证需要
      - 443:443
      - 443:443/udp # HTTP/3 需要
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-config:/config
      - ./caddy-data:/data
    environment:
      DOMAIN: "https://vaultwarden.example.com"  # 您的域名,以 http 或 https 作为前缀
      EMAIL: "admin@example.com"                 # 用于 ACME 注册的电子邮件地址
      LOG_FILE: "/data/access.log"

在相同的目录下创建如下的 Caddyfile 文件(此文件不需要做修改):

{$DOMAIN} {
  log {
    level INFO
    output file {$LOG_FILE} {
      roll_size 10MB
      roll_keep 10
    }
  }

  # 使用 ACME HTTP-01 验证方式为已配置的域名获取证书
  tls {$EMAIL}

  # 此设置可能会在某些浏览器上出现兼容性问题(例如,在 Firefox 上下载附件)
  # 如果遇到问题,请尝试禁用此功能
  encode zstd gzip

  # 将所有代理到 Rocket
  reverse_proxy vaultwarden:80 {
       # 把真实的远程 IP 发送给 Rocket,让 Vaultwarden 把其放在日志中
       # 这样 fail2ban 就可以阻止正确的 IP 了
       header_up X-Real-IP {remote_host}
  }
}

运行以下命令创建并启动容器。这将为 compose.yml 文件(旧版本为 docker-compose.yml)中的服务创建私有网络,这样就只有 Caddy 暴露在外面了:

docker compose up -d # 或者 'docker-compose up -d' 如果使用独立的 Docker Compose 的话

停止并销毁容器:

docker compose down # 或者 'docker-compose down' 如果使用独立的 Docker Compose 的话

带有 DNS 挑战的 Caddy

首先创建一个新的目录,然后切换到该目录下。接下来,创建如下的 compose.yml 文件(旧版本为 docker-compose.yml),确保将 DOMAIN 和 EMAIL 变量替换为实际的值。

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
       DOMAIN: "https://vaultwarden.example.com"  # 您的域名;Vaultwarden 需要知道它是 https 才能正确处理附件
    volumes:
       - /vw-data:/data

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - 80:80
      - 443:443
      - 443:443/udp # HTTP/3 需要
    volumes:
      - ./caddy:/usr/bin/caddy  # 您的 Caddy 自定义构建
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-config:/config
      - ./caddy-data:/data
    environment:
      DOMAIN: "https://vaultwarden.example.com"  # 您的域名,以 http 或 https 作为前缀
      EMAIL: "admin@example.com"                 # 用于 ACME 注册的电子邮件地址
      DUCKDNS_TOKEN: "<token>"                   # 您的 Duck DNS 令牌
      LOG_FILE: "/data/access.log"

在相同的目录下,创建如下的 Caddyfile 文件(此文件不需要做修改)。

{$DOMAIN} {
  log {
    level INFO
    output file {$LOG_FILE} {
      roll_size 10MB
      roll_keep 10
    }
  }

  # 使用 ACME HTTP-01 验证方式为已配置的域名获取证书
  tls {
    dns duckdns {$DUCKDNS_TOKEN}
  }

  # 此设置可能会在某些浏览器上出现兼容性问题(例如,在 Firefox 上下载附件)
  # 如果遇到问题,请尝试禁用此功能
  encode zstd gzip

  # 将所有代理到 Rocket
  reverse_proxy vaultwarden:80
}

与 HTTP 挑战的示例一样,运行下面的命令以创建并启动容器:

docker compose up -d # 或者 'docker-compose up -d' 如果使用独立的 Docker Compose 的话

本示例假定您 Docker Compose,并且您的 Vaultwarden 实例具有一个可以公开访问的域名(例如 vaultwarden.example.com)。

Docker Compose 可能以 docker-compose <command> ...(带破折号)或 docker compose <command> ...(带空格)运行,具体取决于您安装 Docker Compose 的方式。当 Docker Compose 作为独立的可执行文件分发时,docker-compose 是原始语法。您也可以选择进行安装,在这种情况下将继续使用此语法。但是,Docker 目前建议将 Docker Compose 作为 Docker 插件安装,其中 compose 作为 docker 的子命令,其语法为 docker compose <command> ...。

提供了一个类似的基于 Caddy 的适用于 Synology 的示例。

这个示例和上一个示例一样,但适用于您不希望您的实例被公开访问的情况(即您只能从您的本地网络访问它)。这个示例使用 Duck DNS 作为 DNS 提供商。更多的背景资料,以及如何设置 Duck DNS 的细节,请参考。

原有的 Caddy 构建(包括 Docker 映像中的构建)不包含 DNS 挑战模块,因此接下来您需要。将自定义构建重命名为 caddy 并将其移动到与 compose.yml(旧版本为 docker-compose.yml)相同的目录下。确保 caddy 文件是可执行的(例如 chmod a + x caddy)。上面的 compose.yml 文件(旧版本为 docker-compose.yml)会将自定义构建绑定挂载到 caddy:2 容器中,并替换原有的构建。

官方页面地址
Docker Compose
安装
反向代理
已安装
独立
此处
使用 Let's Encrypt 证书运行私有 Vaultwarden 实例
获取自定义 Caddy 构建