Skip to main content

WireGuard mit WebInterface auf Debian Server installieren

Einleitung

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

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

Vorbereitungen durchführendurchführen und WireGuard installieren

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

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

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

Jetzt müssenmü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üssenmüssen wir folgenden Code ausführen,ausführen, damit wir das Startskript fürfü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Änderungen der Konfiguration verarbeiten

Mit dem folgenden Skript wird die WireGuard Schnittstelle wg0 beobachtet. Bei VeränderungenVerä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önnenkönnen jetzt das Web Interface von WireGuard UI unter der Public IP und Port 500öffnen.öffnen. Die Installation ist damit abgeschlossen!

wireguard_wireguardui_installation.png