Open Source für Rettungshundestaffeln
Das ganze Lagebild auf einen Blick.
Teams und Suchzeiten, Hunde und Hundeführer live auf der Karte, die Abdeckung jedes Suchgebiets, Funk und Notizen. Danach ein vollständiger Bericht. Auf eurem eigenen Server, für die Einsatzleitung nur im VPN.
- Team Rex
00:42 - Team Luna
01:12 - Team Kira
00:18
Vom Alarm bis zum Bericht
Die Anwendung begleitet den ganzen Einsatz. Was erfasst wurde, geht nicht verloren, auch nicht im Funkloch.
Einsatz anlegen
Einsatz aus dem Divera-Alarm übernehmen oder selbst anlegen. Szenario wählen, Vermisste erfassen, Suchgebiete auf der Karte zeichnen, Teams mit Hund und Hundeführer bilden.
Suche führen
Teams starten, Halsbänder zuweisen, Suchzeiten im Blick behalten. Die Karte zeigt Hunde, Hundeführer und wie viel jedes Gebiet bereits abgesucht ist. Warnungen kommen nur, wenn wirklich etwas ist.
Abschließen
Einsatz beenden, und der PDF-Bericht ist fertig: Teams, Funk, Notizen, Tracks und Abdeckung auf echten Karten. Alles bleibt im Archiv.
Was drin ist
Gebaut mit und für Staffeln, die im Einsatz digital arbeiten.
Einsatzleitung
- Einsatzmonitor
- Teams, Suchzeiten mit Warnstufen, Suchgebiete, Vermisste und Checklisten je Szenario (Mantrailer, Fläche, Trümmer).
- EL-Ansicht für das Tablet
- Als App installierbar. Teams starten, pausieren und beenden, Funk, Notizen, Karte und Einsatz beenden. Hält auch bei schwachem Netz die Verbindung.
- Funk und Notizen
- Mit Antworten und @-Erwähnungen, sofort auf allen Geräten. Im Funkloch wird zwischengespeichert und mit Originalzeit nachgesendet.
- Trümmer-Lagekarte
- Drohnenfoto des Trümmerfelds hochladen und Suchbereiche direkt auf dem Bild einzeichnen.
Ortung
- GPS-Halsbänder
- Bis zu 20 gleichzeitig, z. B. Garmin Alpha über die beiliegende Windows-App. Jede Suche bekommt einen eigenen Track in eigener Farbe.
- Team-Handy
- Laufweg des Hundeführers über den Browser oder die kostenlose App Traccar Client. Die App sendet auch bei gesperrtem Handy und puffert im Funkloch.
- Abdeckung live
- Je Suchgebiet „x % abgesucht“ und die abgesuchte Fläche, während die Hunde laufen.
- Warnungen
- Hund außerhalb seines Gebiets, Handy sendet nicht mehr, Akku schwach, Suchzeit überschritten. Alles gesammelt im Warnzentrum.
Nachbereitung
- PDF-Bericht
- Kartenart (Straße, Topografisch, Satellit) und Teams wählbar. Tracks und Abdeckung auf echten Karten.
- Archiv
- Abgeschlossene Einsätze mit allen Suchen, Vermissten und Tracks. Der Bericht lässt sich jederzeit neu erzeugen.
- Audit-Log
- Wer hat wann was getan, inklusive Anmeldungen und Geräten.
Betrieb
- Systemzustand
- Zertifikat, Backup, Speicher, Divera und Uhrzeit auf einen Blick. Ein ablaufendes Zertifikat per Knopf erneuern.
- Stammdaten
- Personal, Hunde und Drohnen, mit Excel-Import und -Export.
- Divera 24/7, Wetter, Drohnen
- Alarme und Verfügbarkeiten, Wetter am Einsatzort (DWD), Drohnen-Livestream und GPX-Import.
- Updates aus dem Browser
- Neue Versionen werden erkannt und mit einem Klick eingespielt.
Eure Daten bleiben bei euch
Keine Cloud, kein Konto bei einem Anbieter. Die Anwendung läuft auf einem Server der Staffel.
- Einsatzleitung nur im VPN. Zugriff über WireGuard und mit dem Staffel-Passwort. VPN-Geräte werden per QR-Code angelegt und laufen automatisch ab.
- Nach außen nur das Nötigste. Die öffentliche Adresse gibt ausschließlich die Team-Ansicht und den Empfang der Handy-Positionen frei, mit Let's-Encrypt-Zertifikat.
- Zugänge gelten nur für einen Einsatz. Nach dem Einsatz nimmt der Server Positionen der Team-Handys nicht mehr an.
- Nachvollziehbar. Jede Anmeldung und jede wichtige Aktion steht im Audit-Log, Backups laufen täglich.
Installation
Ein Ubuntu-Server (22.04 oder 24.04 LTS) mit WireGuard reicht. Die Einrichtung erledigen drei Skripte.
# Anwendung, nginx, systemd, Firewall, tägliches Backup sudo bash deploy/setup.sh # VPN-Geräte per QR-Code anlegen sudo bash deploy/scripts/setup-vpn.sh dein-einsatz.example.org # Zertifikat für die Team-Handys, mit Knopf „Jetzt erneuern“ in der App sudo bash deploy/scripts/setup-zertifikat.sh dein-einsatz.example.org
Schritt für Schritt: DEPLOYMENT.md. Updates spielt ihr danach direkt in der Anwendung ein.
Neu in den letzten Versionen
Wird bei jeder Veröffentlichung automatisch aktualisiert.
v1.11.11 29.10.2026
Neu (für die App „EinsatzSpur“)
- Heimatstaffel: Der Server hat eine feste Kennung und liefert der App Staffelname und Logo-Stand, damit sie die eigene Staffel erkennt und deren Logo zeigt, auch ohne Netz.
- Staffellogo für die App als PNG, höchstens 512 px. Ein SVG-Logo wird auf dem Server umgewandelt. Vorher entfernt der Server Skripte und alle Verweise nach außen, es wird nichts nachgeladen oder ausgeführt.
- Live-Verbindungen der App: Bis zu 10 Geräte je Team (vorher 3). Ein verdrängtes Gerät bleibt angemeldet und ortet weiter.
Korrekturen
- Live-Aktualisierung der App: Nach Stopp, Gebietswechsel, Start oder Pause bekam die App teilweise keine Meldung mehr. Jetzt meldet der Server jede Änderung der Suche, egal ob über Monitor, EL-Ansicht, Halsband oder App ausgelöst.
- Pausen-Notizen nach Neustart: Nach einem Neustart des Servers wurden Pausen eines Teams nicht mehr in den Notizen vermerkt. Behoben.
Technik
- SkiaSharp 3.116.1 → 3.119.2 (für PDF, Karten und Logo), dazu Svg.Skia 5.1.1 (MIT). Die passenden Linux-Bibliotheken liegen im Paket.
Einspielen
Nur, wenn gerade kein Einsatz läuft.
1. Update wie gewohnt über den Browser (Einstellungen → System). Danach steht dort „1.11.11“.
2. Keine Änderung an nginx nötig (gegenüber 1.11.10).
3. Kurz prüfen, ob PDF und Karten weiter funktionieren, weil die Grafikbibliothek aktualisiert wurde: im Archiv bei einem Einsatz „PDF“ öffnen, die Karte muss erscheinen.
v1.11.10 28.10.2026
Neu: Schnittstelle für die eigene App (Test auf dem iPhone)
- Team-Anmeldung in der App mit dem bekannten Anmelde-Code aus dem Team-QR-Code des Monitors, jetzt auch in Übungen (bisher gab es den Code nur bei Einsätzen; das gilt auch für die Team-Seite im Browser).
- Native Team-Ansicht: Die App bekommt Einsatz, Team, Suchstatus und -zeit, Suchgebiet, Halsband-Position, Laufwege und Mitteilungen der Einsatzleitung. Sie sendet die Statusmeldungen („im Suchgebiet eingetroffen“, „Pause“, „Funkkontakt benötigt“, „Auftrag beendet“). Änderungen kommen live.
- Mitteilungen der Einsatzleitung an ein Team werden gespeichert (die letzten 20 je Team), damit die App sie nach einem Funkloch nachholt.
- Die App ortet nur während der Suche und hört nach dem Einsatz von selbst auf.
Einspielen
Nur, wenn gerade kein Einsatz läuft.
1. Update wie gewohnt über den Browser (Einstellungen → System). Danach steht dort „1.11.10“.
2. nginx-Vorlage übernehmen. Sie enthält drei neue Blöcke für die App: Anmeldung mit strengem Limit, Positionen und Abfragen, Live-Verbindung ohne Pufferung.
cd <Repository-Kopie auf dem Server> && git pull
sudo cp deploy/nginx/einsatzueberwachung-public.conf /etc/nginx/sites-available/einsatzueberwachung-public.conf
sudo nginx -t && sudo systemctl reload nginx
Hast du die Datei auf dem Server angepasst (Domain, Zertifikatspfade), übernimm nur die neuen location-Blöcke für /api/team-mobile/app/ und die Zeile limit_req_zone … team_app_zone.
3. Prüfen: curl -s -o /dev/null -w "%{http_code}
" https://<deine-domain>/api/team-mobile/app/v1/status muss 410 liefern. Das heißt erreichbar, ohne Anmeldung kein Zugang.
v1.11.9 28.10.2026
Korrektur
- Versionsnummer: In 1.11.7 und 1.11.8 zeigten Startseite und Einstellungen noch „1.11.6“, und der Updater meldete deshalb dauerhaft „Update verfügbar“. Ab 1.11.9 stimmt die Anzeige wieder, und die Meldung verschwindet nach dem Update. Ein Test verhindert, dass die Nummern wieder auseinanderlaufen.
Inhaltlich entspricht diese Version 1.11.8 (siehe dort).
Einspielen
Normales Update über den Browser. Danach zeigt Einstellungen → System „1.11.9“.
v1.11.8 28.10.2026
Neu
- Handys auf der Karte einzeln ausblenden: Das Auge an einem Eintrag im Handy-Bereich der Karte blendet nur dieses Handy aus, mit Marker und Laufweg. Bisher verschwanden alle. Das Auge oben bleibt der Schalter für alle Handys.
- Handy-Daten entfernen: Mit dem Papierkorb an einem Eintrag werden letzte Position und Verlauf eines Teams aus der Karte gelöscht, auch dauerhaft nach einem Neustart. Während das Team sucht, ist das gesperrt. Abgeschlossene Suchen und Berichte behalten ihre Laufwege. Reste gelöschter Teams erscheinen als „Gelöschtes Team“ statt mit interner Kennung.
- Vorbereitung für die eigene App (iPhone und Android, in Entwicklung):
- Schnittstelle für die Team-Ortung: Der Server sagt der App, wann sie orten, pausieren oder aufhören soll. Nach dem Einsatz ist das GPS aus.
- Schnittstelle für den Standort der Einsatzleitung, nur im VPN.
- Auf der Einsatzkarte erscheint die Einsatzleitung später als roter Marker „EL“ mit Gerätename.
Korrekturen
- Uhrzeiten von Handy-Tracks: Seit 1.11.7 zeigten die Detail-Tabellen von Handy-Laufwegen (Beginn, Ende, Punktzeiten) eine Stunde zu spät. Neue Punkte stimmen wieder, bereits gespeicherte Punkte bleiben um eine Stunde verschoben.
Einspielen
Normales Update über den Browser.
Für die App wird später ein zusätzlicher nginx-Block gebraucht. Er ist in deploy/nginx/einsatzueberwachung-public.conf enthalten (eigenes Limit für /api/team-mobile/app/, weil sich im Mobilfunk viele Handys eine IP teilen). Übernehmen genügt, sobald die App getestet wird. Für den normalen Betrieb ist das noch nicht nötig.
v1.11.7 28.10.2026
Neu
- Suchgebiet aus Koordinatenliste: Unter Karte → Gebiete eine Liste aus einer anderen App einfügen. Erkannt werden Dezimal (Breite,Länge oder Länge,Breite) und UTM. Eine Vorschau zeigt Punkte, Format und Fläche, danach kommt der gewohnte Dialog für Name, Team und Farbe. Jedes Gebiet lässt sich auch als Liste ausgeben und kopieren.
- Traccar spart Akku: Der Link „Mit diesem Einsatz verbinden“ richtet Traccar jetzt sparsam ein: Genauigkeit hoch statt höchste, alle 20 s statt 10 s, Stillstandserkennung an, Handy wachhalten aus. Die Werte lassen sich unter Einstellungen → Einsatzbetrieb → „Traccar auf den Team-Handys“ ändern und gelten ab dem nächsten Antippen des Links.
- „Ortung jetzt beenden“ bei Einsatzende: Die Team-Seite zeigt bei Einsatzende einen großen Knopf, um Traccar zu stoppen. Bisher wurde der Hinweis genau dann ausgeblendet.
- Trümmer-Lagekarte: Suchgebiete werden jetzt gezeichnet wie auf der Einsatzkarte, mit Eckpunkten, Flächenvorschau und Schließen per Klick auf den ersten Punkt. Die Zeichenhinweise beider Karten sind auf Deutsch.
Korrekturen
- Lange Tracks nach Neustart vollständig: Bisher blieben pro Halsband und Handy nur die letzten 2000 Punkte erhalten, also etwa 2,8 Stunden. Jetzt wird jeder Punkt gespeichert, ohne Obergrenze. Vorhandene Daten werden beim ersten Start übernommen.
- Überall die eingestellte Zeitzone: Läuft der Server auf UTC, lagen bisher u. a. Funkzeiten, Audit-Log, Pausendauer, PDF-Stand und Alarmzeit 1–2 Stunden daneben. Jetzt gilt überall die Zeitzone aus den Einstellungen.
- Umlaute: Rund 100 Oberflächentexte wie „auswählen“, „Löschen“ oder „Schließen“ sind korrigiert.
Einspielen
Normales Update über den Browser, keine Konfigurationsänderung nötig.
Damit die Team-Handys die sparsamen Traccar-Werte bekommen, beim nächsten Einsatz wie gewohnt den QR-Code scannen und „Mit diesem Einsatz verbinden“ antippen.
v1.11.6 27.10.2026
Neu
- PDF-Bericht wählbar: Beim Export lassen sich die Kartenart (Straßenkarte, Topografisch, Satellit) und die Teams auswählen, deren Tracks in den Bericht kommen. Das geht im Archiv über „PDF“ sowie beim Abschluss des Einsatzes auf dem Monitor und auf
/el. - Karten im Bericht wieder mit Hintergrund: Tracks und Abdeckung liegen auf einer echten Karte (OpenStreetMap), so ist nachvollziehbar, wo der Hund war. Ältere Einsätze aus dem Archiv bekommen die Karten beim nächsten Download.
- Abdeckung live auf der Einsatzkarte: Für jedes Suchgebiet zeigt die Karte „x % abgesucht“ und die abgesuchte Fläche, während die Hunde laufen. Die Anzeige wird alle 20 Sekunden aktualisiert und lässt sich mit dem Knopf „▦ Abdeckung“ ein- und ausblenden.
- Zertifikat „Jetzt erneuern“: Neben dem Hinweis „Zertifikat abgelaufen/läuft ab“ steht ein Knopf zum Erneuern (Startseite,
/el, Einstellungen → System). Dafür muss einmaligsetup-zertifikat.sheingerichtet werden (siehe unten).
Korrekturen
- Trümmer-Lagebild: Das Hochladen brach mit „The SSL connection could not be established“ ab. Jetzt klappt es unabhängig vom Zertifikat.
- Suchzeit nach Neustart: Nach einem Neustart des Servers zeigten laufende Teams unsinnige Suchzeiten. Die Startzeit wird jetzt gespeichert.
Einspielen
Normales Update über den Browser.
Danach einmalig auf dem Server, damit Knopf und automatische Verlängerung funktionieren (neue einsatzueberwachung-public.conf aus 1.11.4 vorausgesetzt):
cd <Repository-Kopie auf dem Server> && git pull # holt deploy/scripts/setup-zertifikat.sh
sudo bash deploy/scripts/setup-zertifikat.sh dein-einsatz.mywire.org
sudo certbot renew --dry-run
Details stehen in DEPLOYMENT.md unter „Zertifikat der öffentlichen Domain“.
v1.11.5 27.10.2026
Neu: rechtzeitig merken, wenn etwas nicht läuft
- Zertifikatswarnung: Die App prüft alle 6 Stunden das Zertifikat ihrer öffentlichen Adresse. Ist es ungültig oder läuft es in weniger als 14 Tagen ab, erscheint ein Hinweis auf der Startseite und in der EL-Ansicht und eine Meldung im Warnzentrum. Ohne gültiges Zertifikat senden Traccar und Team-Handys nichts.
- Funkstille beim Team-Handy: Hat das Handy eines Teams im Einsatz schon gesendet und meldet sich während der Suche zu lange nicht, kommt „Handy sendet nicht – Traccar gestartet?“. Das Zeitfenster stellt man in Einstellungen → Einsatzbetrieb ein, Standard sind 3 Minuten.
- Akku: Der Akkustand aus Traccar wird angezeigt, unter 20 % gibt es eine Warnung. Teamkarte und EL-Ansicht zeigen zum Beispiel „Handy vor 2 Min · 74 %“.
- Systemzustand (Einstellungen → System): Zertifikat, letztes Backup, freier Speicher, Divera, Uhrzeit und Zeitzone auf einen Blick.
- Leitungsplatz erkennbar: Funk und Notizen der Einsatzleitung zeigen das Gerät, zum Beispiel „Einsatzleitung · Tablet EL“. Der Name kommt aus den VPN-Geräten. Die Anmeldung der Einsatzleitung steht mit Gerät im Audit-Log.
- Anmeldecode im QR-Dialog groß und in Viererblöcken, zum Vorlesen per Funk. Beim Abtippen sind Leerzeichen egal.
- Traccar testen (Einstellungen → Integration): Test per QR-Code oder Link, die App zeigt sofort „Position empfangen … – Traccar funktioniert“. Das geht ohne Einsatz.
Einspielen
Normales Update, keine Änderung an der Konfiguration nötig.
Falls noch nicht geschehen, den Zertifikatsschritt aus 1.11.4 ausführen (siehe DEPLOYMENT.md, „Zertifikat der öffentlichen Domain“). Danach unter Einstellungen → System „Jetzt prüfen“ drücken, das Zertifikat sollte grün sein. Anschließend unter Einstellungen → Integration den Traccar-Test mit einem Handy machen.
v1.11.4 27.10.2026
Korrekturen
- Traccar sendet wieder: Das Let's-Encrypt-Zertifikat konnte sich nicht automatisch verlängern. Port 80 hat auch die Prüfanfragen auf HTTPS umgeleitet, dort kam ein 404 zurück. Die Traccar-App lehnt ein abgelaufenes Zertifikat still ab, der Browser zeigt nur eine Warnung. Die nginx-Vorlage lässt die Prüfanfragen jetzt durch (siehe „Einspielen“).
- Der Traccar-Endpunkt versteht zusätzlich das JSON-Format der neueren Traccar-Apps.
Neu
- Nach Ende einer Suche: Auf dem Team-Handy erscheint „Suche beendet – Traccar jetzt stoppen“ mit einem Knopf, der den Stopp in Traccar öffnet. Auf Android vibriert das Handy dazu. Bei einer neuen Suche erscheint „Traccar starten“. Bei einer Kurzpause kommt kein Hinweis.
- Lagekarte: Nach dem Stopp einer Suche zeigt die Karte das Handy des Teams nicht mehr als „live“, auch wenn Traccar noch sendet. Beim nächsten Start ist es wieder da.
Hinweis: Traccar lässt sich nicht vom Server aus beenden, iOS und Android erlauben das nicht. Deshalb kommt der Stopp per Tipp.
Einspielen
1. Update wie gewohnt installieren.
2. Einmalig auf dem Server: neue einsatzueberwachung-public.conf übernehmen und das Zertifikat verlängern. Die Befehle stehen in DEPLOYMENT.md unter „Zertifikat der öffentlichen Domain“:
mkdir -p /var/www/certbot
nginx -t && systemctl reload nginx
certbot certonly --webroot -w /var/www/certbot -d <domain> --cert-name <domain> --force-renewal --deploy-hook "systemctl reload nginx"
certbot renew --dry-run
3. In der Traccar-App einmal „Stop“ und wieder „Start“ drücken. Die im Handy gesammelten Positionen werden dann nachgesendet.