Raspberry Pi mit WireGuard und Webinterface

02.08.2020 - angepasstes install_script, damit funktioniert es wieder
31.07.2020 - WireGuard Snapshot lässt sich nicht mehr kompilieren

wg-dashboard ist ein schickes Webinterface, um die Einrichtung von WireGuard und Verwaltung der Clients zu vereinfachen.
Anstatt das Terminal verwenden zu müssen, kann hier (fast) alles über das UI erledigt werden.

Ohne großen Aufwand erhält man einen WireGuard VPN Server mit grafischer Oberfläche.
Installiert wird auf einem Raspberry Pi 3 mit frisch aufgesetztem Raspberry Pi OS Lite.

wg-dashboard installieren (funktioniert nicht mehr)

Auf dem Pi einfach das install script ausführen. (Schaut man sich vorher mal das install_script.sh an, sieht man was installiert wird.)

pi@wireguard:~ $ curl https://raw.githubusercontent.com/wg-dashboard/wg-dashboard/master/install_script.sh | sudo bash

Nach ein paar Minuten ist alles erledigt.

====================================================================================

> Done! WireGuard and wg-dashboard have been successfully installed
> You can now connect to the dashboard via ssh tunnel by visiting:

                http://localhost:3000

> You can open an ssh tunnel from your local machine with this command:

                ssh -L 3000:localhost:3000 <your_vps_user>@<your_vps_ip>

> Please save this command for later, as you will need it to access the dashboard

====================================================================================

Das Webinterface ist nach der Installation nur durch einen SSH Tunnel erreichbar.

ssh -L 3000:localhost:3000 pi@raspi-ip     # auf dem Client den Tunnel öffnen
http://localhost:3000                      # auf dem Client das Webinterface aufrufen

Um auch einen direkten Zugriff zu erhalten muss die Firewall angepasst werden.

pi@wireguard:~ $ sudo ufw allow 3000
Rule added
Rule added (v6)

wg-dashboard installieren (angepasstes script)

Änderungen:

  • WireGuard wird jetzt direkt aus den Sourcen kompiliert.
  • Debian und Ubuntu OS Unterstützung entfernt, nur noch Raspbian.
  • Port 3000 für den direkten Zugriff aktiviert.

