Skip to main content

WireGuard mit WebInterface auf Debian Server installieren

Einleitung

Wenn wir unseren eigenen WireGuard Server betreiben möchten, wollen wir diesen vielleicht ja auch über eine Weboberfläche administrieren. Als Oberfläche bedienen wir uns dann an wireguard-ui Link

Mithilfe von WireGuard können wir dann ganz einfach eine VPN-Verbindung in unser Netzwerk herstellen und so einerseits auf unser Heimnetzwerk zugreifen, als auch verschlüsselten Datenverkehr nutzen.

Vorbereitungen durchführen und WireGuard installieren

Im ersten Schritt installieren wir alle benötigen Pakete auf unserem Debian Server, damit wir WireGuard betreiben können.

apt update && apt install -y wireguard curl iptables tar
cd /etc/wireguard

Wir müssen auch sicherstellen das unsere Firewall Port 51820/udp durchlässt. Und das wir ggf. unseren WireGuard Server als Exposed Host oder durch Port NAT unseren Server von außen erreichbar machen. Wie genau das funktioniert, bitte dem Handbuch des Herstellers der Firewall entnehmen.

Jetzt müssen wir das IP-Forwarding aktivieren. Dies hat den Hintergrund, dass der gesamte Verkehr auf dem WireGuard Interface weitergeleitet wird.

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p

WireGuard UI installieren

 Jetzt müssen wir folgenden Code ausführen, damit wir das Startskript für WireGuard UI erstellt wird. Damit wird der Webserver gestartet, und die Datenbank unter /etc/wireguard/db/ abgelegt. 

cat <<EOF > /etc/wireguard/start-wgui.sh
#!/bin/bash
 
cd /etc/wireguard
./wireguard-ui -bind-address 0.0.0.0:5000
EOF
chmod +x start-wgui.sh

Mit dem folgenden Skript wird WireGuard UI installiert und die entsprechenden Dienste angelegt. Im Anschluss wird der Download von WireGuard UI gestartet und der Web Server wird gestartet. 

cat <<EOF > /etc/systemd/system/wgui-web.service
[Unit]
Description=WireGuard UI
 
[Service]
Type=simple
ExecStart=/etc/wireguard/start-wgui.sh
 
[Install]
WantedBy=multi-user.target
EOF

cat <<EOF > /etc/wireguard/update.sh
#!/bin/bash
 
VER=\$(curl -sI https://github.com/ngoduykhanh/wireguard-ui/releases/latest | grep "location:" | cut -d "/" -f8 | tr -d '\r')
 
echo "downloading wireguard-ui \$VER"
curl -sL "https://github.com/ngoduykhanh/wireguard-ui/releases/download/\$VER/wireguard-ui-\$VER-linux-amd64.tar.gz" -o wireguard-ui-\$VER-linux-amd64.tar.gz
 
echo -n "extracting "; tar xvf wireguard-ui-\$VER-linux-amd64.tar.gz
 
echo "restarting wgui-web.service"
systemctl restart wgui-web.service
EOF

chmod +x /etc/wireguard/update.sh
cd /etc/wireguard; ./update.sh

Änderungen der Konfiguration verarbeiten

Mit dem folgenden Skript wird die WireGuard Schnittstelle wg0 beobachtet. Bei Veränderungen an der Konfigurationsdatei wird dann WireGuard neu gestartet.

cat <<EOF > /etc/systemd/system/wgui.service
[Unit]
Description=Restart WireGuard
After=network.target
 
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart wg-quick@wg0.service
 
[Install]
RequiredBy=wgui.path
EOF
 
 
 
cat <<EOF > /etc/systemd/system/wgui.path
[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
 
[Path]
PathModified=/etc/wireguard/wg0.conf
 
[Install]
WantedBy=multi-user.target
EOF

WireGuard und WireGuard UI starten

Jetzt starten wir WireGuard und WireGuard UI.

touch /etc/wireguard/wg0.conf
systemctl enable wgui.{path,service} wg-quick@wg0.service wgui-web.service
systemctl start wgui.{path,service}

Wir können jetzt das Web Interface von WireGuard UI unter der Public IP und Port 500öffnen. Die Installation ist damit abgeschlossen!

wireguard_wireguardui_installation.png