Jump to content

Hamradio/reflector dashboard/de

From MediaWiki For Hamradio Analog/Digital and Debian v13 software/Raspberry PI v3/4/5 howto
This page is a translated version of the page Hamradio/reflector dashboard and the translation is 91% complete.

Eine Anleitung zum Einrichten von R.A.D.A.R. (Reflector Activity Dashboard And Reporting): ein Web-Dashboard, das in Echtzeit zeigt, wer mit deinem SvxReflector verbunden ist, wer spricht und wie das Netz verschaltet ist — mit Benutzerkonten, Talkgroup-Listen und Admin-Werkzeugen.

💡 In einem Satz: R.A.D.A.R. läuft auf demselben Server wie dein SvxReflector, fragt dessen Status ab und liefert eine Live-Webseite (Knoten, zuletzt gehört, Talkgroups, Topologie, CTCSS) mit einem Registrierungs-/Login-System.
The reflector's /status on port 8099 is polled by svxdr proxy (8090), then svxdr nodelist (8098), served through nginx over HTTPS to the browser; PHP-FPM handles accounts in Redis.
⚠ Das hier ist für Reflektor-Betreiber, nicht für Einsteiger. Anders als das Knoten-Dashboard ist R.A.D.A.R. eine Server-Installation: nginx + PHP + Redis + ein Go-Daemon + ein echtes TLS-Zertifikat. Betreibst du nur einen Knoten, brauchst du das nicht — dann willst du das SvxSpot Dashboard. Die maßgebliche Schritt-für-Schritt-Anleitung ist die INSTALL.md des Repos; diese Seite ist der freundliche Überblick.

Brauche ich das?

  • Du betreibst einen SvxReflector (konkret einen GeuReflector-Build, der Reflektor-zu-Reflektor-Trunking hinzufügt) und willst ein öffentliches/überblickshaftes Aktivitäts-Dashboard dafür.
  • Du kommst mit dem Einrichten eines Webservers mit HTTPS zurecht. Das ist eine Mehrdienst-Installation auf einem Debian-Rechner.
  • Betreibst du nur einen Knoten (Hotspot/Repeater), hör hier auf — nutze das SvxSpot Dashboard.

Was du zuerst brauchst

