version: "3.8" services: wireguard: build: context: . dockerfile: Dockerfile image: wg-easy-iptables-nft:latest container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - WG_HOST=vpn.lazyworkhorse.net - PASSWORD_HASH=${WG_PASSWORD_HASH} - WG_PORT=51820 - WG_DEFAULT_ADDRESS=10.8.0.x - WG_DEFAULT_DNS=1.1.1.1,8.8.8.8 - WG_ALLOWED_IPS=0.0.0.0/0, ::/0 - WG_PERSISTENT_KEEPALIVE=25 - UI_TRAFFIC_STATS=true - UI_CHART_TYPE=0 ports: - "51820:51820/udp" volumes: - /mnt/HoardingCow_docker_data/WireGuard:/etc/wireguard:rw sysctls: - net.ipv4.conf.all.src_valid_mark=1 - net.ipv4.ip_forward=1 restart: unless-stopped networks: - vpn_net labels: - "traefik.enable=true" # HTTP → HTTPS redirect - "traefik.http.routers.wireguard-http.rule=Host(vpn.lazyworkhorse.net)" - "traefik.http.routers.wireguard-http.entrypoints=web" - "traefik.http.routers.wireguard-http.middlewares=redirect-to-https" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" # HTTPS router — protégé par Authelia - "traefik.http.routers.wireguard-https.rule=Host(vpn.lazyworkhorse.net)" - "traefik.http.routers.wireguard-https.entrypoints=websecure" - "traefik.http.routers.wireguard-https.tls=true" - "traefik.http.routers.wireguard-https.tls.certresolver=njalla" - "traefik.http.routers.wireguard-https.middlewares=wireguard-auth" # Authelia forwardAuth - "traefik.http.middlewares.wireguard-auth.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.lazyworkhorse.net/" - "traefik.http.middlewares.wireguard-auth.forwardauth.trustforwardheader=true" - "traefik.http.middlewares.wireguard-auth.forwardauth.authresponseheaders=X-Forwarded-User,X-Forwarded-Groups" # Port interne du web UI wg-easy - "traefik.http.services.wireguard.loadbalancer.server.port=51821" networks: vpn_net: driver: bridge name: vpn_net