Hamradio/reflector dashboard/de
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.
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
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:
- Code holen:
git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git - Web-Dateien ausrollen mit
rsyncnach/var/www/html/svxportal(Eigentümerwww-data). - Eine dedizierte Redis-Instanz auf einem Unix-Socket einrichten, mit Passwort;
www-datazur Grupperedishinzufügen. - Einen zweiten PHP-FPM-Pool (
svxadmin) hinzufügen, nur für die Reflektor-Admin-API. - Die Talkgroup-Listendatei
/etc/svxlink/tglist.jsonerstellen (über die mitgelieferte tmpfiles-Regel). - nginx + TLS: die Site-Vorlage installieren,
certbotfür deinen Hostnamen ausführen, die Site aktivieren. svxdrbauen 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
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) oderbase_urlist falsch. - Leere Live-Ansichten?
svxdrläuft nicht — prüfesystemctl status svxdrundcurl 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
execniemals zu PHPsdisable_functionshinzu; 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.
