Mit dieser App wird dein Server zu einem einfach zu verwendenen WireGuard VPN-Server, inklusive Management-Webinterface. Durch diesen VPN können deine Geräte auf das Internet zugreifen, sowie auf alle privaten Netzwerke, die mit dem Server verbunden sind. Du kannst sie über die Hetzner Console oder die Hetzner Cloud API installieren.
WireGuard ist eine sehr einfache, aber schnelle und moderne VPN-Lösung, die state-of-the-art Kryptographie verwendet. Es zielt darauf an, schneller, einfacher, schlanker und nützlicher als IPsec zu sein. Es ist außerdem wesentlich performanter als OpenVPN.
WireGuard UI ist eine einfache, web-basierte Management-UI für WireGuard.
Getting Started
Erstell dir deinen Server wie gewohnt über die Hetzner Console. Alternativ zum Betriebssystem kannst du eine App wählen, die du gerne vorinstalliert hättest.
Nun, da du die IP-Adressen kennst, die dem Server zugeordnet wurden, konfigurierst du die Domain, die du für die WireGuard App nutzen möchten, mit den folgenden DNS Einträgen:
- A-Record mit der IPv4-Adresse des Servers, falls vorhanden
- AAAA-Record mit der IPv6-Adresse des Servers, falls vorhanden
Möglicherweise musst du ein paar Minuten warten, bis die DNS-Änderungen übernommen wurden.
Anschließend melde dich bitte auf deinem Server an:
- Per SSH-Key, falls du beim Erstellen deines Servers einen angegeben hast
- Per root-Passwort, das du beim Erstellen deines Servers per E-Mail von uns erhalten hast, wenn kein SSH-Key angegeben wurde
Dies führt dich durch einen Prozess, wobei du Angaben wie die Domain und Admin-Zugangsdaten konfigurieren kannst, die du anschließend nutzt, um die Management-UI zu erreichen. TLS mittels Let's Encrypt wird automatisch für dich konfiguriert.
Wenn du fertig bist, kannst du dich an der Management-UI anmelden und deine ersten WireGuard Clients anlegen.
Im untenstehenden Video wird der gesamte Prozess, vom Erstellen eines Servers in der Hetzner Console, über das Konfigurieren von Domain und Admin-Passwort, bis hin zum Anlegen eines ersten Clients (siehe "VPN-Clients verbinden"), Schritt für Schritt gezeigt.
Hetzner Cloud API
Anstelle der Hetzner Console kann zum Einrichten eines Servers mit vorinstalliertem WireGuard auch die Hetzner Cloud API genutzt werden.
-
Zum Beispiel per Curl-Befehl über die Kommandozeile
curl \ -X POST \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"my-server", "server_type":"cpx22", "image":"wireguard"}' \ 'https://api.hetzner.cloud/v1/servers' -
Oder über hcloud-cli
hcloud server create --name my-server --type cpx22 --image wireguard
VPN-Clients verbinden
Um einen neuen VPN-Client zu verbinden, erstelle zunächst einen neuen Client in der Management-UI. Du musst dazu nur das Name-Feld ausfüllen, die anderen kannst du auf ihrem Standardwert belassen.
Wichtig: Denke immer daran, Apply config zu klicken, nachdem du Clients hinzugefügt oder Änderungen in der Management-UI vorgenommen hast. Ansonsten werden sich die neuen Clients nicht verbinden können.
Nun kannst du den QR code-Button benutzen, um einen QR-Code zu generieren, den du mit der WireGuard App für Android oder iOS scannen können. Oder du nutzt Download, um eine Konfigurationsdatei herunterzuladen, die du zum Verbinden eines PCs oder MACs nutzt. Hier findest du eine Liste aller verfügbaren WireGuard Client-Anwendungen.
Die einzelnen Schritte zum Verbinden eines Clients kannst du dir zur Veranschaulichung auch im oberen Video ab 1:35 Minuten ansehen.
Funktionsweise dieser App
Reverse-Proxy
Diese App richtet als Reverse-Proxy automatisch einen Caddy Webserver mit automatischem HTTPS über Let's Encrypt ein. Die Konfiguration befindet sich unter /etc/caddy/Caddyfile. Aus diesem Grund ist WireGuard UI so konfiguriert, dass es nur lokal unter dem Port 5000 erreichbar ist.
WireGuard-Konfiguration
Beim ersten Start, und jedes Mal, wenn in der Management-UI Apply config betätigt wird, wird die WireGuard-Konfiguration unter /etc/wireguard/wg0.conf neugeschrieben. Es existiert eine wg-quick-watcher@wg0.path Systemd Unit, die jedes Mal, wenn die Konfiguration verändert wird, ein systemctl restart wg-quick@wg0 auslöst. Auf diese Weise werden Änderungen angewendet.
Wenn du die wg0.conf manuell anpassen willst, solltest du vorher WireGuard UI deaktivieren, um sicherzustellen, dass deine Anpassungen nicht überschrieben werden.
Firewall
Während der Installation wird das IPv4- und IPv6-Forwarding im Kernel aktiviert. Um dieses mit einer Firewall einzuschränken, wird nftables verwendet.
Du findest die Firewall- und NAT-Konfiguration unter /etc/nftables.conf. Änderungen können mit systemctl restart nftables angewendet werden.
Passwort ändern
Das Benutzer-Passwort lässt sich über die Management-UI ändern, nachdem du eingeloggt bist und auf deinen aktuellen Nutzernamen klickst. Falls du aber dein Passwort vergessen hast oder eine ältere Version der App benutzt, folge bitte diesen Schritten:
-
Generiere einen bcrypt Passwort-Hash für das neue Passwort. dafür kannst du die Caddy CLI benutzen:
caddy hash-password --algorithm bcrypt | tr -d '\n' | base64 -w0 && echo -
Bearbeite
/usr/local/share/wireguard-ui/db/server/users.jsonund ersetze denpassword_hashmit dem soeben generierten, neuen Hash.
- Bei neueren Versionen von wireguard-ui (seit v0.5.0) lautet der Pfad stattdessen
/usr/local/share/wireguard-ui/db/users/{username}.json.
-
Starte WireGuard UI neu:
systemctl restart wireguard-ui
Weitere Konfigurationsoptionen
Die meisten Konfigurationsoptionen sind über die Management-UI sichtbar und können dort angepasst werden. Einige weitere, sind aber nicht herausgeführt. Wenn du dich dafür interessierst, wirf bitte einen Blick in die Datei /etc/default/wireguard-ui.
Updates installieren
WireGuard und die WireGuard CLI-Tools kannst du regulär über apt update und apt upgrade aktualisieren. Für den Caddy Webserver und WireGuard UI reicht das aber nicht aus, da diese manuell installiert sind.
Für Caddy kannst du die aktuellste caddy_*_linux_amd64.tar.gz von der Release-Seite des Projektes herunterladen und wie folgt entpacken:
tar -C /usr/local/bin -xzf caddy_*_linux_amd64.tar.gz caddyUm WireGuard UI zu aktualisieren, lade bitte das neueste Release-Archiv von deren Release-Seite herunter und entpacke die wireguard-ui Binärdatei nach /usr/local/bin, ähnlich wie oben gezeigt.
Nachdem alles wieder auf dem neuesten Stand ist, kannst du die betroffenen Dienste neustarten:
systemctl restart wireguard-ui caddyImage-Inhalt
Betriebssystem
- Ubuntu 24.04
Installierte Pakete
| NAME | LIZENZ |
|---|---|
| WireGuard | GPLv2 |
| WireGuard UI | MIT |
| Caddy | Apache License 2.0 |
Links
Weitere Informationen über die installierten Pakete erhältst du in den offiziellen Dokumentationen:
Weitere Informationen über Hetzner Cloud und Hetzner Cloud Apps erhältst du in unserer offiziellen Dokumentation: