Diese Anleitung beschreibt Schritt für Schritt die Bereitstellung deines WireGuard VPN-Servers inklusive der praktischen Web-UI zur Verwaltung von Clients mit WireGuard Easy.
📋 Voraussetzungen
Bevor du startest, stelle sicher, dass folgende Komponenten auf deinem System bereitstehen:
- 🐳 Docker & Docker Compose installiert (Offizielle Anleitung)
- 🎛️ Kernel-Module: WireGuard benötigt Kernel-Rechte. Daher sind im Stack die Flags
NET_ADMIN und SYS_MODULE sowie das Einbinden von /lib/modules bereits hinterlegt.
- 🛡️ Wichtiger Sicherheitshinweis: In der bereitgestellten Konfiguration fehlt noch das Web-UI-Passwort und die öffentliche Host-IP. Füge diese Variablen unbedingt vor dem Start hinzu, damit dein VPN korrekt erreichbar und geschützt ist!
🛠️ Schritt-für-Schritt Installation
📝 Schritt 1: Projektordner anlegen
Erstelle ein Verzeichnis für deine Docker-Konfiguration auf dem Server (z. B. in deinem Home-Verzeichnis) und wechsle hinein:
mkdir -p ~/wg-easy && cd ~/wg-easy
🖋️ Schritt 2: Konfiguration anlegen & anpassen
Erstelle die Datei docker-compose.yml:
nano docker-compose.yml
Füge den folgenden Inhalt ein.
⚠️ WICHTIG: Ergänze im environment-Block zwingend deine öffentliche Server-IP/Domain (WG_HOST) und ein Web-UI-Passwort (PASSWORD_HASH). Ein Passwort-Hash kann einfach via docker run --rm -it ghcr.io/wg-easy/wg-easy wghash dein_passwort generiert werden.
volumes:
etc_wireguard:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
environment:
- TZ=Europe/Berlin
- WG_HOST=DEINE_OEFFENTLICHE_SERVER_IP_ODER_DOMAIN # ⚠️ HIER IP/DOMAIN EINTRAGEN
- PASSWORD_HASH=DEIN_GENERIERTER_PASSWORT_HASH # ⚠️ HIER ZUGANGSSCHUTZ EINTRAGEN
# Optional (auskommentiert falls Standard gewünscht):
# - PORT=51821
# - HOST=0.0.0.0
# - INSECURE=false
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"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
# - NET_RAW # ⚠️ Auskommentierung aufheben, falls Podman genutzt wird
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
(Nutze Strg+O -> Enter zum Speichern und Strg+X zum Schließen des Editors)
🚀 Schritt 3: Stack starten
Starte den WireGuard-Server im Hintergrund (Detached Mode):
docker compose up -d
🌐 Weboberfläche & Ports
Sobald der Container aktiv ist, kannst du das Dashboard aufrufen, um Profile für Smartphones, Laptops oder andere Geräte anzulegen:
- 📊 Web-UI (Dashboard):
http://DEINE-SERVER-IP:51821
- 🔀 WireGuard VPN-Port:
51820 (UDP) — Stelle sicher, dass dieser Port in deiner Firewall/deinem Router zum Server hin freigegeben ist!
📱 Verbindung einrichten (Client hinzufügen)
- Öffne die Web-UI im Browser und melde dich mit deinem Passwort an.
- Klicke oben rechts auf "New Client" und gib dem Profil einen Namen (z.B. Smartphone).
- Für Mobilgeräte: Klicke auf das QR-Code-Symbol neben dem erstellten Client. Scanne diesen direkt mit der offiziellen WireGuard-App auf deinem Handy ein.
- Für PCs/Laptops: Klicke auf das Download-Symbol, um die
.conf-Datei herunterzuladen, und lade diese in den WireGuard-Client auf deinem Computer.
🛑 Nützliche Befehle
- Status & Netzwerke prüfen:
docker compose ps
- Logs einsehen (wichtig bei Verbindungsfehlern):
docker compose logs -f wg-easy
- Stack stoppen:
docker compose down