wg-easy docker-compose Generator
Geben Sie Ihren Server an und wie Sie das Admin-Panel erreichen möchten. Sie erhalten eine docker-compose.yml, die zum aktuellen wg-easy-v15-Image passt, eine Caddyfile für HTTPS und die genauen Befehle zum Start. Alles wird in Ihrem Browser erzeugt.
Alles wird in Ihrem Browser erzeugt. Nichts von Ihren Eingaben, auch nicht das Passwort, wird an unsere Server gesendet.
Die Adresse, mit der sich WireGuard-Clients verbinden.
Ein A-Eintrag für diesen Namen muss auf den Server zeigen, Ports 80 und 443 offen.
- Klicken Sie auf « Neu », um das Admin-Passwort zu erzeugen.
- Geben Sie die Panel-Domain an: Caddy braucht sie für das Zertifikat.
# wg-easy v15 - generated on vpnsmith.com/en/tools/wg-easy-compose-generator
# Host: vpn.example.com - WireGuard port: 51820/udp - panel: https://wg.example.com
volumes:
etc_wireguard:
caddy_data:
caddy_config:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
environment:
- PORT=80
- TRUSTED_PROXIES=10.42.42.43,fdcc:ad94:bacf:61a3::2b
- INIT_ENABLED=true
- INIT_USERNAME=admin
- INIT_PASSWORD=GENERATE-A-PASSWORD
- INIT_HOST=vpn.example.com
- INIT_PORT=51820
- INIT_DNS=1.1.1.1,9.9.9.9
networks:
wg:
ipv4_address: 10.42.42.42
ipv6_address: fdcc:ad94:bacf:61a3::2a
volumes:
- etc_wireguard:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
- "51820:51820/udp" # WireGuard: the only port clients need
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv6.conf.all.forwarding=1
- net.ipv6.conf.default.forwarding=1
caddy:
image: caddy:2-alpine
container_name: caddy
ports:
- "80:80/tcp"
- "443:443/tcp"
- "443:443/udp"
networks:
wg:
ipv4_address: 10.42.42.43
ipv6_address: fdcc:ad94:bacf:61a3::2b
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
networks:
wg:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 10.42.42.0/24
- subnet: fdcc:ad94:bacf:61a3::/64
wg.example.com {
reverse_proxy wg-easy:80
}
# 1. Firewall: zuerst SSH, dann der WireGuard-Port
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable
# Hinweis: Von Docker veröffentlichte Ports umgehen ufw. Öffnen/schließen Sie sie auch in der Provider-Firewall.
# 2. Ordner anlegen und die erzeugte(n) Datei(en) einfügen
sudo mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
sudo nano docker-compose.yml
sudo nano Caddyfile
# 3. wg-easy starten
sudo docker compose up -d
# Logs verfolgen (Strg+C zum Beenden)
sudo docker compose logs -f wg-easy
# 4. Panel öffnen: https://wg.example.com
# 5. Nach dem Login die INIT_*-Zeilen entfernen und docker compose up -d erneut ausführen
Diese Datei braucht einen Server mit öffentlicher IP
Ein Contabo Cloud VPS bietet eine eigene IPv4, Docker-taugliche Linux-Images und unbegrenzten Traffic, also alles, was wg-easy braucht.
Affiliate-Link: Wir erhalten eine Provision, ohne Mehrkosten für Sie.
Warum Ihre alte wg-easy-Compose-Datei nicht mehr funktioniert
wg-easy v15 ist eine komplette Neuentwicklung. Die meisten Variablen aus v14-Anleitungen werden vom neuen Image einfach ignoriert: Der Container startet, aber Host, Passwort und DNS werden nicht übernommen. Laut offizieller Migrationsanleitung sind die meisten Einstellungen ins Admin-Panel gewandert. So entsprechen sich die Variablen:
| v14-Variable | v15-Entsprechung |
|---|---|
| WG_HOST | INIT_HOST (nur beim ersten Start), danach das Admin-Panel |
| PASSWORD / PASSWORD_HASH | INIT_USERNAME + INIT_PASSWORD oder der Einrichtungsassistent |
| WG_PORT | INIT_PORT plus passende UDP-Portfreigabe |
| WG_DEFAULT_DNS | INIT_DNS |
| WG_DEFAULT_ADDRESS | INIT_IPV4_CIDR zusammen mit INIT_IPV6_CIDR |
| Panel über einfaches HTTP | INSECURE=true ist jetzt Pflicht |
Drei Wege zum Admin-Panel
Das Panel kann VPN-Clients anlegen: Wer es erreicht, kontrolliert Ihr VPN. Nur der WireGuard-UDP-Port muss zum Internet offen sein.
HTTPS mit Caddy ist die Variante, die die wg-easy-Dokumentation empfiehlt: Caddy holt ein echtes Zertifikat für eine Subdomain, die auf Ihren Server zeigt, und das Panel wird nie über einfaches HTTP ausgeliefert. Der Generator legt beide Container in dasselbe Netz, gibt Caddy eine feste Adresse und trägt sie in TRUSTED_PROXIES ein, damit fehlgeschlagene Logins mit der echten Client-IP protokolliert werden.
Der SSH-Tunnel veröffentlicht das Panel nur auf 127.0.0.1. Nichts ist offen; Sie öffnen es bei Bedarf mit ssh -L. Ohne Domain ist das die einfachste sichere Lösung.
Der LAN-Modus ist für einen Heimserver: Das Panel wird per HTTP mit INSECURE=true veröffentlicht. Docker veröffentlicht Ports über eigene iptables-Regeln, ufw filtert sie also nicht; halten Sie den Port am Router oder in der Provider-Firewall geschlossen.