Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

WireGuard UI mittels Docker Compose installieren

profile picture
Author
Joshua
Published
2024-11-06
Time to read
5 minutes reading time

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 upgrade

Um sicherzugehen, dass Docker Compose ordnungsgemäß installiert ist, nutze:

docker compose version

Prü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-easy

Fü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;
    }
}
EOF
sudo 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
EOF

Schritt 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 -d

Das 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.6s

Prüfe den Status der Container und warte bis dort "Up ## seconds" steht:

docker ps

Sobald 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.

routing.png

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.

client.png

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 wireguard

Klicke in der WireGuard UI auf das Download-Symbol und lege die Datei auf dem Linux Client in:

/etc/wireguard/wg0.conf

Und 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.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get €20/$20 free credit!

Valid until: 31 December 2026 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more