WireGuard mit WebInterface auf Debian Server installieren
Einleitung
Wenn wir unseren eigenen WireGuard Server betreiben mömöchten, wollen wir diesen vielleicht ja auch üüber eine WeboberfläWeboberfläche administrieren. Als OberfläOberfläche bedienen wir uns dann an wireguard-ui Link.
Mithilfe von WireGuard kökönnen wir dann ganz einfach eine VPN-Verbindung in unser Netzwerk herstellen und so einerseits auf unser Heimnetzwerk zugreifen, als auch verschlüverschlüsselten Datenverkehr nutzen.
Vorbereitungen durchfüdurchführen und WireGuard installieren
Im ersten Schritt installieren wir alle benöbenötigen Pakete auf unserem Debian Server, damit wir WireGuard betreiben kökönnen.
apt update && apt install -y wireguard curl iptables tar
cd /etc/wireguard
Wir mümüssen auch sicherstellen das unsere Firewall Port 51820/udp durchlädurchlässt. Und das wir ggf. unseren WireGuard Server als Exposed Host oder durch Port NAT unseren Server von außaußen erreichbar machen. Wie genau das funktioniert, bitte dem Handbuch des Herstellers der Firewall entnehmen.
Jetzt mü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ümüssen wir folgenden Code ausfüausführen, damit wir das Startskript fü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ä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ökönnen jetzt das Web Interface von WireGuard UI unter der Public IP und Port 5000 ööffnen. Die Installation ist damit abgeschlossen!