Website-Suche

Wie man WireGuard VPN + Web-UI auf Ubuntu installiert


Offenlegung: Dieser Artikel enthält Affiliate-Links. Ich kann eine Provision verdienen, wenn Sie über diese Links einkaufen, ohne dass Ihnen zusätzliche Kosten entstehen.

Wenn Sie sich mit dem WLAN eines Cafés verbinden oder über ein öffentliches Netzwerk auf das Internet zugreifen, reisen Ihre Daten durch eine Infrastruktur, die Sie nicht kontrollieren. Jeder, der sich zwischen Ihnen und den Websites, die Sie besuchen, befindet, könnte potenziell Ihren Datenverkehr abfangen, selbst in Ihrem Heimnetzwerk kann Ihr Internetanbieter jede von Ihnen besuchte Website sehen.

Ein VPN löst dieses Problem, indem es einen verschlüsselten Tunnel zwischen Ihrem Gerät und einem Server erstellt, dem Sie vertrauen. Anstatt dass Ihr Datenverkehr direkt ins Internet geht, reist er zuerst durch diesen sicheren Tunnel zu Ihrem VPN-Server, der ihn dann an sein Ziel weiterleitet, sodass jeder, der das Netzwerk beobachtet, nur verschlüsselte Daten zu Ihrem VPN-Server sieht, nichts weiter.

WireGuard ist ein modernes VPN-Protokoll, das diese Aufgabe bemerkenswert gut erledigt. Im Gegensatz zu älteren VPN-Technologien, die Hunderttausende von Codezeilen erfordern, erreicht WireGuard dieselbe Aufgabe mit nur etwa 4.000 Zeilen, was weniger Fehler, bessere Leistung und einfachere Sicherheitsprüfungen bedeutet.

Aber hier ist die Sache: Während WireGuard selbst einfach ist, kann die Verwaltung mehrerer VPN-Clients, das Erstellen von Konfigurationsdateien und das Nachverfolgen, wer Zugriff hat, allein über die Kommandozeile mühsam werden, weshalb eine Weboberfläche praktisch ist.

In diesem Leitfaden richten wir einen vollständigen WireGuard VPN-Server mit einer benutzerfreundlichen Weboberfläche ein, die es Ihnen ermöglicht, alles über Ihren Browser zu verwalten, wie z. B. neue Geräte hinzuzufügen, QR-Codes für mobile Clients zu erstellen und Verbindungen zu überwachen, ohne eine einzige Konfigurationsdatei manuell zu bearbeiten.

Was Sie brauchen werden

Bevor wir beginnen, stellen Sie sicher, dass Sie haben:

  • Ein Linux-Server mit einer öffentlichen IP-Adresse (ein VPS von Anbietern wie DigitalOcean, Linode oder AWS funktioniert einwandfrei).
  • Root-Zugriff oder Sudo-Rechte auf diesem Server.
  • Grundlegendes Verständnis von SSH (Sie sollten wissen, wie man sich mit Ihrem Server verbindet).

Dieser Leitfaden geht davon aus, dass Sie Ubuntu 22.04 oder Ubuntu 24.04 verwenden, aber die Schritte funktionieren ähnlich auf Debian und anderen Distributionen mit geringfügigen Anpassungen.

Die Architektur verstehen

Lassen Sie uns einen Moment Zeit nehmen, um zu verstehen, was wir bauen, bevor wir anfangen, Befehle einzugeben.

Ein WireGuard-Setup besteht aus Peers – Geräten, die über verschlüsselte Tunnel miteinander kommunizieren können.

In unserem Fall werden wir haben:

  • Der Server: Ihr Linux-Rechner mit einer öffentlichen IP-Adresse, der als zentrales Zentrum dient, zu dem alle Ihre Geräte eine Verbindung herstellen.
  • Die Clients: Ihr Laptop, Telefon, Tablet oder jedes andere Gerät, das Sie schützen möchten, jeder Client erhält sein eigenes kryptografisches Schlüsselpaar und seine eigene Konfiguration.
  • Die Weboberfläche: Eine leichtgewichtige Webanwendung (wir werden WireGuard-UI verwenden), die auf Ihrem Server läuft und Ihnen ein Dashboard bietet, um alles zu verwalten.

