Hamradio/reflector dashboard/pl
Przewodnik po konfiguracji R.A.D.A.R. (Reflector Activity Dashboard And Reporting): panel webowy pokazujący na żywo, kto jest połączony z twoim SvxReflectorem, kto mówi i jak sieć jest połączona — z kontami użytkowników, listami talkgrup i narzędziami administracyjnymi.
INSTALL.md repo; ta strona to przyjazne podsumowanie.
Czy tego potrzebuję?
- Prowadzisz SvxReflector (konkretnie build GeuReflector, który dodaje trunking reflektor-do-reflektora) i chcesz dla niego publiczny panel aktywności na pierwszy rzut oka.
- Radzisz sobie z konfiguracją serwera webowego z HTTPS. To instalacja wielu usług na maszynie Debian.
- Jeśli masz tylko węzeł (hotspot/przemiennik), zatrzymaj się tu — użyj SvxSpot Dashboard.
Czego potrzebujesz najpierw
| Rzecz | Po co |
|---|---|
| Działający SvxReflector (GeuReflector) na tej samej maszynie | R.A.D.A.R. czyta jego endpoint /status (przykładowy port 8099).
|
| Nazwa domeny + certyfikat TLS (Let's Encrypt) | Logowanie używa ciasteczka Secure — nie działa po zwykłym HTTP.
|
| nginx, PHP 8.4 + FPM (redis, mbstring, openssl, json), Redis 6+ | serwer web, backend kont i magazyn kont/sesji. |
| MTA lub przekaźnik SMTP | weryfikacja rejestracji i e-mail resetu hasła. |
| Go 1.24+ | do kompilacji demona danych na żywo svxdr.
|
Zainstaluj pakiety (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, wstaw swoją rzeczywistą wersję.
Jak płyną dane (żeby porty miały sens)
Zdecydowanie najczęstszy błąd konfiguracji to niezgodny łańcuch portów. Dane płyną:
reflektor /status :8099 → svxdr proxy :8090 (buforuje, wzbogaca) → svxdr nodelist :8098 (buduje API + strumień SSE na żywo, czyta Redis dla zdarzeń węzłów) → nginx (HTTPS, reverse-proxy /svxportal/api/ na :8098) → twoja przeglądarka. Konta żyją w Redis; backend PHP (auth/*.php) z nim rozmawia.
Trzymaj te numery zgodne, a większość instalacji „po prostu działa”.
Instalacja (przegląd)
Sklonuj repo i wykonaj jego kroki 0–11 z INSTALL.md; kluczowe ruchy to:
- Pobierz kod:
git clone https://git.sa7aux.se/bjorne/reflector-dashboard.git - Wdróż pliki web przez
rsyncdo/var/www/html/svxportal(właścicielwww-data). - Postaw dedykowany Redis na gnieździe unix, z hasłem; dodaj
www-datado grupyredis. - Dodaj drugą pulę PHP-FPM (
svxadmin) używaną tylko przez API administracji reflektora. - Utwórz plik listy talkgrup
/etc/svxlink/tglist.json(przez dołączoną regułę tmpfiles). - nginx + TLS: zainstaluj szablon strony, uruchom
certbotdla swojej nazwy hosta, włącz stronę. - Zbuduj i uruchom
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
Dwa pliki konfiguracyjne trzymają ustawienia: auth/config.php (backend web — hasło Redis, poczta, base_url, MQTT) i /etc/svxlink/svxdr.json (demon — Redis, trzy porty, seedy federacji). Skopiuj każdy z jego .example i edytuj.
Utworzenie pierwszego administratora
Dołączone CLI tworzy pierwsze konto (i oznacza jego e-mail jako zweryfikowany):
cd /var/www/html/svxportal sudo -u www-data php svx-mkadmin.php
Pyta o znak, imię, e-mail, lokalizację, poziom admina i hasło. Poziomy: 1 = zwykły użytkownik, 2 = admin (konta, węzły, certyfikaty, talkgrupy), 3 = super-admin (także sekrety reflektora/MQTT i zarządzanie innymi adminami). Pozostali rejestrują się sami na stronie i weryfikują przez e-mail.
Użytkowanie
Otwórz https://YOUR.HOST.NAME/. Górna nawigacja ma:
| Widok | Pokazuje |
|---|---|
| Nodes | Połączone węzły, z wyskakującym okienkiem, gdy ktoś mówi. |
| Reflector clients | Przeszukiwalna lista wszystkich połączonych klientów. |
| Monitor → Nodes / Trunks / Topology | Monitor na żywo; Topology rysuje całą sieć — twój reflektor w centrum, inne reflektory w pierścieniu, łącza trunk między nimi. |
| TG Monitor | Kto jest na której talkgrupie (strona SVX i strona DMR). |
| Lastheard | Ostatnia aktywność. |
| CTCSS Table | Tony TX/RX na węzeł, 2 m vs UHF. |
| Changelog | Dziennik zmian projektu. |
Wbudowana strona Help (/help.html) ma zakładki dla Portalu, SvxLink, SvxReflector, GeuReflector, AllStar i więcej.
Warto wiedzieć / uczciwe zastrzeżenia
sudo w /usr/local/sbin/ (svxreflector-pty, svxreflector-systemctl, svxreflector-users, svx-mqtt-provision), które nie są dołączone — są specyficzne dla twojej maszyny. Cała reszta działa bez nich.- Sesja gubi się po jednej stronie? Nie jesteś na HTTPS (ciasteczko jest
Secure) albobase_urljest zły. - Puste widoki na żywo?
svxdrnie działa — sprawdźsystemctl status svxdricurl http://127.0.0.1:8098/healthz. Sam reflektor działa dalej mimo to. - Brak e-maila weryfikacyjnego? PHP
mail()cicho zawodzi bez MTA — skonfiguruj przekaźnik SMTP. - API admina mówi „exec disabled”? Nigdy nie dodawaj
execdodisable_functionsPHP; portal go potrzebuje.
Rozwiązywanie problemów
| Objaw | Sprawdź |
|---|---|
500 na dowolnym auth/*.php |
/var/log/nginx/svxportal-error.log i journalctl -u php8.4-fpm — zwykle złe hasło Redis, brak php-redis, albo www-data nie w grupie redis.
|
| „Not connected” / puste widoki | svxdr padł → nic na 127.0.0.1:8098.
|
| Porty | Potwierdź łańcuch 8099 → 8090 → 8098 → nginx w /etc/svxlink/svxdr.json i na stronie nginx.
|
Zobacz też
- SvxSpot Dashboard — panel dla pojedynczego węzła (dużo prostszy).
- Hamradio — SvxReflector i reszta poradników o głosie cyfrowym.
- Autor: SA7AUX <bjorne@sa7aux.se>. AGPL-3.0-or-later.