Was Wofür
Ein laufender SvxReflector (GeuReflector) auf demselben Rechner R.A.D.A.R. liest dessen /status-Endpunkt (Beispiel-Port 8099).
Ein Domainname + TLS-Zertifikat (Let's Encrypt) Das Login nutzt ein Secure-Cookie — es funktioniert nicht über einfaches HTTP.
nginx, PHP 8.4 + FPM (redis, mbstring, openssl, json), Redis 6+ Webserver, Konto-Backend und Konto-/Sitzungsspeicher.
Ein MTA oder SMTP-Relay Verifizierung bei der Registrierung und Passwort-Reset-E-Mail.
Go 1.24+ zum Kompilieren des Live-Daten-Daemons svxdr.

Installiere die Pakete (Debian 13 / Ubuntu 24.04):

sudo apt install nginx php8.4-fpm php8.4-redis php8.4-mbstring php8.4-cli \
                 redis-server certbot openssl rsync curl python3 sudo golang-go
💡 Debian 12 liefert PHP 8.2; R.A.D.A.R. wird auf 8.4 entwickelt. Nutze Debian 13 oder das sury.org-PHP-Repo und ersetze überall, wo 8.4 steht, deine tatsächliche Version.

Wie die Daten fließen (damit die Ports Sinn ergeben)

Der mit Abstand häufigste Einrichtungsfehler ist eine nicht zusammenpassende Port-Kette. Die Daten fließen:

Reflektor /status :8099 → svxdr proxy :8090 (cacht, reichert an) → svxdr nodelist :8098 (baut die API + Live-SSE-Stream, liest Redis für Knoten-Ereignisse) → nginx (HTTPS, reverse-proxyt /svxportal/api/ auf :8098) → dein Browser. Konten liegen in Redis; das PHP-Backend (auth/*.php) spricht damit.

Halte diese Nummern aufeinander abgestimmt, dann „funktioniert“ der Großteil der Installation von selbst.

Installation (Überblick)

Klone das Repo und folge dessen INSTALL.md-Schritten 0–11; die wichtigsten Schritte sind:

  1. Code holen: git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git
  2. Web-Dateien ausrollen mit rsync nach /var/www/html/svxportal (Eigentümer www-data).
  3. Eine dedizierte Redis-Instanz auf einem Unix-Socket einrichten, mit Passwort; www-data zur Gruppe redis hinzufügen.
  4. Einen zweiten PHP-FPM-Pool (svxadmin) hinzufügen, nur für die Reflektor-Admin-API.
  5. Die Talkgroup-Listendatei /etc/svxlink/tglist.json erstellen (über die mitgelieferte tmpfiles-Regel).
  6. nginx + TLS: die Site-Vorlage installieren, certbot für deinen Hostnamen ausführen, die Site aktivieren.
  7. svxdr bauen und starten:
cd svxdr && CGO_ENABLED=0 go build -trimpath -o svxdr . && cd ..
sudo install -m0755 svxdr/svxdr /usr/local/bin/svxdr
sudo cp install/svxdr.json.example /etc/svxlink/svxdr.json   # then edit it
sudo cp install/systemd/svxdr.service /etc/systemd/system/svxdr.service
sudo systemctl daemon-reload && sudo systemctl enable --now svxdr
curl -s http://127.0.0.1:8098/healthz        # -> ok

Zwei Konfigdateien halten die Einstellungen: auth/config.php (Web-Backend — Redis-Passwort, E-Mail, base_url, MQTT) und /etc/svxlink/svxdr.json (der Daemon — Redis, die drei Ports, Föderations-Seeds). Kopiere jede aus ihrer .example und bearbeite sie.

Den ersten Admin anlegen

Ein mitgeliefertes CLI legt das erste Konto an (und markiert seine E-Mail als verifiziert):

cd /var/www/html/svxportal
sudo -u www-data php svx-mkadmin.php

Es fragt nach Rufzeichen, Name, E-Mail, Ort, Admin-Level und einem Passwort. Level: 1 = normaler Nutzer, 2 = Admin (Konten, Knoten, Zertifikate, Talkgroups), 3 = Super-Admin (auch Reflektor-/MQTT-Geheimnisse und Verwaltung anderer Admins). Alle anderen registrieren sich selbst auf der Seite und verifizieren per E-Mail.

Benutzung

Öffne https://YOUR.HOST.NAME/. Die obere Navigation hat:

Ansicht Zeigt
Nodes Verbundene Knoten, mit Pop-up, wenn jemand spricht.
Reflector clients Durchsuchbare Liste aller verbundenen Clients.
Monitor → Nodes / Trunks / Topology Live-Monitor; Topology zeichnet das ganze Netz — dein Reflektor in der Mitte, andere Reflektoren im Ring, Trunk-Verbindungen dazwischen.
TG Monitor Wer auf welcher Talkgroup ist (SVX-Seite und DMR-Seite).
Lastheard Jüngste Aktivität.
CTCSS Table TX/RX-Töne pro Knoten, 2 m vs. UHF.
Changelog Projekt-Changelog.

Eine eingebaute Help-Seite (/help.html) hat Tabs für das Portal, SvxLink, SvxReflector, GeuReflector, AllStar und mehr.

Gut zu wissen / ehrliche Vorbehalte

⚠ Die Reflektor-Admin-Seiten brauchen Hilfsskripte, die du selbst schreibst. Die Seiten Admin → Reflector / Certificates / Node-control / MQTT rufen root-eigene sudo-Helfer in /usr/local/sbin/ auf (svxreflector-pty, svxreflector-systemctl, svxreflector-users, svx-mqtt-provision), die nicht mitgeliefert werden — sie sind spezifisch für deinen Rechner. Alles andere funktioniert ohne sie.
  • Login nach einer Seite verloren? Du bist nicht auf HTTPS (das Cookie ist Secure) oder base_url ist falsch.
  • Leere Live-Ansichten? svxdr läuft nicht — prüfe systemctl status svxdr und curl http://127.0.0.1:8098/healthz. Der Reflektor selbst läuft unabhängig weiter.
  • Keine Verifizierungs-E-Mail? PHP mail() schlägt ohne MTA stillschweigend fehl — richte ein SMTP-Relay ein.
  • Admin-API sagt „exec disabled“? Füge exec niemals zu PHPs disable_functions hinzu; das Portal braucht es.

Fehlerbehebung

Symptom Prüfen
500 bei irgendeiner auth/*.php /var/log/nginx/svxportal-error.log und journalctl -u php8.4-fpm — meist falsches Redis-Passwort, fehlendes php-redis oder www-data nicht in Gruppe redis.
„Not connected“ / leere Ansichten svxdr aus → nichts auf 127.0.0.1:8098.
Ports Bestätige die Kette 8099 → 8090 → 8098 → nginx in /etc/svxlink/svxdr.json und der nginx-Site.

Siehe auch

  • SvxSpot Dashboard — das Dashboard für einen einzelnen Knoten (viel einfacher).
  • Hamradio — SvxReflector und der Rest der Digital-Voice-Anleitungen.
  • Autor: SA7AUX <bjorne@sa7aux.se>. AGPL-3.0-or-later.