Wenn ein Client eine Verbindung herstellen möchte, richtet er einen direkten verschlüsselten Tunnel zum Server ein, und dann leitet der Server den Internetverkehr des Clients weiter oder erlaubt einfach den Zugriff auf Ressourcen im lokalen Netzwerk des Servers, je nachdem, wie Sie es konfigurieren.

Schritt 1: Installation von WireGuard auf dem Ubuntu-Server

Zuerst stellen wir sicher, dass Ihr System auf dem neuesten Stand ist und die notwendigen Werkzeuge installiert sind, indem Sie den folgenden Befehl verwenden, der Ihre Paketlisten aktualisiert und veraltete Software aktualisiert.

sudo apt update && sudo apt upgrade -y

Als Nächstes installieren Sie WireGuard selbst:

sudo apt install wireguard -y

Da WireGuard in den Linux-Kernel integriert ist (für Kernels 5.6 und höher), installiert dieser Befehl hauptsächlich die Userspace-Tools, die zum Konfigurieren und Verwalten von WireGuard-Schnittstellen benötigt werden.

Schritt 2: IP-Weiterleitung unter Ubuntu aktivieren

Standardmäßig leitet Ubuntu keine Pakete zwischen Netzwerkschnittstellen weiter, was eine Sicherheitsfunktion ist, da Ihr Server nicht als Router fungiert, es sei denn, Sie sagen ihm ausdrücklich, dass er dies tun soll. Für einen VPN-Server benötigen wir jedoch diese Funktionalität.

Wenn Ihr Telefon sich mit dem VPN verbindet und versucht, eine Website zu besuchen, muss der Server diese Anfrage vom WireGuard-Interface an sein öffentliches Netzwerkinterface weiterleiten und dann die Antwort zurückleiten.

Um die IP-Weiterleitung dauerhaft zu aktivieren, müssen wir eine Systemkonfigurationsdatei bearbeiten:

sudo nano /etc/sysctl.conf

