Einleitung
In diesem Tutorial lernst du wie du die WireGuard UI wg-easy auf einem Linux Server mit Docker Compose installieren kannst.
WireGuard Easy ist eine web-basiert Admin-UI.
Voraussetzungen
- Linux Cloud Server (vorzugsweise Ubuntu 22.04 / 24.04)
- Docker und Docker Compose installiert
- Öffentliche IPv4 Adresse
- Einen Domain
Schritt 1 - Aktualisiere deinen Server
sudo apt update && sudo apt upgradeUm sicherzugehen, dass Docker Compose ordnungsgemäß installiert ist, nutze:
docker compose versionPrüfe außerdem, dass ein A-Record von deiner Domain auf die IPv4 des Servers zeigt.
Schritt 2 - Vorbereitung der .YML
Die .yml Datei enthält alle erforderlichen Informationen, um WireGuard UIs Docker Container zu erstellen.
Im wg-easy-Repository auf GitHub gibt es eine einfache docker-compose.yml als Beispiel. Um sich in der UI einloggen zu können, muss man aber INSECURE auf "true" setzen.
Im wg-easy-Wiki werden ein paar Alternativen erklärt. Dieses Tutorial richtet sich nach "WireGuard Easy with nginx SSL".
Setze eine Variable und erstelle einen neuen Ordner:
DOMAIN="wg-easy.example.com"
sudo mkdir /opt/wg-easyFühre die folgenden zwei Befehle aus, um docker-compose.yml und ~/.nginx/servers/wg-easy.conf zu erstellen:
sudo tee /opt/wg-easy/wg-easy.conf <<EOF
server {
server_name $DOMAIN;
location / {
proxy_pass http://wg-easy:51821/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host \$host;
}
}
EOFsudo tee /opt/wg-easy/docker-compose.yml <<EOF
volumes:
etc_wireguard:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
hostname: wg-easy
volumes:
- etc_wireguard:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
- "51820:51820/udp"
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
nginx:
image: weejewel/nginx-with-certbot
container_name: nginx
hostname: nginx
volumes:
- /opt/wg-easy/:/etc/nginx/servers/
- ./.nginx/letsencrypt/:/etc/letsencrypt/
ports:
- "80:80/tcp"
- "443:443/tcp"
restart: unless-stopped
EOFSchritt 3 - Starten der Container und Zugriff auf das Webinterface
Um den Container zu starten, nutze:
sudo docker compose -f /opt/wg-easy/docker-compose.yml up -dDas Ergebnis sollte so aussehen:
[+] up 35/35
:heavy_check_mark: Image ghcr.io/wg-easy/wg-easy:15 Pulled 11.3s
:heavy_check_mark: Image weejewel/nginx-with-certbot Pulled 5.1ss
:heavy_check_mark: Network wg-easy_default Created 0.0s
:heavy_check_mark: Volume wg-easy_etc_wireguard Created 0.0s
:heavy_check_mark: Container wg-easy Started 0.6s
:heavy_check_mark: Container nginx Started 0.6sPrüfe den Status der Container und warte bis dort "Up ## seconds" steht:
docker psSobald beide bereit sind, führe diese Befehle aus, um ein "Let's Encrypt"-Zertifikat zu erstellen:
docker exec -it nginx /bin/sh
cp /etc/nginx/servers/wg-easy.conf /etc/nginx/conf.d/.
DOMAIN="wg-easy.example.com"
certbot --nginx --non-interactive --agree-tos -m webmaster@google.com -d $DOMAIN
nginx -s reload
exitÖffne https://wg-easy.example.com mit deinem Browser.
Ersetze wg-easy.example.com mit deiner Domain.
Wenn alles wie erwartet funktioniert, sollte die WireGuard Easy Ersteinrichtungsseite angezeigt werden.
Klicke auf "Weiter" und erstelle einen Admin-Account.
Nachdem der Account erstellt wurde, wirst du nach einer bestehenden Einrichtung gefragt. Wenn es keine gibt, klicke auf "Nein".
Gebe auf der nächsten Seite deine Domain (z.B. wg-easy.example.com) als "Host" an und klicke auf "Weiter".
Melde dich nun mit dem eben erstellten Admin-Account an.
Schritt 4 - Routing-Konfiguration
Klicke oben rechts auf "Administrator" » "Admin-Konsole".
Wähle im der linken Menüleiste "Hooks" aus.
Für PostUp und PostDown sollte es bereits Regeln geben. Passe die Regeln nach Bedarf an.
Schritt 5 - Erstellen einer Client-Konfiguration
Erstelle jetzt einen Client:
- Im Dashboard, klicke oben rechts auf
+ Neu - Gebe einen beschreibenden Namen an
- Falls gewünscht, bestimme ein Ablaufsdatum
Nachdem der Client erstellt wurde, klicke auf das Stift-Symbol. Hier kannst du hier die Konfiguration anzeigen lassen, Einstellungen anpassen oder den Client wieder löschen.
Schritt 6 - Hinzufügen von Clients
Schritt 6.1 - iOS / Android
Lade die WireGuard App aus dem App Store / Play Store.
Klicke in der WireGuard UI auf das QR-Code-Symbol und scanne ihn mit dem iOS / Android Client wie in diesem Tutorial erklärt.
Schritt 6.2 - Windows / Mac
Installiere den Windows WireGuard Client / Mac WireGuard Client.
Klicke in der WireGuard UI auf das Download-Symbol und importiere die .conf-Datei auf den Windows / Mac Client wie in diesem Tutorial erklärt.
Schritt 6.3 - Linux
Installiere WireGuard auf dem Linux Client:
sudo apt update && sudo apt install wireguardKlicke in der WireGuard UI auf das Download-Symbol und lege die Datei auf dem Linux Client in:
/etc/wireguard/wg0.confUnd starte (oder stoppe) WireGuard:
-
Vorübergehend
wg-quick up wg0 wg-quick down wg0 -
Dauerhaft
sudo systemctl start wg-quick@wg0 && sudo systemctl enable wg-quick@wg0 sudo systemctl stop wg-quick@wg0 && sudo systemctl disable wg-quick@wg0
Schritt 6.4 - Prüfen der Verbindung
Um zu prüfen ob alles wie gewünscht funktioniert, rufe eine Seite wie ip.hetzner.com auf und vergleiche die IP mit der deines Servers.
Ergebnis
Glückwunsch! Du hast nun erfolgreich eine WireGuard Instanz installiert.