↓ Zum Hauptinhalt springen
  1. Anleitungen/

WireGuard UI installieren: Eigenes VPN mit WireGuard UI

Patrick Adams
Autor
Patrick Adams
Linux-Administrator und IT-Specialist. Ich schreibe über Server, Self-Hosting und Open-Source-Software, praxisnah und selbst getestet. Mehr über mich →
Inhaltsverzeichnis
Mit WireGuard verbindest du dich von unterwegs sicher mit deinem Heim- oder Firmennetz. WireGuard UI liefert dazu eine Weboberfläche, mit der du Clients anlegst und ihre Konfiguration einfach per QR-Code aufs Handy bringst.
Voraussetzungen: Debian mit Root-Zugriff, eine öffentliche IP-Adresse oder eine Domain, die auf deinen Server zeigt, und der UDP-Port 51820, der von außen erreichbar ist. Läuft der Server zu Hause, brauchst du dafür eine Portweiterleitung im Router.

Docker installieren
#

System aktualisieren
#

apt update && apt upgrade -y && apt install ca-certificates curl -y

Docker-Paketquelle einrichten
#

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list

Docker und Docker Compose installieren
#

apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Dockge installieren
#

Dockge einrichten
#

Dockge ist eine Weboberfläche, mit der du Docker-Compose-Stacks bequem im Browser verwaltest. Dieser Befehl legt die Verzeichnisse an und startet Dockge:

mkdir -p /opt/stacks /opt/dockge && cd /opt/dockge && curl -fsSL https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml -o compose.yaml && docker compose up -d

Dockge öffnen
#

Öffne Dockge im Browser und lege direkt dein Admin-Konto an:

http://IP-deines-Servers:5001
Lege das Admin-Konto in Dockge sofort an. Bis dahin kann jeder, der die Adresse aufruft, das Konto für sich anlegen.

WireGuard einrichten
#

Stack anlegen
#

Klicke in Dockge auf + Compose und gib unter „Allgemein“ den Stack-Namen wireguard ein.

compose.yaml einfügen
#

services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard
restart: unless-stopped
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- ./config:/config
ports:
- 51820:51820/udp
- 127.0.0.1:5000:5000
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1

wireguard-ui:
image: ngoduykhanh/wireguard-ui:latest
container_name: wireguard-ui
restart: unless-stopped
depends_on:
- wireguard
cap_add:
- NET_ADMIN
network_mode: service:wireguard
environment:
- SESSION_SECRET=${SESSION_SECRET}
- WGUI_USERNAME=${WGUI_USERNAME}
- WGUI_PASSWORD=${WGUI_PASSWORD}
- WGUI_MANAGE_START=true
- WGUI_MANAGE_RESTART=true
volumes:
- ./db:/app/db
- ./config/wg_confs:/etc/wireguard
logging:
driver: json-file
options:
max-size: 50m

Die Weboberfläche auf Port 5000 ist dabei nur auf dem Server selbst erreichbar und nicht aus dem Internet. Wie du trotzdem darauf zugreifst, steht weiter unten.

Umgebungsvariablen in der .env festlegen
#

Trag unten rechts im Feld für die .env diese Werte ein:

WGUI_USERNAME=dein-benutzername
WGUI_PASSWORD=dein-sicheres-passwort
SESSION_SECRET=hier-ein-langer-zufallswert

Einen sicheren Zufallswert erzeugst du so:

openssl rand -hex 32
Setze Benutzername und Passwort vor dem ersten Start. WireGuard UI legt den Benutzer beim ersten Start an. Spätere Änderungen in der .env wirken sich auf das bestehende Konto nicht mehr aus.

Stack starten
#

Klicke auf Speichern und dann auf Deploy.

WireGuard UI öffnen
#

Per SSH-Tunnel verbinden
#

Weil die Weboberfläche nicht öffentlich erreichbar ist, baust du von deinem Rechner aus einen SSH-Tunnel auf:

ssh -L 5000:localhost:5000 root@IP-deines-Servers

Solange diese Verbindung offen ist, erreichst du WireGuard UI in deinem Browser unter:

http://localhost:5000

Server-Einstellungen anpassen
#

Unter Global Settings trägst du bei Endpoint Address die öffentliche IP-Adresse oder Domain deines Servers ein.

Damit deine Clients über das VPN auch ins Internet und in dein Netz kommen, trägst du unter WireGuard Server bei Post Up und Post Down diese Regeln ein:

Post Up: iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
Post Down: iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE

Speichere die Einstellungen und klicke oben auf Apply Config.

Ersten Client anlegen
#

Klicke auf New Client, gib einen Namen ein, zum Beispiel „Handy“, und speichere. Danach klickst du wieder auf Apply Config.

Über den QR-Code beim Client richtest du die WireGuard-App auf dem Handy in Sekunden ein. Für den Laptop lädst du die Konfigurationsdatei herunter und importierst sie in die WireGuard-App.

Verwandte Artikel