Persönlicher WireGuard VPN-Server mit benutzerfreundlicher Weboberfläche | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Eigenen WireGuard-VPN-Server mit wg-easy einrichten

wg-easy ist eine Docker-Anwendung, die einen WireGuard-VPN-Server zusammen mit einem Webpanel betreibt. Im Panel legen Sie Clients an, laden deren Konfigurationsdateien herunter oder scannen einen QR-Code mit dem Smartphone und sehen, welche Clients verbunden sind. Diese Anleitung zeigt, wie Sie die aktuelle Version, wg-easy v15, mit Docker Compose auf einem Linux-Server installieren und das erste Gerät verbinden.

Info

wg-easy v15 unterscheidet sich von älteren Versionen. Das Admin-Passwort wird nicht mehr in der Variable PASSWORD übergeben: Ein Container, der mit PASSWORD oder PASSWORD_HASH gestartet wird, startet nicht. Benutzername und Passwort werden jetzt beim ersten Start im Browser festgelegt.

Voraussetzungen

Ein VPS mit öffentlicher IP-Adresse und root- oder sudo-Zugriff genügt. wg-easy ist schlank: 1 vCPU und 1 GB RAM reichen für ein persönliches VPN aus. Die Befehle in dieser Anleitung wurden unter Ubuntu 24.04 LTS geprüft. Da wg-easy in Docker läuft, funktionieren sie unter Ubuntu 22.04, Debian 12, AlmaLinux 9 und Rocky Linux 9 genauso.

Tip

Wenn Sie nichts manuell installieren möchten, bestellen Sie im INTROSERV App Marketplace einen VPS mit bereits bereitgestelltem wg-easy und gehen Sie direkt zum ersten Start.

Docker installieren

Verbinden Sie sich per SSH mit dem Server und installieren Sie die Docker Engine mit dem Compose-Plugin über das offizielle Skript:

curl -fsSL https://get.docker.com | sudo sh

Prüfen Sie, ob Docker und Compose installiert sind:

sudo docker --version sudo docker compose version

Die Datei docker-compose.yml herunterladen

wg-easy wird mit der offiziellen docker-compose.yml aus dem Projekt-Repository installiert. Legen Sie dafür einen Ordner an und laden Sie die Datei herunter:

sudo mkdir -p /etc/docker/containers/wg-easy sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

Die wichtigsten Zeilen der Datei sind das Image und die Ports:

image: ghcr.io/wg-easy/wg-easy:15 ports: - "51820:51820/udp" - "51821:51821/tcp"

Port 51820/udp nutzt WireGuard selbst, Port 51821/tcp das Webpanel. Das Tag 15 bedeutet, dass Updates innerhalb der Version 15 bleiben. Die Konfiguration und die Clients werden in einem Docker-Volume gespeichert und bleiben daher erhalten, wenn der Container neu erstellt wird.

wg-easy starten

Wechseln Sie in den Ordner mit der Datei und starten Sie den Container:

cd /etc/docker/containers/wg-easy sudo docker compose up -d

Prüfen Sie, ob der Container läuft:

sudo docker compose ps

In der Spalte STATUS sollte Up stehen, und die Spalte PORTS sollte die Ports 51820/udp und 51821/tcp anzeigen.

Den Port in der Firewall öffnen

Clients verbinden sich mit dem Server über den UDP-Port 51820. Ist UFW auf dem Server aktiviert, erlauben Sie diesen Port:

sudo ufw allow 51820/udp

Unter AlmaLinux und Rocky Linux mit firewalld verwenden Sie:

sudo firewall-cmd --permanent --add-port=51820/udp sudo firewall-cmd --reload

Das Webpanel öffnen

wg-easy v15 erlaubt die Anmeldung am Panel nicht über reines HTTP. Der einfachste sichere Weg ist, das Panel über einen SSH-Tunnel zu öffnen. Führen Sie auf Ihrem Computer aus:

ssh -L 51821:localhost:51821 USER@SERVER_IP

Lassen Sie diese SSH-Sitzung geöffnet und rufen Sie in Ihrem Browser http://localhost:51821 auf.

Warning

Sie können den Zugriff auch über reines HTTP erlauben: Entfernen Sie in der docker-compose.yml die Kommentarzeichen vom Block environment, setzen Sie INSECURE=true und führen Sie sudo docker compose up -d erneut aus. In diesem Fall wird das Panel-Passwort unverschlüsselt übertragen, verwenden Sie diese Option daher nur zum Testen. Für dauerhaften Zugriff über einen Domainnamen stellen Sie dem Panel einen Reverse-Proxy mit HTTPS voran.

Den ersten Start abschließen

Beim ersten Start öffnet wg-easy einen Einrichtungsassistenten. Erstellen Sie nach dem Begrüßungsbildschirm ein Administratorkonto: Geben Sie einen Benutzernamen und ein Passwort ein und bestätigen Sie das Passwort.

Fragt der Assistent, ob Sie bereits eine bestehende Einrichtung haben, wählen Sie No. Dadurch wird eine neue Konfiguration erstellt.

Legen Sie auf dem nächsten Bildschirm Host und Port fest, mit denen sich die Clients verbinden. Geben Sie bei Host die öffentliche IP-Adresse oder den Domainnamen des Servers ein, nicht localhost, auch wenn Sie das Panel über den SSH-Tunnel geöffnet haben. Belassen Sie Port bei 51820. Die Schaltfläche Suggest trägt die Adresse ein, die wg-easy automatisch erkennt.

