VPNSmith
self-host-vpnINFO

wg-easy (2026): WireGuard mit Web-Oberfläche in Minuten selbst hosten

wg-easy gibt WireGuard ein Browser-Dashboard: Clients anlegen, QR-Codes scannen, Live-Traffic verfolgen. Die komplette Einrichtung für 2026 — docker-compose, die Passwort-Änderung in v14, das Admin-Panel absichern und wann man es der CLI vorzieht.

Von Eric Gerard · Gründer · VPNSmith — Spezialist für selbstgehostete VPNs & DSGVO-VPS7 Min. LesezeitFoto via Pixabay

Affiliate-Hinweis — Dieser Leitfaden verlinkt auf Contabo, den VPS, auf dem wir unser eigenes selbstgehostetes WireGuard betreiben. Wenn Sie über unseren Link bestellen, erhalten wir eine Provision ohne Mehrkosten für Sie. Jeder Befehl unten ist aus dem offiziellen wg-easy-Projekt dokumentiert und so geschrieben, dass er auf Ihrem eigenen Rechner reproduzierbar ist.

WireGuard ist schnell und modern, aber die Standardeinrichtung sind Dateien und die Kommandozeile: Schlüssel erzeugen, wg0.conf von Hand bearbeiten, wg set für jedes Gerät ausführen, Konfigurationen hin- und herkopieren. Für ein Gerät ist das in Ordnung. Für eine Familie, ein paar Laptops und zwei Telefone wird es mühsam — und im Mühsamen passieren die Fehler (und die geleakten Schlüssel). wg-easy löst genau das: Es belässt das echte WireGuard darunter unangetastet und setzt ein sauberes Web-Dashboard obendrauf. Einen Client mit zwei Klicks hinzufügen, einen QR-Code fürs Telefon anzeigen, sehen, wer verbunden ist und wie viel er überträgt. Dies ist die komplette Einrichtung für 2026, samt der Passwort-Änderung, über die alle stolpern, die aktualisieren.

Was wg-easy wirklich ist (und was nicht)

wg-easy ist ein einzelner Docker-Container, der einen WireGuard-Server und eine kleine Webanwendung zu dessen Verwaltung betreibt. Wichtig vorab zu verstehen: Es ersetzt oder reimplementiert WireGuard nicht. Der Tunnel ist weiterhin dasselbe Kernel-WireGuard, mit denselben Schlüsseln und demselben Protokoll auf der Leitung. wg-easy ist Verwaltung, kein neues VPN. Das hat zwei Folgen:

  • Kein Geschwindigkeitsverlust. Durchsatz und Latenz sind identisch zu einer handgeschriebenen Konfiguration, weil der Datenpfad die Webanwendung nie berührt.
  • Die Weboberfläche ist die Angriffsfläche. Das Dashboard kann Clients anlegen, also kontrolliert das VPN, wer es kontrolliert. Dieses Panel zu schützen ist die ganze Sicherheitsgeschichte (siehe unten).

Was Sie dafür bekommen: eine Browserseite, die jeden Client auflistet, Anlegen/Deaktivieren/Löschen per Klick, einen QR-Code pro Client fürs Telefon und einen Live-Übertragungszähler pro Peer. Um eine Handvoll Geräte ohne Terminal einzurichten, ist nichts schneller.

Ein Laptop auf einem Schreibtisch zeigt Zeilen Quellcode in einem dunklen Editor, daneben liegt ein Smartphone neben der Tastatur
Ein Laptop auf einem Schreibtisch zeigt Zeilen Quellcode in einem dunklen Editor, daneben liegt ein Smartphone neben der Tastatur

Bevor Sie loslegen: der Host, den Sie brauchen

wg-easy ist ein Container, Sie brauchen also einen Linux-Host, der Docker ausführen kann und eine öffentliche IP hat. Für ein VPN, das Sie von überall erreichen, bedeutet das einen kleinen VPS — WireGuard ist so leicht, dass eine Instanz für 4–6 €/Monat ihren Netzwerkport sättigt, lange bevor die CPU es merkt. Wir betreiben unseren auf Contabo wegen des Preis-Bandbreiten-Verhältnisses, und die Bare-Metal-Anleitung steht in unserem Leitfaden zum selbstgehosteten WireGuard auf Contabo, falls Sie den manuellen Weg vergleichen möchten.

