Jump to content

Hamradio/reflector dashboard/sv

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 97% complete.

En guide till att sätta upp R.A.D.A.R. (Reflector Activity Dashboard And Reporting): en webb-dashboard som i realtid visar vem som är ansluten till din SvxReflector, vem som pratar och hur nätverket är kopplat — med användarkonton, talgruppslistor och adminverktyg.

💡 I en mening: R.A.D.A.R. körs på samma server som din SvxReflector, pollar reflektorns status och visar en live-webbsida (noder, senast hörda, talgrupper, topologi, CTCSS) med ett registrerings-/inloggningssystem.
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.
⚠ Den här är för reflektor-operatörer, inte nybörjare. Till skillnad från nod-dashboarden är R.A.D.A.R. en serverinstallation: nginx + PHP + Redis + en Go-daemon + ett riktigt TLS-certifikat. Kör du bara en nod behöver du inte den här — då vill du ha SvxSpot Dashboard i stället. Den auktoritativa steg-för-steg-guiden är repots INSTALL.md; den här sidan är den vänliga översikten.

Behöver jag det här?

  • Du kör en SvxReflector (specifikt ett GeuReflector-bygge, som lägger till reflektor-till-reflektor-trunkning) och vill ha en publik/snabböverblicks-aktivitets-dashboard för den.
  • Du är bekväm med att sätta upp en webbserver med HTTPS. Det här är en flertjänst-installation på en Debian-maskin.
  • Kör du bara en nod (hotspot/repeater), sluta här — använd SvxSpot Dashboard.

Vad du behöver först

Sak Varför
En körande SvxReflector (GeuReflector) på samma maskin R.A.D.A.R. läser dess /status-endpoint (exempelport 8099).
Ett domännamn + TLS-certifikat (Let's Encrypt) Inloggning använder en Secure-cookie — den fungerar inte över oskyddad HTTP.
nginx, PHP 8.4 + FPM (redis, mbstring, openssl, json), Redis 6+ webbserver, kontobackend och konto-/sessionslagring.
En MTA eller SMTP-relä verifiering vid registrering och återställning av lösenord via e-post.
Go 1.24+ för att kompilera live-data-daemonen svxdr.

Installera paketen (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 levererar PHP 8.2; R.A.D.A.R. utvecklas på 8.4. Använd Debian 13, eller sury.org:s PHP-repo, och byt till din faktiska version överallt där du ser 8.4.

Hur datan flödar (så att portarna blir begripliga)

Det absolut vanligaste misstaget är en felmatchad portkedja. Datan flödar:

reflektor /status :8099 → svxdr proxy :8090 (cachar, berikar) → svxdr nodelist :8098 (bygger API:t + live-SSE-ström, läser Redis för nodhändelser) → nginx (HTTPS, reverse-proxar /svxportal/api/ till :8098) → din webbläsare. Konton finns i Redis; PHP-backenden (auth/*.php) pratar med den.

Håll de där numren i linje så "bara fungerar" det mesta av installationen.

Installation (översikt)

Klona repot och följ dess INSTALL.md steg 0–11; de viktiga momenten är:

  1. Hämta koden: git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git
  2. Lägg ut webbfilerna med rsync i /var/www/html/svxportal (ägda av www-data).
  3. Sätt upp en dedikerad Redis-instans på en unix-socket, med lösenord; lägg www-data i gruppen redis.
  4. Lägg till en andra PHP-FPM-pool (svxadmin) som bara används av reflektor-admin-API:t.
  5. Skapa talgruppslist-filen /etc/svxlink/tglist.json (via den medföljande tmpfiles-regeln).
  6. nginx + TLS: installera sajtmallen, kör certbot för ditt värdnamn, aktivera sajten.
  7. Bygg och kör 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

Två configfiler håller inställningarna: auth/config.php (webbackend — Redis-lösenord, e-post, base_url, MQTT) och /etc/svxlink/svxdr.json (daemonen — Redis, de tre portarna, federations-seeds). Kopiera var och en från dess .example och redigera.

Skapa den första administratören

En medföljande CLI skapar det första kontot (och markerar dess e-post som verifierad):

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

Den frågar efter anropssignal, namn, e-post, plats, adminnivå och ett lösenord. Nivåer: 1 = vanlig användare, 2 = admin (konton, noder, certifikat, talgrupper), 3 = superadmin (även reflektor-/MQTT-hemligheter och hantering av andra administratörer). Alla andra registrerar sig själva på sajten och verifierar via e-post.

Använda den

Öppna https://YOUR.HOST.NAME/. Toppnavigeringen har:

Vy Visar
Nodes Anslutna noder, med en popup när någon pratar.
Reflector clients Sökbar lista över alla anslutna klienter.
Monitor → Nodes / Trunks / Topology Live-övervakning; Topology ritar hela nätverket — din reflektor i mitten, andra reflektorer i en ring, trunk-länkar mellan dem.
TG Monitor Vilka som är på varje talgrupp (SVX-sidan och DMR-sidan).
Lastheard Senaste aktivitet.
CTCSS Table TX/RX-toner per nod, 2 m vs UHF.
Changelog Projektets ändringslogg.

En inbyggd Help-sida (/help.html) har flikar för Portalen, SvxLink, SvxReflector, GeuReflector, AllStar med mera.

Bra att veta / ärliga förbehåll

⚠ Reflektor-admin-sidorna behöver hjälpskript som du skriver själv. Sidorna Admin → Reflector / Certificates / Node-control / MQTT anropar root-ägda sudo-hjälpskript i /usr/local/sbin/ (svxreflector-pty, svxreflector-systemctl, svxreflector-users, svx-mqtt-provision) som inte medföljer — de är specifika för din maskin. Allt annat fungerar utan dem.
  • Inloggningen tappas efter en sida? Du är inte på HTTPS (cookien är Secure) eller så är base_url fel.
  • Tomma live-vyer? svxdr körs inte — kolla systemctl status svxdr och curl http://127.0.0.1:8098/healthz. Reflektorn själv fortsätter fungera oavsett.
  • Inget verifierings-mejl? PHP mail() misslyckas tyst utan en MTA — konfigurera ett SMTP-relä.
  • Admin-API:t säger "exec disabled"? Lägg aldrig till exec i PHP:s disable_functions; portalen behöver det.

Felsökning

Symptom Kolla
500 på någon auth/*.php /var/log/nginx/svxportal-error.log och journalctl -u php8.4-fpm — oftast fel Redis-lösenord, php-redis saknas, eller www-data inte i gruppen redis.
"Not connected" / tomma vyer svxdr nere → inget på 127.0.0.1:8098.
Portar Bekräfta kedjan 8099 → 8090 → 8098 → nginx i /etc/svxlink/svxdr.json och nginx-sajten.

Se även

  • SvxSpot Dashboard — dashboarden för en enskild nod (mycket enklare).
  • Hamradio — SvxReflector och resten av howto:erna för digital röst.
  • Författare: SA7AUX <bjorne@sa7aux.se>. AGPL-3.0-or-later.