Hamradio/reflector dashboard/sv
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.

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
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:
- Hämta koden:
git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git - Lägg ut webbfilerna med
rsynci/var/www/html/svxportal(ägda avwww-data). - Sätt upp en dedikerad Redis-instans på en unix-socket, med lösenord; lägg
www-datai gruppenredis. - Lägg till en andra PHP-FPM-pool (
svxadmin) som bara används av reflektor-admin-API:t. - Skapa talgruppslist-filen
/etc/svxlink/tglist.json(via den medföljande tmpfiles-regeln). - nginx + TLS: installera sajtmallen, kör
certbotför ditt värdnamn, aktivera sajten. - 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
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å ärbase_urlfel. - Tomma live-vyer?
svxdrkörs inte — kollasystemctl status svxdrochcurl 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
execi PHP:sdisable_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.