Jump to content

Hamradio/reflector dashboard/it

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.

Una guida per configurare R.A.D.A.R. (Reflector Activity Dashboard And Reporting): una dashboard web che mostra, in tempo reale, chi è connesso al tuo SvxReflector, chi sta parlando e come è cablata la rete — con account utente, elenchi di talkgroup e strumenti di amministrazione.

💡 In una frase: R.A.D.A.R. gira sullo stesso server del tuo SvxReflector, ne interroga lo stato e serve una pagina web live (nodi, ultimi ascoltati, talkgroup, topologia, CTCSS) con un sistema di registrazione/accesso.
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.
⚠ Questa è per gli operatori di reflector, non per principianti. A differenza della dashboard di nodo, R.A.D.A.R. è un'installazione server: nginx + PHP + Redis + un demone Go + un certificato TLS vero. Se gestisci solo un nodo, non ti serve — vuoi la SvxSpot Dashboard. La guida passo-passo autorevole è lINSTALL.md del repo; questa pagina è la panoramica amichevole.

Mi serve?

  • Gestisci un SvxReflector (nello specifico una build GeuReflector, che aggiunge il trunking reflector-a-reflector) e vuoi una dashboard di attività pubblica/a colpo d'occhio per esso.
  • Sei a tuo agio nel configurare un server web con HTTPS. È un'installazione multi-servizio su una macchina Debian.
  • Se gestisci solo un nodo (hotspot/ripetitore), fermati qui — usa la SvxSpot Dashboard.

Cosa ti serve prima

Cosa Per cosa
Un SvxReflector (GeuReflector) in esecuzione sulla stessa macchina R.A.D.A.R. legge il suo endpoint /status (porta di esempio 8099).
Un nome di dominio + certificato TLS (Let's Encrypt) L'accesso usa un cookie Secure — non funziona su HTTP semplice.
nginx, PHP 8.4 + FPM (redis, mbstring, openssl, json), Redis 6+ server web, backend account e archivio account/sessioni.
Un MTA o relay SMTP verifica della registrazione e email di reset password.
Go 1.24+ per compilare il demone dati live svxdr.

Installa i pacchetti (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 porta PHP 8.2; R.A.D.A.R. è sviluppato su 8.4. Usa Debian 13, o il repo PHP di sury.org, e sostituisci con la tua versione reale dove vedi 8.4.

Come scorrono i dati (perché le porte abbiano senso)

L'errore di configurazione di gran lunga più comune è una catena di porte non coerente. I dati scorrono:

reflector /status :8099 → svxdr proxy :8090 (cache, arricchisce) → svxdr nodelist :8098 (costruisce l'API + stream SSE live, legge Redis per gli eventi dei nodi) → nginx (HTTPS, fa reverse-proxy di /svxportal/api/ su :8098) → il tuo browser. Gli account vivono in Redis; il backend PHP (auth/*.php) ci parla.

Tieni quei numeri allineati e gran parte dell'installazione «funziona e basta».

Installazione (panoramica)

Clona il repo e segui i suoi passi 0–11 di INSTALL.md; i passaggi chiave sono:

  1. Prendi il codice: git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git
  2. Distribuisci i file web con rsync in /var/www/html/svxportal (proprietario www-data).
  3. Imposta un Redis dedicato su un socket unix, con password; aggiungi www-data al gruppo redis.
  4. Aggiungi un secondo pool PHP-FPM (svxadmin) usato solo dall'API di admin del reflector.
  5. Crea il file elenco talkgroup /etc/svxlink/tglist.json (tramite la regola tmpfiles inclusa).
  6. nginx + TLS: installa il template del sito, esegui certbot per il tuo hostname, attiva il sito.
  7. Compila ed esegui svxdr:
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

Due file di configurazione tengono le impostazioni: auth/config.php (backend web — password Redis, posta, base_url, MQTT) e /etc/svxlink/svxdr.json (il demone — Redis, le tre porte, seed di federazione). Copia ciascuno dal suo .example e modificalo.

Creare il primo amministratore

Una CLI inclusa crea il primo account (e ne marca l'email come verificata):

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

Chiede nominativo, nome, email, località, livello admin e una password. Livelli: 1 = utente normale, 2 = admin (account, nodi, certificati, talkgroup), 3 = super-admin (anche segreti reflector/MQTT e gestione di altri admin). Gli altri si registrano da soli sul sito e verificano via email.

Uso

Apri https://YOUR.HOST.NAME/. La navigazione in alto ha:

Vista Mostra
Nodes Nodi connessi, con un popup quando qualcuno parla.
Reflector clients Elenco ricercabile di tutti i client connessi.
Monitor → Nodes / Trunks / Topology Monitor live; Topology disegna l'intera rete — il tuo reflector al centro, gli altri reflector in anello, i collegamenti trunk tra loro.
TG Monitor Chi è su ciascuna talkgroup (lato SVX e lato DMR).
Lastheard Attività recente.
CTCSS Table Toni TX/RX per nodo, 2 m vs UHF.
Changelog Changelog del progetto.

Una pagina Help integrata (/help.html) ha schede per il Portale, SvxLink, SvxReflector, GeuReflector, AllStar e altro.

Buono a sapersi / avvertenze oneste

⚠ Le pagine di admin del reflector richiedono script helper che scrivi tu. Le pagine Admin → Reflector / Certificates / Node-control / MQTT chiamano helper sudo di proprietà di root in /usr/local/sbin/ (svxreflector-pty, svxreflector-systemctl, svxreflector-users, svx-mqtt-provision) che non sono inclusi — sono specifici della tua macchina. Tutto il resto funziona senza di essi.
  • Accesso perso dopo una pagina? Non sei su HTTPS (il cookie è Secure) o base_url è sbagliato.
  • Viste live vuote? svxdr non è in esecuzione — controlla systemctl status svxdr e curl http://127.0.0.1:8098/healthz. Il reflector continua a funzionare comunque.
  • Nessuna email di verifica? PHP mail() fallisce in silenzio senza un MTA — configura un relay SMTP.
  • L'API di admin dice «exec disabled»? Non aggiungere mai exec a disable_functions di PHP; al portale serve.

Risoluzione dei problemi

Sintomo Controlla
500 su qualsiasi auth/*.php /var/log/nginx/svxportal-error.log e journalctl -u php8.4-fpm — di solito password Redis errata, php-redis mancante, o www-data non nel gruppo redis.
«Not connected» / viste vuote svxdr giù → nulla su 127.0.0.1:8098.
Porte Conferma la catena 8099 → 8090 → 8098 → nginx in /etc/svxlink/svxdr.json e nel sito nginx.

Vedi anche

  • SvxSpot Dashboard — la dashboard per un singolo nodo (molto più semplice).
  • Hamradio — SvxReflector e il resto delle guide di voce digitale.
  • Autore: SA7AUX <bjorne@sa7aux.se>. AGPL-3.0-or-later.