Hol dir einen Contabo-VPS für wg-easy →

Auf dem Host brauchen Sie Docker und das Compose-Plugin installiert, das WireGuard-Kernelmodul verfügbar (jede moderne Distribution, Linux 5.6+, bringt es mit) und die Möglichkeit, UDP 51820 in sowohl der Host-Firewall als auch der Sicherheitsgruppe Ihres Anbieters zu öffnen.

Die docker-compose-Datei

Dies ist das moderne wg-easy-Deployment. Ersetzen Sie WG_HOST durch die öffentliche IP oder den Hostnamen Ihres Servers und setzen Sie ein starkes Admin-Passwort (der nächste Abschnitt erklärt die Hash-Pflicht ab v14):

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:latest
    container_name: wg-easy
    environment:
      - WG_HOST=ihre.oeffentliche.server.ip
      - PASSWORD_HASH=$2a$12$ERSETZEN_DURCH_IHREN_BCRYPT_HASH
      - WG_DEFAULT_DNS=1.1.1.1
    volumes:
      - ./etc_wireguard:/etc/wireguard
    ports:
      - "51820:51820/udp"   # WireGuard-Daten — offen ins Internet
      - "51821:51821/tcp"   # Weboberfläche — NUR auf IHRE IP beschränken
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

Drei Dinge leisten die eigentliche Arbeit und sind die üblichen Fehlerquellen:

  • cap_add: NET_ADMIN lässt den Container die WireGuard-Schnittstelle verwalten. Ohne sie startet der Container, kann den Tunnel aber nicht aufbauen.
  • sysctls: net.ipv4.ip_forward=1 macht die Maschine zum Router. Ohne das verbindet sich der Tunnel und leitet dann nichts weiter — das klassische „verbunden, aber kein Internet".
  • volumes sichert Schlüssel und Clients auf dem Host, sodass ein docker compose down && up nicht jedes Gerät löscht.

Starten Sie mit docker compose up -d, öffnen Sie dann http://IHRE_SERVER_IP:51821 und melden Sie sich an.

Die Passwort-Änderung, die Upgrades zerschießt

Das ist der größte Stolperstein 2026. Das alte wg-easy nutzte eine Klartext-Umgebungsvariable PASSWORD. Neuere Releases (v14 und später) haben das Klartext-PASSWORD entfernt und verlangen nun einen bcrypt-Hash in PASSWORD_HASH. Kopieren Sie die Zeile PASSWORD=geheim aus einem alten Tutorial in ein aktuelles Image, verweigert der Container den Login oder startet nicht — und Sie schwören, die Doku sei falsch.

Erzeugen Sie den Hash mit dem Image selbst, damit Sie nie ein Klartext-Passwort in die Shell-Historie einfügen:

docker run --rm ghcr.io/wg-easy/wg-easy wgpw 'ihr-starkes-passwort'
# gibt aus: PASSWORD_HASH=$2a$12$....

Kopieren Sie den vollständigen $2a$12$...-Wert in die Compose-Datei. Beachten Sie: Die $-Zeichen müssen escapt werden (als $$ verdoppeln), wenn Sie den Hash in eine .env-Datei legen, die Compose interpoliert — dieser Escape-Fehler ist die zweithäufigste Upgrade-Beschwerde nach der Umbenennung der Variable.

Ihren ersten Client hinzufügen

Klicken Sie im Dashboard auf New Client, geben Sie ihm einen Namen (z. B. laptop, pixel-telefon), und wg-easy erzeugt das Schlüsselpaar und eine fertige Konfiguration. Für einen Computer laden Sie die .conf herunter und importieren sie in die WireGuard-App oder die Konfigurationsvorlagen; fürs Telefon klicken Sie auf das QR-Symbol und scannen es mit der mobilen WireGuard-App — kein Tippen, kein Dateitransfer. Der Schalter pro Client deaktiviert ein Gerät sofort, ohne es zu löschen, was der richtige Weg ist, ein verlorenes Telefon zu sperren.

Das Admin-Panel absichern — jetzt, nicht später

