Created Using WireGuard Easy with Traefik SSL (markdown)
@@ -0,0 +1,93 @@
|
||||
This is an example on how to use WireGuard Easy with Traefik, to access it on a HTTPS domain (e.g. `https://vpn.myhomelab.com`).
|
||||
|
||||
## `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
services:
|
||||
wg-easy:
|
||||
labels:
|
||||
# traefik
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.WireGuardService.loadbalancer.server.port=51821"
|
||||
# http to https
|
||||
- "traefik.http.routers.WireGuardRoute.service=WireGuardService"
|
||||
# ⚠️ Required:
|
||||
# Change this to your host's public address
|
||||
- "traefik.http.routers.WireGuardRoute.rule=Host(`vpn.myhomelab.com`)"
|
||||
- "traefik.http.routers.WireGuardRoute.entrypoints=web"
|
||||
- "traefik.http.routers.WireGuardRoute.middlewares=HttpToHttpsRedirectMiddleware"
|
||||
# https
|
||||
- "traefik.http.routers.WireGuardRouteSSL.service=WireGuardService"
|
||||
# ⚠️ Required:
|
||||
# Change this to your host's public address
|
||||
- "traefik.http.routers.WireGuardRouteSSL.rule=Host(`vpn.myhomelab.com`)"
|
||||
- "traefik.http.routers.WireGuardRouteSSL.entrypoints=websecure"
|
||||
- "traefik.http.routers.WireGuardRouteSSL.tls.certresolver=MainCertResolver"
|
||||
environment:
|
||||
# ⚠️ Required:
|
||||
# Change this to your host's public address
|
||||
WG_HOST: vpn.homelab.com
|
||||
|
||||
# Optional:
|
||||
# - PASSWORD=
|
||||
# - WG_PORT=51820
|
||||
# - WG_DEFAULT_ADDRESS=10.8.0.x
|
||||
# - WG_DEFAULT_DNS=1.1.1.1
|
||||
# - WG_MTU=1420
|
||||
#- WG_ALLOWED_IPS=
|
||||
# - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
|
||||
# - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
|
||||
# - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
|
||||
# - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt
|
||||
|
||||
container_name: wg-easy
|
||||
image: weejewel/wg-easy
|
||||
networks:
|
||||
- traefik_network
|
||||
volumes:
|
||||
- .:/etc/wireguard
|
||||
ports:
|
||||
- "51820:51820/udp"
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE
|
||||
sysctls:
|
||||
- net.ipv4.ip_forward=1
|
||||
- net.ipv4.conf.all.src_valid_mark=1
|
||||
|
||||
traefik:
|
||||
image: traefik:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- traefik_letsencrypt_data:/letsencrypt
|
||||
networks:
|
||||
- traefik_network
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
command:
|
||||
- "--providers.docker"
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--providers.docker.network=traefik_network"
|
||||
- "--entrypoints.web.address=:80"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--certificatesresolvers.MainCertResolver.acme.tlschallenge=true"
|
||||
# ⚠️ Change the email to yours (to receive notifications from lesencrypt)
|
||||
- "--certificatesresolvers.MainCertResolver.acme.email=email@myhomelab.com"
|
||||
- "--certificatesresolvers.MainCertResolver.acme.storage=/letsencrypt/acme.json"
|
||||
|
||||
networks:
|
||||
traefik_network:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
traefik_letsencrypt_data:
|
||||
```
|
||||
Save file docker-compose.yml, edit the variables marked with ⚠️ and run docker-compose up -d in the same directory.
|
||||
|
||||
Of course, make sure to point wg-easy.myhomelab.com to your server's IP address with a DNS A record or DynamicDNS or any other method. Ensure ports 80, 443, 51820 are available (e.g. by forwarding them in your router).
|
||||
|
||||
That's it!
|
||||
Reference in New Issue
Block a user