Suchen Sie nach dieser Zeile (sie könnte am Anfang mit einem # auskommentiert sein):

#net.ipv4.ip_forward=1

Entfernen Sie das #, um es zu entkommentieren, oder fügen Sie die Zeile hinzu, wenn sie nicht existiert:

net.ipv4.ip_forward=1

Speichern Sie die Datei und wenden Sie dann die Änderung an, ohne neu zu starten:

sudo sysctl -p

Schritt 3: Firewall und Routing für WireGuard konfigurieren

Ihr VPN-Server muss eingehende Verbindungen auf dem Port akzeptieren, den WireGuard verwendet (standardmäßig UDP-Port 51820). Außerdem muss er den Datenverkehr zwischen der VPN-Schnittstelle und Ihrer öffentlichen Netzwerkschnittstelle korrekt weiterleiten.

Zuerst lassen Sie uns Ihre öffentliche Netzwerkschnittstelle identifizieren:

ip route | grep default

Sie werden eine Ausgabe wie folgt sehen:

default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100

Der Schnittstellenname hier ist `eth0`, kann jedoch auf Ihrem System anders sein, es könnte `ens3`, `enp0s3` oder etwas Ähnliches sein.

Lassen Sie uns nun die ufw-Firewall (Ubuntus Standard-Firewall) konfigurieren:

# Allow SSH (if you haven't already)
sudo ufw allow 22/tcp

Allow WireGuard
sudo ufw allow 51820/udp

Allow the web interface (we'll use port 5000)
sudo ufw allow 5000/tcp

Als Nächstes müssen wir eine NAT-Regel (Network Address Translation) hinzufügen, die Ihrem Server sagt, den VPN-Verkehr zu maskieren, als ob er selbst vom Server kommt, wenn er ins Internet weitergeleitet wird.

sudo nano /etc/ufw/before.rules

Fügen Sie diese Zeilen oben in die Datei ein, direkt nach den Header-Kommentaren, aber vor der Zeile *filter und ersetzen Sie eth0 durch den tatsächlichen Namen Ihres Interfaces:

# NAT table rules for WireGuard
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
COMMIT

Das bedeutet Folgendes:

  • *nat: Wir arbeiten mit der NAT-Tabelle.
  • -s 10.0.0.0/24: Für Pakete, die aus unserem VPN-Netzwerk kommen (10.0.0.0/24 ist das Subnetz, das wir den VPN-Clients zuweisen werden).
  • -o eth0: Über die Schnittstelle eth0 ausgehend.
  • -j MASQUERADE: Schreibe die Quell-IP so um, dass sie die öffentliche IP des Servers ist.

Speichern und beenden, dann UFW aktivieren und neu laden:

sudo ufw enable
sudo ufw reload

Schritt 4: Installation von WireGuard-UI auf dem Ubuntu-Server

Jetzt kommt der interessante Teil, die Einrichtung der Weboberfläche mit WireGuard-UI, einer sauberen und einfachen Webanwendung, die in Go geschrieben wurde.

Erstellen Sie zunächst ein Verzeichnis für WireGuard-UI:

sudo mkdir -p /opt/wireguard-ui
cd /opt/wireguard-ui

Laden Sie als Nächstes die neueste Version von WireGuard-UI von der GitHub-Releases-Seite herunter, aber zum Zeitpunkt des Schreibens holt der wget-Befehl eine aktuelle stabile Version:

sudo wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.6.2/wireguard-ui-v0.6.2-linux-amd64.tar.gz

Einmal heruntergeladen, entpacken Sie es und machen Sie es ausführbar:

sudo tar -xzf wireguard-ui-v0.6.2-linux-amd64.tar.gz
sudo chmod +x wireguard-ui

Bevor wir die Schnittstelle starten, lassen Sie uns einen systemd-Dienst erstellen, damit er beim Hochfahren automatisch ausgeführt wird.

sudo nano /etc/systemd/system/wireguard-ui.service

Fügen Sie diese Konfiguration ein:

[Unit]
Description=WireGuard UI
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/wireguard-ui
ExecStart=/opt/wireguard-ui/wireguard-ui
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Speichern und beenden, dann den Dienst aktivieren und starten:

sudo systemctl daemon-reload
sudo systemctl enable wireguard-ui
sudo systemctl start wireguard-ui

Überprüfen Sie, ob es läuft:

sudo systemctl status wireguard-ui

Schritt 5: Zugriff auf die Wireguard-Benutzeroberfläche

Öffnen Sie Ihren Webbrowser und navigieren Sie zu der folgenden URL. Stellen Sie sicher, dass Sie YOUR_SERVER_IP durch die tatsächliche öffentliche IP-Adresse Ihres Servers ersetzen.

http://YOUR_SERVER_IP:5000

Sie werden eine Anmeldeseite sehen, auf der Sie die folgenden Standardanmeldedaten verwenden können:

Username: admin
Password: admin

Wichtig: Ändern Sie diese sofort nach dem Einloggen. Klicken Sie auf Ihren Benutzernamen oben rechts, dann auf “Einstellungen” und aktualisieren Sie Ihr Passwort.

Schritt 6: Konfigurieren Ihres WireGuard-Servers

Sobald Sie eingeloggt sind, werden Sie zum WireGuard-UI-Dashboard weitergeleitet. Um mit der Konfiguration Ihres Servers zu beginnen, klicken Sie in der linken Seitenleiste auf „WireGuard Server“ und setzen Sie den Schnittstellennamen auf 10.0.0.1/24 (die Standard-WireGuard-Schnittstelle) und den Listening-Port auf 51820.

Geben Sie im Feld Post Up Script ein:

iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

und in das Post-Down-Script-Feld eingeben:

iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Stellen Sie sicher, dass Sie eth0 durch den tatsächlichen Namen Ihrer Netzwerk-Schnittstelle ersetzen, falls dieser abweicht, und setzen Sie die Adresse auf 10.0.0.1/24, die die interne VPN-IP-Adresse des Servers sein wird.

Wenn Sie auf Konfiguration anwenden klicken, wird WireGuard die wg0-Schnittstelle erstellen, auf VPN-Verbindungen auf Port 51820 lauschen, Ihrem Server seine VPN-IP zuweisen und Firewall-Regeln konfigurieren, um den VPN-Verkehr korrekt weiterzuleiten.

Die Benutzeroberfläche wird auch automatisch die privaten und öffentlichen Schlüssel Ihres Servers generieren. Nach dem Anwenden der Einstellungen sollte die Schnittstelle als Aktiv angezeigt werden, was darauf hinweist, dass Ihr WireGuard-Server betriebsbereit ist.

Schritt 7: Fügen Sie Ihren ersten WireGuard-Client hinzu

Fügen wir nun ein Gerät zu Ihrem VPN hinzu, das Ihr Laptop, Telefon oder ein anderes Clientgerät sein könnte. Klicken Sie in der linken Seitenleiste auf „Clients“ und dann auf „Neuen Client hinzufügen“.

Geben Sie dem Client einen beschreibenden Namen wie „Mein Laptop“ oder „iPhone“ und optional eine E-Mail-Adresse ein, um das Gerät später leichter identifizieren zu können. Klicken Sie auf „Automatisch“, um die nächste verfügbare IP-Adresse automatisch zuzuweisen (wahrscheinlich 10.0.0.2).

Für erlaubte IPs geben Sie 0.0.0.0/0, ::/0 ein, was sicherstellt, dass der gesamte Traffic des Clients über das VPN geleitet wird; wenn Sie nur Zugriff auf das interne Netzwerk des Servers haben möchten, könnten Sie stattdessen dieses Subnetz angeben (zum Beispiel 10.0.0.0/24).

Sobald alles eingerichtet ist, klicken Sie auf „Absenden“ und die Weboberfläche erstellt automatisch eine vollständige WireGuard-Konfiguration für diesen Client, einschließlich seines eigenen kryptografischen Schlüsselpaares.

Schritt 8: Verbindung Ihres Client-Geräts

Jetzt müssen Sie die Konfiguration auf Ihr Gerät bringen, und WireGuard-UI macht dies einfach mit QR-Codes für mobile Geräte und herunterladbaren Konfigurationsdateien für Computer.

Für mobile Geräte (Telefon/Tablet):

  • Installieren Sie die WireGuard-App aus Ihrem App Store (sie ist sowohl für iOS als auch für Android verfügbar).
  • Finden Sie in der WireGuard-UI-Weboberfläche Ihren neu erstellten Client und klicken Sie auf das QR-Code-Symbol.
  • Öffnen Sie die WireGuard-App auf Ihrem Telefon, tippen Sie auf die "+"-Taste und wählen Sie “Von QR-Code erstellen“.
  • Scannen Sie den QR-Code, der in Ihrem Browser angezeigt wird.
  • Geben Sie Ihrer Verbindung einen Namen und tippen Sie auf „Tunnel erstellen“.

Das war's! Schalte den Schalter um, um dich zu verbinden, und dein mobiles Gerät leitet nun den gesamten Datenverkehr über deinen VPN-Server.

Für Desktop/Laptop:

  • Installiere WireGuard von wireguard.com/install.
  • Klicken Sie in der WireGuard-UI-Schnittstelle auf das Download-Symbol neben Ihrem Client, um die .conf-Datei herunterzuladen.
  • Öffnen Sie die WireGuard-Anwendung auf Ihrem Computer, klicken Sie auf “Tunnel aus Datei importieren“ und wählen Sie die heruntergeladene Konfigurationsdatei aus.
  • Klicken Sie auf “Aktivieren”, um eine Verbindung herzustellen.

Schritt 9: Testen Ihres VPN

Lassen Sie uns sicherstellen, dass alles ordnungsgemäß funktioniert. Besuchen Sie zuerst, während Ihr VPN getrennt ist, whatismyipaddress.com und notieren Sie die angezeigte IP-Adresse.

Verbinden Sie sich dann mit Ihrem WireGuard VPN und aktualisieren Sie die Seite. Ihre IP-Adresse sollte nun die öffentliche IP Ihres Servers anzeigen, anstatt Ihrer ursprünglichen, was bestätigt, dass der Datenverkehr über das VPN geleitet wird.

Um weiter zu überprüfen, dass DNS korrekt funktioniert, können Sie den folgenden Befehl auf Ihrem verbundenen Gerät ausführen:

ping google.com

Wenn Sie Antworten sehen, leitet Ihr VPN den Datenverkehr korrekt weiter.

Um aktive Verbindungen auf Ihrem Server zu sehen, melden Sie sich per SSH an und führen Sie aus:

sudo wg show

Sie werden eine Ausgabe wie folgt sehen:

interface: wg0
  public key: [your server's public key]
  private key: (hidden)
  listening port: 51820

peer: [client's public key]
  endpoint: [client's IP]:random_port
  allowed ips: 10.0.0.2/32
  latest handshake: 45 seconds ago
  transfer: 2.50 MiB received, 15.23 MiB sent

Dies zeigt, dass Ihr Client verbunden ist, wann er zuletzt mit dem Server kommuniziert hat und wie viele Daten übertragen wurden.

Schritt 10: Verwenden Sie HTTPS für WireGuard-UI

Im Moment, wenn Sie auf Ihre WireGuard-Weboberfläche unter http://YOUR_SERVER_IP:5000 zugreifen, werden Ihre Anmeldeinformationen und alle Konfigurationsdaten unverschlüsselt über das Internet übertragen, und jeder, der den Datenverkehr zwischen Ihrem Browser und dem Server abfängt, könnte Ihr Administratorkennwort sehen und möglicherweise Ihre Sitzung übernehmen.

Die Lösung besteht darin, Ihre Weboberfläche hinter einem Reverse-Proxy mit aktiviertem HTTPS zu platzieren. Ein Reverse-Proxy steht vor Ihrer Anwendung, verarbeitet alle verschlüsselten HTTPS-Verbindungen von den Clients und leitet dann die Anfragen über das lokale Netzwerk, wo ein Abfangen kein Problem darstellt, an Ihre Anwendung weiter.

Wir werden Nginx (leistungsstarker Webserver) als unseren Reverse-Proxy verwenden und Let’s Encrypt, um ein kostenloses SSL-Zertifikat zu erhalten, damit Sie auf Ihre WireGuard-Oberfläche unter https://vpn.yourdomain.com zugreifen können, anstelle einer IP-Adresse über HTTP.

Installiere Nginx-Webserver

Zuerst müssen Sie einen DNS-Eintrag für Ihre Domain (https://vpn.yourdomain.com) erstellen, der auf die IP-Adresse Ihres Servers zeigt, und dann den Nginx-Webserver installieren.

sudo apt update
sudo apt install nginx -y

Nach der Installation können Sie http://vpn.ihredomain.com in Ihrem Browser besuchen und Sie werden die Standard-Nginx-Begrüßungsseite sehen, was bedeutet, dass Nginx funktioniert und aus dem Internet zugänglich ist.

Certbot für Let's Encrypt installieren

Installieren Sie als Nächstes Let’s Encrypt, eine kostenlose Zertifizierungsstelle, die SSL-Zertifikate bereitstellt, und certbot ist ein Werkzeug, das den Prozess des Erhaltens und Erneuerens dieser Zertifikate automatisiert.

sudo apt install certbot python3-certbot-nginx -y

Das python3-certbot-nginx-Paket enthält ein Plugin, das Nginx automatisch für Sie konfigurieren kann, wodurch der Prozess viel einfacher wird.

Nginx als Reverse-Proxy konfigurieren

Erstellen wir nun eine Nginx-Konfiguration, die Anfragen von https://vpn.yourdomain.com an Ihre WireGuard-UI-Anwendung weiterleitet, die auf localhost:5000 läuft.

Erstellen Sie eine neue Konfigurationsdatei.

sudo nano /etc/nginx/sites-available/wireguard-ui

Fügen Sie diese Konfiguration ein (ersetzen Sie vpn.yourdomain.com durch Ihre tatsächliche Domain):

server {
    listen 80;
    listen [::]:80;
    server_name vpn.yourdomain.com;

    # This will be used by Certbot for the SSL certificate challenge
    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    # Redirect all other HTTP traffic to HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name vpn.yourdomain.com;

    # SSL certificate paths (Certbot will fill these in)
    ssl_certificate /etc/letsencrypt/live/vpn.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/vpn.yourdomain.com/privkey.pem;

    # Modern SSL configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Security headers
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;

    # Proxy settings
    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        
        # WebSocket support (if WireGuard-UI uses it)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # Forward real client information
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # Timeouts
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

Aktivieren Sie diese Konfiguration nun, indem Sie einen symbolischen Link erstellen:

sudo ln -s /etc/nginx/sites-available/wireguard-ui /etc/nginx/sites-enabled/

Testen Sie Ihre Nginx-Konfiguration auf Syntaxfehler:

sudo nginx -t

Du solltest sehen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn Sie Fehler sehen, gehen Sie zurück und überprüfen Sie Ihre Konfigurationsdatei auf Tippfehler.

Ein SSL-Zertifikat erhalten

Sobald alles korrekt konfiguriert ist, ist es nun an der Zeit, den certbot-Befehl auszuführen, der automatisch ein SSL-Zertifikat von Let’s Encrypt erhält und Nginx so konfiguriert, dass es verwendet wird.

sudo certbot --nginx -d vpn.yourdomain.com

Der gesamte Prozess dauert etwa 30 Sekunden, und wenn er abgeschlossen ist, sehen Sie eine Erfolgsmeldung:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/vpn.yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/vpn.yourdomain.com/privkey.pem

Jetzt Nginx neu laden, um alles anzuwenden:

sudo systemctl reload nginx

Zertifikats-Autoerneuerung

Let’s Encrypt-Zertifikate sind nur 90 Tage gültig, was absichtlich so vorgesehen ist, um eine regelmäßige Erneuerung zu fördern und den potenziellen Schaden zu begrenzen, falls ein privater Schlüssel jemals kompromittiert wird.

Glücklicherweise richtet Certbot beim Installieren automatisch einen Erneuerungs-Timer ein, und Sie können bestätigen, dass der Erneuerungsdienst aktiv ist, indem Sie Folgendes ausführen:

sudo systemctl status certbot.timer

und Sie sollten es als aktiv (laufend) aufgeführt sehen, dieser Timer prüft zweimal täglich und erneuert automatisch jedes Zertifikat, das innerhalb von 30 Tagen abläuft.

Um zu überprüfen, dass alles funktioniert, ohne eine tatsächliche Erneuerung durchzuführen, führen Sie Folgendes aus:
sudo certbot renew –dry-run

Wenn der Test erfolgreich abgeschlossen wird, ist Ihre automatische Zertifikatserneuerung vollständig konfiguriert, und Sie müssen sich keine Sorgen darüber machen, dass Ihre Zertifikate ablaufen.

Aktualisiere deine Firewall

Da wir jetzt über Nginx auf dem Standard-HTTPS-Port (443) auf WireGuard-UI zugreifen, müssen wir dies in unserer Firewall zulassen und können optional den direkten Zugriff auf Port 5000 blockieren.

sudo ufw allow 443/tcp

Optional, wenn Sie den direkten Zugriff auf WireGuard-UI auf Port 5000 verhindern möchten (um alle zu zwingen, die HTTPS-Oberfläche zu verwenden), können Sie diese Regel entfernen:

sudo ufw delete allow 5000/tcp

Die Firewall neu laden:

sudo ufw reload

Schritt 11: Konfigurieren Sie WireGuard-UI so, dass es nur auf localhost hört

Da Nginx nun alle externen Verbindungen verarbeitet, sollten wir WireGuard-UI so konfigurieren, dass es nur Verbindungen von der lokalen Maschine akzeptiert, was verhindert, dass jemand direkt auf Port 5000 darauf zugreift, selbst wenn er entdeckt, dass der Port offen ist.

Stoppen Sie den WireGuard-UI-Dienst:

sudo systemctl stop wireguard-ui

Bearbeiten Sie die Service-Datei:

sudo nano /etc/systemd/system/wireguard-ui.service

Ändern Sie die ExecStart-Zeile, um nur an localhost zu binden:

[Unit]
Description=WireGuard UI
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/wireguard-ui
Environment="BIND_ADDRESS=127.0.0.1:5000"
ExecStart=/opt/wireguard-ui/wireguard-ui
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Speichern und beenden, dann systemd neu laden und den Dienst neu starten:

sudo systemctl daemon-reload
sudo systemctl start wireguard-ui
sudo systemctl status wireguard-ui

Öffnen Sie schließlich Ihren Browser und gehen Sie zu:

https://vpn.yourdomain.com

Sie sollten ein Schloss-Symbol in der Adressleiste Ihres Browsers sehen, Sie können auf das Schloss-Symbol klicken, um die Zertifikatsdetails anzusehen. Sie werden sehen, dass es von Let's Encrypt ausgestellt wurde und 90 Tage gültig ist.

Zusammenfassung

Bis jetzt haben Sie erfolgreich einen voll funktionsfähigen WireGuard VPN-Server mit einer sicheren webbasierten Verwaltungsoberfläche bereitgestellt. Anstatt Schlüssel, Konfigurationsdateien und Routingregeln manuell zu verwalten, bietet Ihnen WireGuard-UI ein einfaches Dashboard, um neue Geräte hinzuzufügen, QR-Codes zu erstellen und aktive Verbindungen zu überwachen.