Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.
Übersicht aller Artikel dieser Serie
- Teil 1 – Die Hardware
- Teil 2 – Installation von Proxmox
- Teil 3 – Openmediavault
- Teil 4 – Ubuntu Server
- Teil 5 – Docker und Portainer
- Teil 6 – Homarr
- Teil 7 – Unifi Controller
- Teil 8 – Pihole
- Teil 9 – Jellyfin
- Teil 10 – InfluxDB und Grafana
- Teil 11 – Homeassistant
- Teil 12 – Mosquitto
- Teil 13 – WireGuard mit wg-easy
- Teil 14 – Immich
- Teil 15 – Stromverbrauch
Was ist WireGuard?
WireGuard ist eine Software, um eine VPN-Verbindung aufzubauen. Sie ist im Vergleich zu anderen, wie zum Beispiel OpenVPN schneller und einfacher.
Installation von WireGuard
WireGuard selbst ist bereits in den Linux-Kernel integriert. Eine schöne Möglichkeit, Verbindungen einfach zu verwalten, aber nicht. Hier hilft uns das Tool „wg-easy„. Damit lassen sich WireGuard-Verbindungen wirklich sehr einfach verwalten. Wg-easy wird im Docker-Container installiert. Dazu erstelle ich einen neuen Container in Portainer, gebe ihm den Namen „Wireguard“ und wähle das Image „ghcr.io/wg-easy/wg-easy:latest“ im Advanced Mode. Außerdem gebe ich den Port 51820 über UDP und den Port 51821 über TCP frei. Letzteres wird später der Port für das Webinterface sein.

Anschließend erstelle ich ein Volume für die Konfigurationsdateien:

Da WireGuard einige zusätzliche Berechtigungen braucht, ist die Konfiguration dieses Containers etwas komplizierter als die der Container, die wir bisher in dieser Artikelserie hatten. Unter „Capabilities“ muss man die Optionen „NET_ADMIN“ und „SYS_MODULE“ aktivieren.

Zudem müssen im Menü „Runtime & Ressources“ die Sysctls net.ipv4.conf.all.src_valid_mark
und net.ipv4.ip_forward
jeweils mit dem Wert „1“ hinzugefügt werden.

Im letzten Schritt füge ich noch Umgebungsvariablen hinzu. Eine vollständige Liste der möglichen Variablen findet man im Git-Repository von wg-easy. Ich verwende die Einstellungen PASSWORD
, um das Passwort für das Webinterface festzulegen, WG_HOST
, um den Hostname des VPN-Servers festzulegen (Der Hostname, unter dem der Server von außerhalb des Heimnetzwerks erreichbar ist), WG_PORT
, um den Port von außerhalb festzulegen (Wer aufmerksam war, hat erkannt, dass das nicht der Port ist, unter dem der VPN-Server innerhalb meines Heimnetzwerks erreichbar ist.) und WG_DEFAULT_DNS
. Das ist der DNS-Server, den die VPN-Clients standardmäßig verwenden. In meinem Fall ist das die IP meines Servers innerhalb des Docker-Netzwerkes. Das führt dann dazu, dass alle VPN-Clients automatisch mein Pihole verwenden.

Nachdem der Container erstellt ist, erreicht man das Webinterface unter dem vorher angegebenen Port.
Erstellen einer VPN-Verbindung
Im Webinterface muss man anschließend sein vorher festgelegtes Passwort eingeben.

Dann kann man mit „New“ eine Konfiguration für einen neuen VPN-Client anlegen. Dabei muss man nur den Namen eingeben und schon erscheint der Client in der Liste.

Es gibt nun zwei Möglichkeiten, die Konfiguration auf den Client zu laden. Entweder man klickt auf den QR-Code, den man dann mit der WireGuard-App scannen kann, oder man lädt die Konfigurationsdatei herunter.
Schreibe einen Kommentar