欢迎光临
我们一直在努力

Vaultwarden详细部署教程(Docker Compose + HTTPS + 安全加固)

一、环境准备

  • 服务器要求
  • 系统:Ubuntu 20.04+/Debian 11+(推荐)或其他Linux发行版
    配置:至少1核CPU、1GB内存、20GB SSD存储
    网络:开放80/443端口(用于HTTPS),已解析域名指向服务器IP

  • 安装Docker和Docker Compose
  • # 更新系统
    sudo apt update && sudo apt upgrade -y

    # 安装Docker
    sudo apt install -y docker.io docker-compose

    # 启动Docker服务并设置开机自启
    sudo systemctl enable –now docker

    # 将当前用户添加到docker组(可选,避免每次使用sudo)
    sudo usermod -aG docker $USER
    newgrp docker

    二、部署步骤

  • 创建工作目录
  • mkdir -p /opt/vaultwarden && cd /opt/vaultwarden

  • 编写Docker Compose配置文件
    创建docker-compose.yml文件:
  • version: '3.8'

    services:
    vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unlessstopped
    volumes:
    ./data:/data # 数据持久化目录
    ports:
    "8080:80" # 内部HTTP端口(不直接暴露到公网)
    environment:
    # 基础配置
    DOMAIN=https://vault.yourdomain.com # 替换为你的域名(必须HTTPS)
    TZ=Asia/Shanghai # 时区设置

    # 安全配置
    SIGNUPS_ALLOWED=false # 禁止公开注册(创建管理员后设置为false)
    ADMIN_TOKEN=$(openssl rand base64 48) # 生成管理员令牌
    SHOW_PASSWORD_HINT=false # 禁用密码提示

    # 速率限制(防暴力破解)
    LOGIN_RATELIMIT_MAX_BURST=10 # 最大登录尝试次数
    LOGIN_RATELIMIT_SECONDS=60 # 限制时间窗口(秒)
    ADMIN_RATELIMIT_MAX_BURST=5 # 管理员面板限制
    ADMIN_RATELIMIT_SECONDS=300

    # 功能配置
    WEB_VAULT_ENABLED=true # 启用Web界面
    EMERGENCY_ACCESS_ALLOWED=true # 允许紧急访问
    SENDS_ALLOWED=true # 允许安全发送功能

    # Caddy反向代理(自动配置HTTPS)
    caddy:
    image: caddy:2alpine
    container_name: caddy
    restart: unlessstopped
    ports:
    "80:80" # HTTP(用于Let's Encrypt验证)
    "443:443" # HTTPS
    volumes:
    ./Caddyfile:/etc/caddy/Caddyfile:ro
    ./caddydata:/data/caddy
    depends_on:
    vaultwarden

  • 创建Caddy配置文件
    在同一目录创建Caddyfile:
  • # 替换为你的域名
    https://vault.yourdomain.com {
    # 日志配置
    log {
    output file /data/caddy/vaultwarden.log {
    roll_size 10MB
    roll_keep 10
    }
    }

    # 自动申请SSL证书
    tls your@email.com # 替换为你的邮箱(用于证书通知)

    # 反向代理到Vaultwarden
    reverse_proxy vaultwarden:80 {
    header_up X-Real-IP {remote_host}
    header_up X-Forwarded-For {remote_host}
    header_up X-Forwarded-Proto {scheme}
    }
    }

  • 启动服务
  • # 启动容器(后台运行)
    docker-compose up -d

    # 查看日志(确认启动正常)
    docker-compose logs -f

    三、初始化配置

  • 访问Web界面
    打开浏览器访问 https://vault.yourdomain.com,使用以下步骤创建管理员账户:
    首次访问时SIGNUPS_ALLOWED=true,注册第一个账户(管理员)
    登录后,修改docker-compose.yml中的SIGNUPS_ALLOWED=false
    重启容器使配置生效:docker-compose up -d
  • 访问管理员面板
    通过 https://vault.yourdomain.com/admin 登录管理界面(链接换成你自己的),输入之前生成的ADMIN_TOKEN(可在容器日志中找到)。
  • 关键配置建议
    强制2FA:在管理员面板要求所有用户启用2FA
    设置密码策略:最小长度12位,要求包含大小写字母、数字和特殊字符
    配置备份:定期导出密码库(Settings → Export Vault)
    四、安全加固
  • 防火墙配置(UFW示例)
  • # 仅开放必要端口
    sudo ufw allow 22/tcp # SSH
    sudo ufw allow 80/tcp # HTTP(Let's Encrypt验证)
    sudo ufw allow 443/tcp # HTTPS
    sudo ufw enable

  • 启用Fail2ban(防暴力破解)
  • # 安装Fail2ban
    sudo apt install -y fail2ban

    # 创建配置文件
    sudo tee /etc/fail2ban/jail.d/vaultwarden.conf <<EOF
    [vaultwarden]
    enabled = true
    filter = vaultwarden
    logpath = /opt/vaultwarden/data/vaultwarden.log
    maxretry = 5
    bantime = 3600 # 封禁1小时
    findtime = 300 # 5分钟内触发
    EOF

    # 创建过滤规则
    sudo tee /etc/fail2ban/filter.d/vaultwarden.conf <<EOF
    [Definition]
    failregex = ^.*Username or password is incorrect\\. Try again\\. IP: <ADDR>.*$
    ignoreregex =
    EOF

    # 重启服务
    sudo systemctl restart fail2ban

  • 定期更新
  • # 创建更新脚本
    cat > /opt/vaultwarden/update.sh <<EOF
    #!/bin/bash
    cd /opt/vaultwarden
    docker-compose pull
    docker-compose up -d
    echo "Vaultwarden updated at \\$(date)" >> update.log
    EOF

    # 添加执行权限并设置定时任务
    chmod +x update.sh
    sudo crontab -e
    # 添加:0 3 * * 0 /opt/vaultwarden/update.sh # 每周日凌晨3点更新

    五、数据备份与迁移

  • 手动备份
  • # 压缩数据目录
    tar -czf vaultwarden_backup_$(date +%Y%m%d).tar.gz /opt/vaultwarden/data

    # 下载备份到本地(通过SCP)
    scp user@server:/opt/vaultwarden/backup.tar.gz ./

  • 自动备份脚本
  • cat > /opt/vaultwarden/backup.sh <<EOF
    #!/bin/bash
    BACKUP_DIR=/opt/backups
    mkdir -p \\$BACKUP_DIR
    tar -czf \\$BACKUP_DIR/vaultwarden_\\$(date +%Y%m%d).tar.gz /opt/vaultwarden/data
    # 保留最近30天备份
    find \\$BACKUP_DIR -name "vaultwarden_*.tar.gz" -mtime +30 -delete
    EOF

    chmod +x backup.sh
    sudo crontab -e
    # 添加:0 2 * * * /opt/vaultwarden/backup.sh # 每天凌晨2点备份

  • 迁移步骤
    在新服务器部署基础环境(Docker、Docker Compose)
    复制备份文件到新服务器:scp backup.tar.gz user@newserver:/opt/
    解压恢复数据:tar -xzf backup.tar.gz -C /
    重新部署容器:docker-compose up -d
  • 六、常见问题解决

  • 证书申请失败
    确保域名解析正确且服务器可被外部访问
    检查防火墙是否放行80/443端口
    手动验证:curl http://vault.yourdomain.com/.well-known/acme-challenge/test
  • 管理员面板无法访问
    检查ADMIN_TOKEN是否正确生成:cat /opt/vaultwarden/data/config.json
    确保DOMAIN设置为HTTPS且与访问地址一致
    通过日志排查:docker logs vaultwarden | grep admin
  • 客户端同步失败
    检查服务器时间是否同步:sudo timedatectl set-ntp true
    验证SSL证书完整性:openssl s_client -connect vault.yourdomain.com:443
    客户端设置自定义服务器URL:设置 → 自托管 → 服务器URL
  • 赞(0)
    未经允许不得转载:171主机测评 » Vaultwarden详细部署教程(Docker Compose + HTTPS + 安全加固)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址