4.启用管理页面

强烈建议在启用此功能之前激活 HTTPS,以避免潜在的 MITM 攻击。

该页面允许服务器管理员查看并删除所有已注册的用户。它也允许邀请新用户,即使禁用了注册功能。

要启用管理页面,您需要设置一组身份验证令牌。该令牌可以是任何字符,但建议使用随机生成的长字符串,比如运行 openssl rand -base64 48 命令生成。

此令牌是您访问服务器管理区域的密码!请确保其安全性。您该如何确保管理令牌的安全

要设置令牌,请使用 ADMIN_TOKEN 变量:

docker run -d --name vaultwarden \
  -e ADMIN_TOKEN=some_random_token_as_per_above_explanation \
  -v /vw-data/:/data/ \
  -p 80:80 \
  vaultwarden/server:latest

此后,管理页面将在 /admin 子目录中可用。

在管理页面首次保存设置时,将自动在 DATA_FOLDER 文件夹中生成 config.json 文件。该文件中的值优先于环境变量值。

需要注意的是,在您点击 Save 按钮之前,管理页面中的配置更改是不会生效的。例如,如果您正在测试 SMTP 设置,您更改了 SMTP Auth mechanism 设置,然后点击 Send test email 来测试更改,这将不会像预期的那样工作 -- 因为您没有点击 SaveSMTP Auth mechanism 的更改不会生效。

注意:更改 ADMIN_TOKEN 后,当前已登录的任何管理员仍可以使用他们现有的登录会话直到到期。管理会话生命周期是可配置的,默认为 20 分钟。

禁用管理页面

要禁用管理页面,您必须取消设置 ADMIN_TOKEN 并重新启动 Vaultwarden。

注意:如果环境变量 ADMIN_TOKEN 的值持续保留在上述的 config.json 文件中,则移除环境变量 ADMIN_TOKEN 并不会禁用管理页面。要禁用管理页面,请确保没有设置 ADMIN_TOKEN 环境变量,并且 config.json(如果该文件存在)中不存在 "admin_token" 键。

保护 ADMIN_TOKEN

此功能自 1.28.0+ 后可用。

优先使用环境变量。

但是,如果您通过管理界面更新了设置,则需要通过相同的 Web 界面更新管理令牌!

不要手动编辑 config.json 文件,因为如果操作不当可能会引起故障!

要在保护令牌后登录管理页面,您需要使用令牌创建期间提供的密码(而不是令牌本身)。

以前 ADMIN_TOKEN 只能是纯文本格式。您现在可以通过生成 PHC 字符串来使用 Argon2 对 ADMIN_TOKEN 进行哈希处理。这可以通过使用 Vaultwarden 中的内置 hash 命令或使用 argon2 CLI 工具生成。在 Vaultwarden 应用程序中,有两个预设,一个使用 Bitwarden 默认的,一个使用 OWASP 推荐

有关如何生成 Argon2id PHC 哈希的一些示例。

使用 vaultwarden hash

Vaultwarden 中内置了一个 PHC 生成器,您可以通过 CLI vaultwarden hash 运行它。这可以通过已经运行的实例上的 docker exec 来完成,或者通过在您自己的系统上的 docker 在本地运行它。

下面使用 vwcontainer 作为容器名称,请将其替换为您的实例的正确容器名称。Vaultwarden CLI 会要求输入两次密码,如果两次相同,它将输出已生成的 PHC 字符串。

示例:

# 使用 Bitwarden 默认(默认的预设值)
# Via docker on a running container
docker exec -it vwcontainer /vaultwarden hash

# 通过 docker 并创建一个临时容器
docker run --rm -it vaultwarden/server /vaultwarden hash

# 直接使用 vaultwarden 二进制文件
./vaultwarden hash

# 使用 OWASP 最低的推荐设置
# Via docker on a running container
docker exec -it vwcontainer /vaultwarden hash --preset owasp

# 通过 docker 并创建一个临时容器
docker run --rm -it vaultwarden/server /vaultwarden hash --preset owasp

# 直接使用 vaultwarden 二进制文件
./vaultwarden hash --preset owasp

使用 argon2

您还可以使用大多数 Linux 发行版上提供的 argon2 CLI。

# 使用 Bitwarden 默认
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
# 输出:$argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9/N0

# 使用 OWASP 最低的推荐设置
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1
# 输出:$argon2id$v=19$m=19456,t=2,p=1$cXpKdUxHSWhlaUs1QVVsSStkbTRPQVFPSmdpamFCMHdvYjVkWTVKaDdpYz0$E1UgBKjUCD2Roy0jdHAJvXihugpG+N9WcAaR8P6Qn/8

请在您的 docker/podman CLI 命令中使用这些字符串。对于 docker-compose.yml 文件,请按照以下说明操作。如果您使用的是已有的设置,请不要忘记通过管理界面更新您的密码/令牌。

如何防止 docker-compose.yml 中的变量插值

使用 Docker Compose 并通过 environment 指令配置 ADMIN_TOKEN 时,您需要使用两个美元符号 $$ 来转义已生成的 argon2 PHC 字符串中出现的所有五个美元符号 $ 以防止变量插值,例如:

  environment:
    ADMIN_TOKEN: $$argon2id$$v=19$$m=19456,t=2,p=1$$UUZxK1FZMkZoRHFQRlVrTXZvS0E3bHpNQW55c2dBN2NORzdsa0Nxd1JhND0$$cUoId+JBUsJutlG4rfDZayExfjq4TCt48aBc9qsc3UI

这可以自动完成,例如通过添加 | sed 's#$#$$#g' 到上面的 argon2 命令行的末尾。

否则您将收到警告消息并且变量将无法正确设置:

WARNING: The argon2id variable is not set. Defaulting to a blank string.
WARNING: The v variable is not set. Defaulting to a blank string.
WARNING: The m variable is not set. Defaulting to a blank string.
...

docker-compose.yaml 使用 .env 文件时情况并非如此。如下所示。在这种情况下,只需使用单个 $ 变量。与使用 -e ADMIN_TOKEN 的 docker/podman cli 相同。

/docker-data
├── .env
├── docker-compose.yaml
├── vaultwarden/data

.env:

确保在 docker-compose 所使用的 env 文件中使用单引号。

VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$MmeK.....'

docker-compose.yaml:

services:
  vaultwarden:
    image: ghcr.io/dani-garcia/vaultwarden
    container_name: vaultwarden
    restart: unless-stopped
    volumes:
      - /path/to/vaultwarden/data/:/data/
    environment:
      - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}

您可以通过调用 docker compose config 来检查您的配置,您应该会看到 $ 符号转义成了两个 $$

最后更新于