VPNSmith
Kostenloses Tool - wg-easy v15

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.

Wie erreichen Sie das Admin-Panel?

Ein A-Eintrag für diesen Namen muss auf den Server zeigen, Ports 80 und 443 offen.

Client-Verkehr
  • Klicken Sie auf « Neu », um das Admin-Passwort zu erzeugen.
  • Geben Sie die Panel-Domain an: Caddy braucht sie für das Zertifikat.
docker-compose.yml
# 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
Caddyfile
wg.example.com {
	reverse_proxy wg-easy:80
}
install.sh
# 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.

Contabo-VPS-Angebot ansehen

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-Variablev15-Entsprechung
WG_HOSTINIT_HOST (nur beim ersten Start), danach das Admin-Panel
PASSWORD / PASSWORD_HASHINIT_USERNAME + INIT_PASSWORD oder der Einrichtungsassistent
WG_PORTINIT_PORT plus passende UDP-Portfreigabe
WG_DEFAULT_DNSINIT_DNS
WG_DEFAULT_ADDRESSINIT_IPV4_CIDR zusammen mit INIT_IPV6_CIDR
Panel über einfaches HTTPINSECURE=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.

Vollständige wg-easy-Anleitung: Einrichtung, Absicherung und Alternativen →

Häufige Fragen

Nutzt wg-easy v15 noch WG_HOST und PASSWORD_HASH?
Nein. v15 ist eine Neuentwicklung und liest diese Variablen nicht mehr. Host, Port, DNS und Admin-Konto werden beim ersten Start im Assistenten festgelegt oder ganz ohne Interaktion über die INIT_*-Variablen (INIT_ENABLED, INIT_USERNAME, INIT_PASSWORD, INIT_HOST, INIT_PORT). Danach ändert man sie im Admin-Panel.
Werden die INIT_-Variablen bei jedem Neustart angewendet?
Nein. Sie gelten nur beim allerersten Start, danach ist die Einrichtung deaktiviert. Die wg-easy-Dokumentation empfiehlt, sie nach der Einrichtung aus der Datei zu entfernen, damit das Passwort nicht im Klartext auf dem Server bleibt.
Warum müssen INIT_IPV4_CIDR und INIT_IPV6_CIDR zusammen gesetzt werden?
Das unbeaufsichtigte Setup arbeitet in Gruppen: Wer eine Variable einer Gruppe setzt, muss alle setzen. Die beiden Adressbereiche bilden eine Gruppe, deshalb ergänzt der Generator immer den IPv6-Bereich (den wg-easy-Standard), wenn Sie den IPv4-Bereich ändern.
Welches Passwort akzeptiert wg-easy?
Der aktuelle Code verlangt mindestens 2 Zeichen für den Benutzernamen und 12 für das Passwort. Der Generator erzeugt in Ihrem Browser ein zufälliges Passwort mit 24 Zeichen, ohne das Zeichen $, das Docker Compose sonst zu interpretieren versucht.
Welchen Server brauche ich für wg-easy?
Einen Linux-Host mit Docker, einer öffentlichen IPv4-Adresse und einer x86_64- oder arm64-CPU. WireGuard ist sparsam: Für einen Haushalt reicht ein kleiner VPS. Unser Beispiel-Host ist Contabo, dessen Einstiegs-VPS eine öffentliche IPv4 und unbegrenzten Traffic enthält.