Warning

Die Adresse aus Host wird in die Konfiguration jedes Clients übernommen. Geben Sie eine falsche Adresse ein, können sich die Clients nicht verbinden.

Melden Sie sich nach Abschluss des Assistenten mit dem Benutzernamen und dem Passwort an, die Sie erstellt haben.

Einen Client erstellen

Klicken Sie auf der Hauptseite des Panels auf New Client, geben Sie einen Namen für das Gerät ein, zum Beispiel laptop oder phone, und bestätigen Sie. Der Client erscheint in der Liste. Daneben befinden sich Schaltflächen zum Anzeigen des QR-Codes und zum Herunterladen der Konfigurationsdatei.

Erstellen Sie für jedes Gerät einen eigenen Client. So können Sie den Zugriff eines Geräts deaktivieren oder löschen, ohne die anderen zu beeinträchtigen.

Ein Gerät verbinden

Installieren Sie die offizielle WireGuard-App auf Ihrem Gerät. Sie ist für Windows, macOS, Android und iOS auf der offiziellen WireGuard-Download-Seite verfügbar.

Öffnen Sie auf einem Smartphone die WireGuard-App, wählen Sie das Hinzufügen eines Tunnels per QR-Code und scannen Sie den Code aus dem Panel.

Laden Sie auf einem Computer die Konfigurationsdatei des Clients im Panel herunter und importieren Sie sie in der WireGuard-App über Import tunnel(s) from file. Klicken Sie anschließend auf Activate.

Installieren Sie unter Linux wireguard-tools und openresolv. Ohne openresolv schlägt der Befehl wg-quick an der DNS-Zeile der Konfigurationsdatei fehl. Unter Ubuntu und Debian:

sudo apt install wireguard-tools openresolv sudo wg-quick up ./CLIENT_NAME.conf

Um die Verbindung unter Linux zu trennen, führen Sie sudo wg-quick down ./CLIENT_NAME.conf aus.

Die Verbindung prüfen

Prüfen Sie bei aktivem Tunnel, welche IP-Adresse das Internet sieht:

curl -4 ifconfig.me

Der Befehl sollte die IP-Adresse Ihres Servers zurückgeben. Sie können auch eine beliebige Website zur IP-Prüfung im Browser öffnen. Im wg-easy-Panel zeigt der verbundene Client die letzte Aktivität und den Datenverkehr an.

Clients verwalten

Alle Clients werden auf der Hauptseite des Panels verwaltet. Jeden Client können Sie mit dem Schalter daneben vorübergehend deaktivieren: Das Gerät bleibt in der Liste, kann sich aber nicht verbinden, bis Sie es wieder aktivieren. Um den Zugriff vollständig zu entziehen, löschen Sie den Client. Seine Konfigurationsdatei und sein QR-Code funktionieren sofort nicht mehr. Wenn ein Gerät verloren geht oder eine Konfigurationsdatei möglicherweise kopiert wurde, löschen Sie diesen Client und erstellen Sie einen neuen.

Wenn etwas nicht funktioniert

Wenn sich das Panel nicht öffnet, prüfen Sie mit sudo docker compose ps, ob der Container läuft, und sehen Sie sich das Log an:

sudo docker logs wg-easy

Öffnet sich das Panel, Sie können sich aber nicht anmelden und sehen eine Meldung über eine unsichere Verbindung, haben Sie es über reines HTTP geöffnet. Verwenden Sie den SSH-Tunnel aus dem obigen Abschnitt.

Kann sich der Client nicht verbinden, prüfen Sie, ob der UDP-Port 51820 in der Firewall des Servers und gegebenenfalls in der Firewall des Anbieter-Panels geöffnet ist. Öffnen Sie außerdem die Konfigurationsdatei des Clients und prüfen Sie die Zeile Endpoint: Sie muss die öffentliche Adresse des Servers enthalten. Steht dort eine falsche Adresse, wurde der Host im Einrichtungsassistenten falsch eingegeben.

Ist der Tunnel aktiv, das Gerät hat aber kein Internet, prüfen Sie das Server-Log mit sudo docker logs wg-easy und stellen Sie sicher, dass der Container aus der offiziellen docker-compose.yml ohne Änderungen im Abschnitt sysctls gestartet wurde.

Schlägt wg-quick unter Linux mit einem Fehler zu resolvconf fehl, installieren Sie openresolv, wie im Abschnitt zum Verbinden eines Geräts beschrieben.

wg-easy aktualisieren

Um einen neueren Build der Version 15 zu installieren, laden Sie das neue Image herunter und erstellen Sie den Container neu:

cd /etc/docker/containers/wg-easy sudo docker compose pull sudo docker compose up -d

Clients und Einstellungen bleiben erhalten, da sie im Docker-Volume gespeichert sind.

wg-easy stoppen und entfernen

Um den VPN-Server zu stoppen, führen Sie im Ordner mit der docker-compose.yml aus:

sudo docker compose down

Die Konfiguration bleibt im Volume erhalten, und mit sudo docker compose up -d startet der Server wieder mit denselben Clients.

Um wg-easy samt allen Clients und Schlüsseln vollständig zu entfernen, fügen Sie die Option -v hinzu:

sudo docker compose down -v

Warning

Nach sudo docker compose down -v funktionieren alle Client-Konfigurationen nicht mehr. Um das VPN erneut zu nutzen, müssen Sie den ersten Start abschließen und die Clients neu erstellen.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA