部署Vaultwarden密码管理

 


使用的Docker Compose部署方式,vaultwarden+caddy,caddy自动申请证书这一点很爽。
docker-compose.yaml配置如下,只映射caddy端口80,443

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      DOMAIN: "https://vaultwarden.example.com/<增加随机路径,我设置的是十六位大小写加数字乱码>"  # 改成你自己的域名
      SIGNUPS_ALLOWED: "true" # 当你注册好后,且不准备给别人使用就将true替换为false,然后docker compose up -d
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-config:/config
      - ./caddy-data:/data
    environment:
      DOMAIN: "https://vaultwarden.example.com"  # 改成你自己的域名
      EMAIL: "admin@example.com"            # 改不改都行
      LOG_FILE: "/data/access.log"

在同目录下创建Caddyfile配置如下

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

  tls {$EMAIL} {
    protocols tls1.3
  }

  encode zstd gzip
  
  header {
    Permissions-Policy interest-cohort=()
    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    X-XSS-Protection "1; mode=block"
    X-Frame-Options "DENY"
    X-Robots-Tag "noindex, nofollow"
    X-Content-Type-Options "nosniff"
    -Server
    -X-Powered-By
    -Last-Modified
    Referrer-Policy "no-referrer"
    # Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:;" # 这里会改的朋友可以前面的#号去掉
  }

  route {
    reverse_proxy /<对应docker-compose.yaml配置内vaultwarden的随机路径>/* vaultwarden:80 {
      header_up X-Real-IP {remote_host}  # 用CF家的CDN可以将remote_host替换为http.request.header.Cf-Connecting-Ip
    }

    handle /* {
      abort
    }
  }
}

浏览器访问的时候https://vaultwarden.example.com/随机路径/ 最后一定要加/
注册好后建议开启vaultwarden的TOTP并用别的第三方APP去保存例如谷歌或者微软的Authenticator。
套CF的CDN的话还能再加强一下安全。WAF添加一条IP源地址-包含以下各项(自己家和魔法节点的IPV4和IPV6)选择跳过并勾选所有其余自定义规则,再添加一条主机名等于之前配置中自己的域名,操作选择阻止。没套CDN的也可以VPS上的防火墙实现例如iptables和nftables。
再来个定时备份任务

crontab -e
0 8 * * * tar -czf 备份保存的路径 docker-compose.yaml文件夹路径

使用rclone或restic备份到云端,或者是每周自己从VPS下载。
客户端使用的是官方的浏览器插件和手机APP,因为是自建所以实现全部收费功能,登录的时候选自托管地址那里要域名/完整的随机路径。

張貼留言

較新的 較舊