Die Weboberfläche kann VPN-Clients anlegen, daher ist ein exponiertes, schwach geschütztes Panel die eigentliche Gefahr bei wg-easy. Drei Schichten, nach Präferenz:

  1. Veröffentlichen Sie 51821 niemals im Internet. Lassen Sie in der Firewall Ihres VPS-Anbieters UDP 51820 offen und halten Sie TCP 51821 für die Welt geschlossen. Erreichen Sie das Panel nur von Ihrer eigenen IP — oder, am saubersten, verbinden Sie sich zuerst mit dem VPN und öffnen das Dashboard über den Tunnel, sodass der Admin-Port nie zum Internet zeigt.
  2. Verwenden Sie ein starkes, gehashtes Passwort. Die PASSWORD_HASH-Pflicht existiert dafür. Behandeln Sie es wie ein Root-Passwort.
  3. Setzen Sie TLS davor, wenn Sie es aus der Ferne erreichen müssen: einen Reverse Proxy (Caddy, Traefik, nginx), der HTTPS mit einem echten Zertifikat terminiert, idealerweise mit Allowlist. Klartext-HTTP auf einem öffentlichen Port ist die einzige Konfiguration, die Sie vermeiden sollten.

Ein selbstgehostetes VPN, dem sich jeder Passant selbst hinzufügen kann, ist schlimmer als gar kein VPN. Das Panel sind die Schlüssel zum Königreich — schützen Sie es entsprechend.

wg-easy gegen die Alternativen

  • vs PiVPNPiVPN installiert WireGuard direkt auf dem Host und verwaltet Peers vom Terminal (pivpn add, pivpn -qr). Kein Container, keine Weboberfläche. Wählen Sie PiVPN für eine schlanke, skriptbare Bare-Metal-Maschine; wählen Sie wg-easy, wenn Sie wirklich ein anklickbares Dashboard und Live-Statistiken wollen.
  • vs eine handgeschriebene Konfigurationwg0.conf selbst zu bearbeiten ist die transparenteste und leichteste Option, ideal für eine VPN-Maschine mit einem einzigen Zweck und Infrastructure-as-Code. wg-easy tauscht etwas zusätzliche Fläche (die Web-App) gegen schnelle, CLI-freie Client-Verwaltung.
  • vs andere Self-Host-Stacks — Wollen Sie ein Mesh (jedes Gerät spricht direkt, NAT-Traversal für Sie erledigt) statt eines klassischen Stern-Servers, hat wg-easy die falsche Form; das ist das Terrain von Tailscale/Headscale/NetBird, verglichen in unserem Leitfaden zum besten Self-Host-VPN.

wg-easy läuft auch problemlos neben anderen Containern, weshalb es sich natürlich mit einer breiteren WireGuard-in-Docker-Einrichtung verbindet.

Wann wg-easy die richtige Wahl ist — und wann nicht

Nutzen Sie wg-easy, wenn Sie mehrere Personen oder Geräte einrichten, die QR-Code-Telefoneinrichtung wollen, den Verbindungsstatus gerne live sehen oder schlicht ein Panel einer Konfigurationsdatei vorziehen. Es macht aus „einen VPN-Client einrichten" statt einer fünfminütigen CLI-Pflicht zwei Klicks.

Lassen Sie wg-easy aus, wenn die Maschine nichts weiter tut, als ein oder zwei WireGuard-Peers zu bedienen (eine handgeschriebene Konfiguration ist einfacher und hat ein bewegliches Teil weniger), wenn Sie den Admin-Port nicht sicher aus dem Internet heraushalten können, oder wenn Sie eigentlich ein Mesh statt eines Servers wollen. Für alle anderen ist wg-easy der schnellste ehrliche Weg von einem frischen VPS zu einem funktionierenden, verwaltbaren WireGuard-VPN.

Die ehrliche Einschränkung

wg-easy macht WireGuard einfacher zu verwalten, nicht privater oder sicherer, als WireGuard ohnehin schon ist. Es teilt sich den Host-Kernel, läuft mit NET_ADMIN und ist nur so abgesichert wie der Host und das Admin-Panel, das Sie davorsetzen. Es prüft Ihre Clients nicht, verhindert allein keine DNS-Leaks (setzen Sie WG_DEFAULT_DNS und prüfen Sie nach) und schützt Sie nicht, wenn Sie 51821 offen lassen. Behandeln Sie es als Komfortschicht über echtem WireGuard: deployen, Host und Panel härten, den Datenport öffentlich und den Admin-Port privat halten — und Sie haben ein selbstgehostetes VPN, das Sie für einen ganzen Haushalt wirklich betreiben können, ohne im Terminal zu leben.

