Alarmmonitor Skripte & Konfiguration

für Feuerwehren im Landkreis Kitzingen

Vorbereitung #

Der Raspberry Pi sollte mit einem aktuellen Raspberry Pi OS Lite (64-bit) (ab Version 12) geflasht werden. Alternativ kann auch die Desktop-Version verwendet werden, die Auswahl beeinflusst das Setup.

Mit der neuesten Version ist kein vollwertiger Desktop mehr erforderlich, daher reicht die Lite-Version in der Regel völlig aus.

Das Flashen gelingt am einfachsten mit dem Raspberry Pi Imager. Unter Raspbery Pi OS (other) kann im Imager die Lite-Version ausgewählt werden. Bei Pi2 gibt es ab Version 12 etwas Probleme - siehe Abschnitt "Setup unter Raspbian 12/13 Desktop". Im Assistenten von Imager können bereits der Standard-Benutzer pi, SSH-Zugriff und Lokalisierungsoptionen gesetzt werden.

Nach dem Flashen kann die folgende Konfiguration, das App-Setup und die Einrichtung erfolgen.

Konfiguration #

config.txt #

Die Konfiguration kann am PC über die eingehängte boot-Partition im Ordner kfvkt-almmon über die Datei config.txt vorgenommen werden, d.h. boot-partition/kfvkt-almmon/config.txt.

Alternativ kann die Demo-Datei direkt auf der Raspberry Pi Konsole angelegt werden bzw. wird später vom Setup erstellt:

nano /boot/firmware/kfvkt-almmon/config.txt

Demo-Konfiguration:

config.txt herunterladen

Die Datei enthält genau sechs Zeilen, deren Formatierung nicht geändert werden darf:

  1. Name der Feuerwehr, exakt wie in unserem System, z.B. FFDemoheim
  2. Anzahl der Minuten, die der Bildschirm aktiv bleiben soll, wenn kein Alarm ansteht. (0 = dauerhaft an)
  3. Optional: SSID des WLANs (wenn WLAN-Verbindung genutzt wird)
  4. Optional: WLAN-Passwort (bei WLAN-Verbindung)
  5. Optional: Zahl 2 für die neue Version
  6. Optional: Druckername von CUPS (siehe Abschnitt "Drucker einrichten")

VPN (WireGuard & OpenVPN) #

Der Alarmmonitor unterstützt sowohl WireGuard (empfohlen) als auch OpenVPN. Das System erkennt anhand der Dateiendung automatisch, welcher Dienst installiert und gestartet werden soll.

Die Konfigurationsdatei muss in den Unterordner vpn innerhalb von kfvkt-almmon auf der Boot-Partition abgelegt werden (Pfad auf dem Pi: /boot/firmware/kfvkt-almmon/vpn/).

WireGuard (Priorisiert)

Datei-Endung: .conf (z.B. wg0.conf). WireGuard ist ressourcenschonender.

OpenVPN

Datei-Endung: .ovpn (z.B. FFDemoheim.ovpn). Fallback-Lösung.

App-Setup starten (Installation) #

Folgenden Befehl als Benutzer pi (root-Rechte erforderlich!) ausführen:

curl -fsSL https://almmon.kfv-kt.de/bin/install.sh | bash

Dieser Befehl lädt das Installationsskript herunter, installiert alle notwendigen Pakete und richtet die Dienste ein.

Wichtig: Es wird ein Neustart des Systems (sudo reboot) empfohlen, nachdem die Installation abgeschlossen ist.

Während der Initialisierung erscheint das Logo der Kreisbrandinspektion, danach öffnet sich nach ca. 1 Minute der Browser mit dem Alarmmonitor.

Update der App #

Um eine vorhandene Installation auf die neueste Version zu aktualisieren, kann der Installationsbefehl einfach erneut ausgeführt werden.

Update-Befehl (als Benutzer pi):

curl -fsSL https://almmon.kfv-kt.de/bin/install.sh | bash

