Eigenen WireGuard-Zugang mit wg-easy per Docker einrichten¶
Veröffentlicht am 22. August 2026 · Geschätzte Lesezeit: 4 Minuten
Mit wg-easy betreibst du einen eigenen WireGuard-VPN-Server und verwaltest Geräte über eine Weboberfläche. So erreichst du dein Heimnetz verschlüsselt von unterwegs, ohne Verwaltungsports öffentlich freizugeben. Plane für Einrichtung und Test etwa 30 Minuten ein.
Voraussetzungen
- Ein Linux-Server mit Docker und Docker Compose
- Eine öffentliche IP-Adresse oder ein DNS-Name für deinen Internetanschluss
- Zugriff auf die Portfreigaben deines Routers
- Der UDP-Port 51820 frei und ein SSH-Zugang zum Server
1. Arbeitsordner anlegen¶
Führe diesen Befehl auf dem Docker-Server aus. Er erstellt den Projektordner und wechselt direkt hinein:
2. Compose-Datei erstellen¶
Lege im Ordner ~/wg-easy eine Datei namens compose.yaml mit diesem Inhalt an:
volumes:
etc_wireguard:
name: wg-easy-data
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
restart: unless-stopped
environment:
INSECURE: "true"
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"
- "127.0.0.1:51821:51821/tcp"
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
networks:
wg:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 10.42.42.0/24
- subnet: fdcc:ad94:bacf:61a3::/64
Der UDP-Port 51820 nimmt VPN-Verbindungen an. Die Weboberfläche auf Port 51821 ist
nur an 127.0.0.1 gebunden und damit nicht direkt aus LAN oder Internet erreichbar.
INSECURE erlaubt hier HTTP ausschließlich durch den späteren lokalen SSH-Tunnel.
3. Container starten¶
Starte wg-easy auf dem Docker-Server:
Prüfe danach den Zustand:
Bei einem Fehler zeigen die letzten Protokollmeldungen meist die Ursache:
4. Sicheren Zugang zur Weboberfläche öffnen¶
Führe den folgenden Befehl auf deinem Computer aus, nicht auf dem Server. Ersetze
<ssh-benutzer> durch deinen Linux-Benutzernamen und <server-ip> durch die interne
IP-Adresse des Docker-Servers:
Lass das Terminal geöffnet und rufe im Browser http://127.0.0.1:51821 auf. Der
Browserzugriff läuft dadurch innerhalb der verschlüsselten SSH-Verbindung.
5. Administrator und Serveradresse einrichten¶
Lege im Assistenten einen eigenen Administratornamen und ein langes, einmaliges Passwort fest. Wähle bei einer neuen Installation No, wenn nach einer vorhandenen Konfiguration gefragt wird.
Trage bei Host deine öffentliche IP-Adresse oder deinen DNS-Namen ein. Bei
Port bleibt 51820, sofern du ihn nicht bewusst geändert hast. Aktiviere danach
unter Account die Zwei-Faktor-Anmeldung und bewahre die Wiederherstellungsdaten
außerhalb des Servers auf.
6. Router und Firewall konfigurieren¶
Leite im Router ausschließlich UDP 51820 an <server-ip> weiter. Ersetze
<server-ip> durch die feste interne IP des Docker-Servers. Bei einer Host-Firewall
mit UFW öffnest du nur diesen UDP-Port:
Verwaltungsport nicht weiterleiten
Leite TCP 51821 niemals im Router weiter. Die Weboberfläche bleibt über den SSH-Tunnel erreichbar. Für eine öffentliche Oberfläche wäre stattdessen ein korrekt abgesicherter HTTPS-Reverse-Proxy nötig.
7. Erstes Gerät verbinden und testen¶
Erstelle in wg-easy einen Client mit einem eindeutigen Namen, zum Beispiel handy.
Importiere den angezeigten QR-Code in die offizielle WireGuard-App. Behandle QR-Code
und heruntergeladene Konfigurationsdatei wie ein Passwort.
Deaktiviere am Handy testweise WLAN, aktiviere den neuen WireGuard-Tunnel und rufe eine interne Seite auf. Prüfe anschließend in wg-easy, ob beim Client ein aktueller Handshake und übertragene Daten erscheinen.
8. Konfiguration sichern und wiederherstellen¶
Stoppe wg-easy kurz, damit die SQLite-Datenbank und Schlüssel während des Backups unverändert bleiben:
Sichere das benannte Volume in ein verschlüsselbar zu verwahrendes Archiv:
docker run --rm -v wg-easy-data:/data:ro -v "$PWD:/backup" alpine sh -c 'tar czf /backup/wg-easy-backup-$(date +%F-%H%M).tar.gz -C /data .'
Starte den Dienst wieder:
Das Archiv enthält private VPN-Schlüssel und muss vertraulich behandelt werden. Für
den Rückbau genügt docker compose down; verwende nicht -v, solange du das Volume
behalten möchtest.
9. Typische Fehler beheben¶
- Kein Handshake: Prüfe öffentliche Hostadresse, UDP-Portfreigabe und Firewall.
- Mobil verbunden, aber Heimnetz nicht erreichbar: Kontrolliere die erlaubten IP-Netze des Clients und mögliche Überschneidungen mit dem fremden WLAN.
- Weboberfläche nicht erreichbar: Der SSH-Tunnel muss geöffnet bleiben und der lokale Port 51821 darf nicht bereits belegt sein.
- SYS_MODULE-Fehler: Prüfe, ob der Host WireGuard unterstützt und
/lib/modulesvorhanden ist. - Gerät verloren: Deaktiviere oder lösche den zugehörigen Client sofort, damit dessen privater Schlüssel keinen Zugriff mehr erhält.
10. Quellen und Videos¶
- Offizielle wg-easy-Grundinstallation
- Offizielle Compose-Datei von wg-easy
- Offizielle Anleitung zum Einrichtungsassistenten
- Video: wg-easy VPN-Server – Anleitung 2026
- Video: wg-easy mit Docker einrichten
Fertig¶
Dein WireGuard-Zugang läuft jetzt, während die Verwaltung nur über den SSH-Tunnel erreichbar bleibt. Die Funktionsprüfung ist erfolgreich, wenn das Mobilgerät über das Mobilfunknetz einen aktuellen Handshake erhält und eine interne Seite öffnet.