★ Nürnberger DSGVO-Rechenzentrum · ✓ Dedizierte IPv4 inklusive · 200+ Mbps garantiert

Hoste dein VPN auf deinem eigenen VPS → ContaboVoller Root-Zugriff · öffentliche IPv4 · wähle deine Region

Häufig gestellte Fragen

Was ist wg-easy?
wg-easy ist ein Open-Source-Projekt, das WireGuard in eine kleine Weboberfläche verpackt. Sie betreiben es als einzelnen Docker-Container; es verwaltet den WireGuard-Server für Sie und gibt Ihnen ein Browser-Dashboard, um Clients hinzuzufügen und zu entfernen, deren Konfigurationen herunterzuladen oder per QR zu scannen und Upload/Download pro Peer live zu sehen. Die Verschlüsselung ist weiterhin reines WireGuard im Kernel des Hosts — wg-easy übernimmt nur die Peer-Verwaltung und die Oberfläche, daher gibt es keinen Leistungsnachteil gegenüber einer handgeschriebenen Konfiguration.
Ist es sicher, wg-easy ins Internet zu stellen?
Nur der WireGuard-Datenport (standardmäßig UDP 51820) sollte zum Internet zeigen. Der Admin-Webport (51821) darf NICHT für die Welt offen sein — wer ihn erreicht und das Passwort errät oder per Brute-Force knackt, kann sich selbst einen VPN-Client erstellen. Beschränken Sie den Webport per Firewall-Regel auf Ihre eigene IP, stellen Sie einen Reverse Proxy mit TLS davor, oder erreichen Sie ihn über den Tunnel selbst. Aktuelle wg-easy-Versionen verlangen ein gehashtes Admin-Passwort (PASSWORD_HASH) genau deshalb, weil ein ungeschütztes Panel das Hauptrisiko ist.
Was ist der Unterschied zwischen wg-easy und PiVPN?
Beide vereinfachen WireGuard, aber unterschiedlich. PiVPN ist ein Installationsskript, das WireGuard (oder OpenVPN) direkt auf dem Host einrichtet und Ihnen CLI-Befehle (pivpn add, pivpn -qr) zur Peer-Verwaltung gibt — kein Container, keine Weboberfläche. wg-easy läuft als Docker-Container und sein ganzer Zweck ist das Browser-Dashboard. Wählen Sie PiVPN, wenn Sie eine schlanke, terminalgesteuerte Bare-Metal-Einrichtung auf einem Raspberry Pi oder VPS mögen; wählen Sie wg-easy, wenn Sie ein anklickbares Panel und Live-Statistiken wollen.
Brauche ich für wg-easy weiterhin einen VPS?
Wenn Sie ein VPN wollen, das Sie von überall mit einer stabilen öffentlichen IP erreichen, ja — wg-easy braucht weiterhin einen Host mit einer routbaren Adresse, genau wie jeder WireGuard-Server. Ein kleiner VPS (4–6 €/Monat) ist die Standardwahl und sättigt seine Anbindung mit WireGuard mühelos. Nur für den Fernzugriff auf ein Heimnetz können Sie wg-easy auf einem Heimserver hinter Portweiterleitung betreiben, verlieren dann aber die saubere statische IP.
Warum verbindet sich wg-easy, leitet aber keinen Traffic weiter?
Fast immer die Host-Firewall oder das IP-Forwarding. Der Container braucht die Fähigkeit NET_ADMIN und der Host muss Pakete weiterleiten (net.ipv4.ip_forward=1) — wg-easy setzt das in seiner Compose-Datei, aber die separate Sicherheitsgruppe eines Cloud-Anbieters kann UDP 51820 dennoch blockieren. Öffnen Sie diesen Port in der Firewall des Anbieters, nicht nur auf dem Host. Schließt der Handshake ab, hängen die Seiten aber weiterhin, ist der nächste Verdächtige die MTU und nicht wg-easy selbst.