RPI-Control – eine einfaches Webinterface für die Fernwartung eines Raspberry Pi

Vor einiger Zeit kam ich im Rahmen eines APRS-Projektes mit Manfred, DK1MC ins Gespräch. Manfred ist Relaisbetreiber von DB0HHH und war auf der Suche nach einer einfachen Lösung, um ein paar Wartungs- und Überwachungsaufgaben auf dem Raspberry PI durchzuführen, der für die Relaissteuerung eingesetzt wird. Bisher war das nur über SSH oder über Teamviewer möglich. Zwar hat Manfred bereits eine Terminal-Lösung entwickelt, die auch bereits produktiv im Einsatz ist, aber auch die erforderte einen SSH Zugang und war damit nichts, was man mal eben schnell von unterwegs und ohne viel Fachkenntnis nutzen kann. Die Idee einer webbasierten Steuerung war geboren.

Hier ein Auszug unserer ersten Ideen-Liste:

  • Bedienung über den Browser, auch über Smartphone
  • Frei konfigurierbar durch den Admin
  • Einfache Überwachung von Systemd-Diensten
  • Buttons, die mit beliebigen Aufgaben hinterlegt werden können
  • Login für mehrere User
  • Einfache Konfiguration
  • Einfache Installation, minimale Abhängigkeiten

Ein paar Wochen später war die erste Version fertig und konnte getestet werden.

Die Konfiguration erfolgt über eine json-Datei. Die wesentlichen Blöcke sind “systemd”, wo eine beliebige Anzahl an Systemd-Diensten definiert werden kann, sowie der Bereich “buttons”, wo eine beliebige Anzahl an Buttons eingetragen und der jeweilige Befehl hinterlegt werden kann.

Hier ein Beispiel:

{
    "webserver": {
        "port" : 8080,
        "title": DK3ML-10 APRS RX-Igate",
        "headline": "DK3ML-10"
    },
    "systemd": [
        {"name": "cron", "description": "Cron"},
        {"name": "direwolf", "description": "Direwolf"},
    ],
    "buttons": [
        {"headline": "System-Info", "buttons": [
            {"name": "Date + time", "command": "date"},
            {"name": "Uptime", "command": "uptime"},
            {"name": "df -h", "command": "df -h"},
            {"name": "ifconfig", "command": "ifconfig"}
            ]}
    ],
    ...
}

Angezeigt wird das ganze über eine einfache Weboberfläche. Wird ein Knopf gedrückt, so wird auf dem Raspberry PI der in der config hinterlegte Befehl ausgeführt. Andere Befehle, als in der config hinterlegt sind, können nicht ausgeführt werden. So hat der Admin immernoch die volle Kontrolle, welche Befehle er den anderen Relais-Betreibern zur Verfügung stellen möchte. Außerdem wird die Ausgabe des Befehls in einem Log-Fenster angezeigt.

Dadurch, dass quasi beliebige Befehle hinterlegt werden können, ist das ganze ein sehr flexibles und mächtiges Instrument bei dessen Konfiguration man allerdings wissen muss, was man tut. Einmal konfiguriert, bietet es dann aber auch Relais-Betreibern ohne Linux-Kentnisse die Möglichkeit, einfache Wartungs- und Überwachungstätigkeiten auszuführen.

Selbstverständlich lässt sich die Software nicht nur für Amateurfunk-Relais einsetzen. Durch die flexible Konfiguration sind die Möglichkeiten nahezu unbegrenzt.

Noch ein paar Worte zur Technik:

Entwickelt wurde das Tool in der Programmiersprache “Go” oder auch “Golang” genannt. Programme, die in Go geschrieben sind, lassen sich für viele Zielsysteme und -architekturen kompillieren. Das kompillierte Programm enthält dann alle Abhängigkeiten und Bibliotheken, die für die Programmausführung benötigt werden. Zur Installation muss dann nur das kompillierte Programm auf den Raspberry Pi kopiert werden. Eine Installtion von weiteren Paketen ist nicht nötig. Selbst der Webserver ist integriert, so dass eine aufwändige Installation und Konfiguration von Servern wie Apache oder nginx entfällt.

SSL wird zur Zeit noch nicht unterstützt, steht aber auf der ToDo Liste.

Das Programm ist bereits auf mehreren Repeatern im Einsatz, unter anderem auf DB0HHH.

Auch habe ich bereits die Frage bekommen, ob ich plane, das ganze als Opensource zu veröffentlichen. Das kann ich mir durchaus vorstellen, allerdings müsste ich vorher noch einmal den Code überarbeiten und Aufräumen und im Idealfall auch noch einmal durch einen weiteren Entwickler mit Go-Erfahrung überprüfen lassen. Ob und bis wann ich dazu komme, kann ich im Moment noch nicht sagen.

Bis auf weiteres kann ich deshalb nur anbieten, bei Interesse eine Testversion zur Verfügung zu stellen. Auch wenn die Benutzung des Programms hinterher sehr einfach ist, erfordert die Installation und Konfiguration solide Linux Kenntnisse. Die Benutzung erfolgt dann außerdem auf eigenes Risiko, insbesondere wenn das ganze später direkt über das Internet erreichbar und nicht z.B. durch ein VPN geschützt ist.