Hamradio/reflector dashboard/it
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.
INSTALL.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
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:
- Prendi il codice:
git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git - Distribuisci i file web con
rsyncin/var/www/html/svxportal(proprietariowww-data). - Imposta un Redis dedicato su un socket unix, con password; aggiungi
www-dataal grupporedis. - Aggiungi un secondo pool PHP-FPM (
svxadmin) usato solo dall'API di admin del reflector. - Crea il file elenco talkgroup
/etc/svxlink/tglist.json(tramite la regola tmpfiles inclusa). - nginx + TLS: installa il template del sito, esegui
certbotper il tuo hostname, attiva il sito. - 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
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) obase_urlè sbagliato. - Viste live vuote?
svxdrnon è in esecuzione — controllasystemctl status svxdrecurl 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
execadisable_functionsdi 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.
