Vaultwarden 自建教程(Docker Compose 方式)
好的,我现在需要帮用户总结一篇文章的内容,控制在100字以内。首先,我得仔细阅读文章,理解主要内容。文章看起来是关于使用Docker部署Vaultwarden的步骤。 文章分为几个部分:创建目录、写docker-compose.yml文件、配置.env文件、启动服务、以及一些补充说明,比如替换ADMIN_TOKEN和宝塔反代配置。这些都是部署过程中的关键步骤。 接下来,我需要提取主要信息,忽略详细的操作命令和参数。比如,创建目录和配置文件是基本步骤,启动服务是关键操作。补充说明中提到的安全性问题和反向代理配置也是重要的点。 然后,我要确保总结的内容简洁明了,不超过100字。可能的结构是:部署步骤包括创建目录、配置文件、启动服务,并提到安全性和反向代理设置。 最后,检查是否有遗漏的重要信息,并确保语言流畅自然。 </think> 文章描述了使用 Docker 部署 Vaultwarden 的步骤,包括创建数据目录、编写 docker-compose.yml 文件、配置 .env 文件以设置域名、SMTP 信息及管理员令牌等参数,并通过 Docker 启动服务。还提供了宝塔 Nginx 反向代理配置及增强管理员令牌安全性的方法。 2026-1-24 13:25:50 Author: blog.upx8.com(查看原文) 阅读量:0 收藏

1) 创建目录

mkdir -p /opt/vaultwarden/data
cd /opt/vaultwarden

2) 写入 docker-compose.yml

version: '3'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    env_file:
      - ./.env
    volumes:
      - ./data:/data
    ports:
      - "8280:80"

说明:

  • 这里把 Vaultwarden 暴露到 8280 端口(避免与宝塔冲突)。

  • 宝塔 Nginx 将反代到这个端口。

  • ADMIN_TOKEN必须自己改成一个超长随机字符串。

3)写入 .env 文件(把敏感信息放到.env

# 基本
DOMAIN="https://yourdomain.com"  # 替换成你的域名
WEBSOCKET_ENABLED="true"         # 实时通知
SIGNUPS_ALLOWED="false"          # 是否允许注册
ADMIN_TOKEN="请在这里换成一个超长的随机字符串"

# SMTP(如果要启用邮件)
SMTP_HOST="smtp.office365.com"
SMTP_FROM="[email protected]"
SMTP_PORT="587"
SMTP_SSL="starttls"
SMTP_USERNAME="[email protected]"
SMTP_PASSWORD="你的邮箱密码或授权码"

4) 启动 Vaultwarden

cd /opt/vaultwarden
docker compose pull
docker compose up -d 

访问:

  • http://服务器IP:8280
  • 如果能打开 Bitwarden 网页端,就成功了。

5) 补充说明

1. 登录ADMIN会提示:

You are using a plain text `ADMIN_TOKEN` which is insecure.

Please generate a secure Argon2 PHC string by using `vaultwarden hash` or `argon2`.

See: Enabling admin page - Secure the `ADMIN_TOKEN`

https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token

解决这个问题,我们需要替换ADMIN_TOKEN,把 Admin Token 用 Argon2 哈希成 PHC 格式,增强安全性。

运行以下用来生成 Vaultwarden 管理员Token哈希​的命令:

docker run --rm -it vaultwarden/server:latest \
/vaultwarden hash

它会提示你输入明文 Token:

Password:
Confirm Password:

把你想使用的 Token 明文输入/粘进去,回车,就会得到这样一段:

ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$lVo1Sr……7dtUklqug'

将它直接替换ADMIN_TOKEN(如果这里值使用双引号包裹,则需要将$替换为$$: 双引号 “” → 解析特殊字符(如 $变量);单引号 ” → 原样输出,不解析任何东西)。

然后重启容器

docker compose down
docker compose up -d

刷新网页后打开 /admin,输入你用于哈希的那个明文 Token(不是填入.env文件中的哈希值),能登录就成功啦。

2. 宝塔反代配置:

#PROXY-START/

location / {
    proxy_pass http://127.0.0.1:8280;
    # 必须透传真实的 Host,而不是写死
    proxy_set_header Host $host;
    # 基础反代头
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header REMOTE-HOST $remote_addr;
    # WebSocket 必须项
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    # 防止 Nginx 隐藏 Upgrade
    # proxy_hide_header Upgrade;
    add_header X-Cache $upstream_cache_status;
    # 静态缓存(可留可删)
    set $static_filer4jhQ5nY 0;
    if ($uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$") {
        set $static_filer4jhQ5nY 1;
        expires 1m;
    }
    if ($static_filer4jhQ5nY = 0) {
        add_header Cache-Control no-cache;
    }
}

# 专门处理 Vaultwarden 的 WebSocket 通道
location /notifications/hub {
    proxy_pass http://127.0.0.1:8280;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

#PROXY-END/

文章来源: https://blog.upx8.com/Vaultwarden-Docker-Compose
如有侵权请联系:admin#unsafe.sh