Das Skript erkennt automatisch die vorhandenen Dienste, stoppt diese, installiert aktualisierte Dateien und startet die Dienste neu.

Setup unter Raspbian 12/13 Desktop #

Hinweis: Raspberry Pi 2 ließ sich mit Raspbian 12/13 nur im Desktop-Modus erfolgreich einrichten – bei Lite bleibt der Bildschirm schwarz.

LightDM Service (nur Desktop mit Raspbian 12/13 ab 09/2025) #

Achtung: Um wieder Display :0 für Benutzer pi zu verwenden, LightDM deaktivieren und neu starten:

sudo systemctl disable lightdm.service
sudo reboot

X11 als Screen-Server einstellen (Desktop ab 09/2024) #

Die Desktop-Version unterstützt aktuell nicht korrekt den Kioskmode von Chromium auf Wayland. Lösung: Downgrade auf X11 mittels sudo raspi-config > Advanced Options > Wayland > X11.

Key is stored in legacy trusted.gpg keyring #

Fix für Raspberry Pi 2 (Image 2024):

sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d

Services überprüfen #

WLAN

sudo ifconfig

VPN Status prüfen

Für WireGuard:
sudo systemctl status wg-quick@wg0
Für OpenVPN:
sudo systemctl status openvpn@client

IP-Adresse prüfen:

ip a

DisplayOnOff

sudo systemctl status kfvkt-almmon-display
# Display manuell steuern:
/opt/kfvkt-almmon/bin/display_on.sh
/opt/kfvkt-almmon/bin/display_off.sh

PdfPrint

sudo systemctl status kfvkt-almmon-pdf-print

Debug & Logs #

Einzeln überprüfbare Konfigurationsskripte:

sudo /usr/bin/python3 /opt/kfvkt-almmon/lib/config_wifi.py
sudo /usr/bin/python3 /opt/kfvkt-almmon/lib/config_vpn.py
sudo /usr/bin/python3 /opt/kfvkt-almmon/lib/config_url.py
sudo /usr/bin/python3 /opt/kfvkt-almmon/lib/config_autostart.py

Logs:

ls -l /var/log/kfvkt-almmon
journalctl -u kfvkt-almmon-display.service
journalctl -u kfvkt-almmon-pdf-print.service

Manuelle Steuerung:

/opt/kfvkt-almmon/bin/start.sh no-config
/opt/kfvkt-almmon/bin/stop.sh

Drucker einrichten & testen #

Installation

CUPS wird beim App-Setup automatisch installiert. Manuell:

sudo apt update && sudo apt install cups

Druckernamen ermitteln

lpstat -p

Druck testen mit App

/usr/bin/python3 /opt/kfvkt-almmon/lib/pdf_print_test.py --url "https://kfv-kt.de/files/kfv/2023/downloads/Nachweis_Jugendfeuerwehr_2023.pdf" --printer "<DruckerName>"

Konfiguration

Den funktionierenden Druckernamen in Zeile 6 der config.txt eintragen und Service neustarten:

sudo systemctl restart kfvkt-almmon-pdf-print

Achtung: Druckunterstützung funktioniert aktuell nicht, wenn der Bildschirm dauerhaft aktiviert ist.

Screenshot erstellen #

DISPLAY=:0 scrot /tmp/screenshot.png

Den Screenshot per SCP holen:

scp pi@raspberrypi.local:/tmp/screenshot.png .

Sentry für Logs einrichten #

Zum zentralen Sammeln von Logs via Sentry oder Glitchtip:

sudo /opt/kfvkt-almmon/venv/bin/pip install sentry-sdk
sudo cp /opt/kfvkt-almmon/etc/logging_sentry.example.conf /etc/kfvkt-almmon/logging_sentry.conf
sudo chmod 640 /etc/kfvkt-almmon/logging_sentry.conf
sudo chown root:pi /etc/kfvkt-almmon/logging_sentry.conf
# DSN eintragen:
sudo nano /etc/kfvkt-almmon/logging_sentry.conf