Erfolgreich mit dem Raspberry Pi OS Lite (May 2020) Image getestet! (Kernel 5.4.51-v7+ #1327)

Bevor das script ausgeführt wird den Pi updaten und neu starten!

pi@wireguard:~ $ sudo apt-get update
pi@wireguard:~ $ sudo apt-get upgrade -y
pi@wireguard:~ $ sudo reboot

pi@wireguard:~ $ wget https://bachmann-lan.de/download/install_script_wg-dashboard-rpi.sh
pi@wireguard:~ $ chmod +x install_script_wg-dashboard-rpi.sh
pi@wireguard:~ $ sudo ./install_script_wg-dashboard-rpi.sh

wg-dashboard

Neuen Admin Benutzer mit Passwort anlegen.

Server Settings

Peer Settings

Verzeichnisse und config Dateien.

/etc/wireguard/wg0.conf                  # WireGuard Konfiguration
/opt/wg-dashboard                        # wg-dashboard Verzeichnis
/opt/wg-dashboard/server_config.json     # wg-dashboard Server Settings und Peers
/opt/WireGuard                           # WireGuard Kernel

Tolles Projekt!

Vielleicht noch nicht ganz perfekt, könnte man sich aber ggf. selber noch etwas anpassen und erweitern.
Ich hab’s mir bisher aber nur mal zum ausprobieren installiert, hatte das System noch nicht produktiv im Einsatz.

9 Gedanken zu „Raspberry Pi mit WireGuard und Webinterface“

  1. Vielen vielen Dank Michael für diese Anleitung.
    Ich habe lange nach einer grafischen Oberfläche für WireGuard auf dem Raspi gesucht. Leider funktioniert dies trotz genauem Befolgen der Anleitung bei mit nicht. Und da ich klein in Linux ein Laie bin, kann ich den Fehler auch nicht entdecken. Ich habe auf dem Raspi 3 ganz frisch die aktuelle „Raspberry Pi OS (32-bit) with desktop and recommended software“ installiert und alle Updates einspielen lassen. Zum Schluss nur noch xrdp installiert. Danach habe ich sofort per RDP Deinen Befehl:
    pi@wireguard:~ $ curl https://raw.githubusercontent.com/wg-dashboard/wg-dashboard/master/install_script.sh | sudo bash
    im Terminal abgesetzt.

    Der Rasp werkelt dann auch ganz schön rum um dann leider mit folgender Meldung zu enden:
    In file included from /opt/WireGuard/src/main.c:9:
    /opt/WireGuard/src/queueing.h: In function ‘wg_reset_packet’:
    /opt/WireGuard/src/queueing.h:100:2: error: implicit declaration of function ‘skb_reset_tc’; did you mean ‘skb_reserve’? [-Werror=implicit-function-declaration]
    skb_reset_tc(skb);
    ^~~~~~~~~~~~
    skb_reserve
    cc1: some warnings being treated as errors
    make[2]: *** [scripts/Makefile.build:266: /opt/WireGuard/src/main.o] Fehler 1
    make[1]: *** [Makefile:1709: /opt/WireGuard/src] Fehler 2
    make: *** [Makefile:37: module] Fehler 2

    Was habe ich falsch gemacht? Wie kann das gelöst werden? Kannst Du mir helfen?

    Ich bin Laie im Linux-Bereich.

    Lieben Dank
    Frank L.

    Antworten
    • Hallo Frank.

      Habs gerade mal ausprobiert und erhalte den gleichen Fehler! :(
      Raspberry Pi OS (2020-05-27)
      Linux raspberrypi 5.4.51-v7+ #1327

      Du hast also nix falsch gemacht!
      Ich kann dir momentan aber nicht sagen was sich da geändert hat.

      Antworten
      • Vielen Dank für die Antwort. Da bin ich erleichtert dass es nicht an mir lag obwohl ich nicht wirklich durchblicke. Habe ich es recht verstanden dass Wireguard voher nicht installiert werden muss, sondern es mit dem installieren des Dashboards mit installiert wird?

        Zwischenzeitlich habe ich auf einem erneut frisch aufgesetztem RaspiOS Wireguard manuell installiert
        (https://www.bachmann-lan.de/raspberry-pi-mit-wireguard-als-vpn-server-mit-wireguard/).

        Danach habe ich versucht wg-dashboard zu installieren, leider ohne erfolg.
        Das Script endete nach einigen Minuten mit der Meldung:
        raspberrypi-kernel-headers ist schon die neueste Version (1.20200723-1).
        libelf-dev ist schon die neueste Version (0.180-1).
        libmnl-dev ist schon die neueste Version (1.0.4-3).
        ufw ist schon die neueste Version (0.36-6).
        Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
        Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
        Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
        nicht erstellt wurden oder Incoming noch nicht verlassen haben.
        Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

        Die folgenden Pakete haben unerfüllte Abhängigkeiten:
        libc6-dev : Beschädigt: libgcc-8-dev (< 8.4.0-2~) aber 8.3.0-6+rpi1 soll installiert werden
        E: Fehler: Unterbrechungen durch pkgProblemResolver::Resolve hervorgerufen; dies könnte durch zurückgehaltene Pakete verursacht worden sein.

        OK, und da steige ich aus. Soviel Wissen habe ich dann nicht.
        Also ein Raspi von WG und einer halbwegs brauchbare grafische Oberfläche wäre für mich genau das Richtige.
        Nur hier bin ich fündig geworden.

        Antworten
        • Für das wg-dashboard install script darf vorher nichts installiert sein, wird alles automatisch erledigt.
          Das wg-dashboard kann auch nicht ohne weiteres über ein bestehends WireGuard System installiert werden.

          Lässt sich natürlich auch beides kombinieren, muss dann aber manuell konfiguriert und installiert werden.
          Lassen sich die WireGuard Module nicht kompilieren, liegt es immer an der installierten Kernel Version und den WireGuard Snapshots.

          Hab eine Lösung gefunden, Anleitung wurde erweitert.

          Antworten
  2. Vielen Dank dafür dass du dich da reingekniet hast. Ich habe jetzt ebenfalls das aktuelle Lite Image genutzt, das Script in / kopiert,
    laufen lassen und nach ein paar Minuten ist es mit einem Fehler abgebrochen.
    Hier die letzten Zeilen der Ausgabe:

    pi@raspberrypi:/ $ sudo bash install_script_wg-dashboard-rpi.sh
    …..
    Klone nach ‚wireguard-tools‘ …
    remote: Enumerating objects: 401, done.
    remote: Counting objects: 100% (401/401), done.
    remote: Compressing objects: 100% (381/381), done.
    remote: Total 2757 (delta 204), reused 9 (delta 9), pack-reused 2356
    Empfange Objekte: 100% (2757/2757), 600.48 KiB | 1021.00 KiB/s, Fertig.
    Löse Unterschiede auf: 100% (1827/1827), Fertig.
    make: Verzeichnis „/opt/wireguard-linux-compat/src“ wird betreten
    make[1]: Verzeichnis „/opt/wireguard-linux-compat/src“ wird betreten
    make[1]: *** /lib/modules/4.19.118-v7+/build: Datei oder Verzeichnis nicht gefunden. Schluss.
    make[1]: Verzeichnis „/opt/wireguard-linux-compat/src“ wird verlassen
    make: *** [Makefile:26: module] Fehler 2
    make: Verzeichnis „/opt/wireguard-linux-compat/src“ wird verlassen
    pi@raspberrypi:/ $

    Antworten
    • Da fehlte der reboot nach den updates.
      Lösch die beiden WireGuard Verzeichnisse unter /opt und führ das script nochmal aus.

      Antworten
      • Vielen Dank, das war es. Es funktioniert. das VPN steht :-)
        Alleine hätte ich dies nicht hinbekommen. Das ist mir alles zu hoch als Mausschubser.

        Antworten
  3. Wirklich gute Arbeit. Funktioniert perfekt.

    Zwei Anregungen zur Ergänzung des Artikels hätte ich noch:
    1. Hinweis zur Änderung der peer-config, falls der wireguard-server über dyndsn erreichbar sein soll:
    Endpoint manuell auf „Endpoint = IP-desdynDNS:58210“ umschreiben.

    2. den Befehl zum automatischen starten/laden des servers auf dem raspi angeben:
    sudo systemctl enable wg-quick@wg0

    Antworten

Schreibe einen Kommentar