Hamradio/svxspot dashboard
A beginner's guide to SvxSpot Dashboard: a small web page you install on your SvxLink node (a Raspberry Pi hotspot or an FM repeater) that shows what the node is doing and lets you change talkgroup, edit the config, and more — from a phone or PC. One .deb sets up the whole web stack for you.
http://svxspot.local/ that shows live status / last-heard / current talkgroup and gives you one-click TG switching, a DTMF keypad, and editors for svxlink.conf, EchoLink, RF and audio — plus Wi-Fi setup and reboot/shutdown buttons.
Do I need this?
- You run a SvxLink node — a "SvxSpot" hotspot or an FM repeater — and you want to see and control it from a browser instead of SSH and a text editor.
- It installs on the same box as SvxLink (a Raspberry Pi or any Debian machine).
- Optional extra: let an external portal switch your talkgroup over MQTT (handy for a club's control panel). Off by default — a plain LAN dashboard needs none of it.
What you need first
- A SvxLink node running on Debian 12/13 or Raspberry Pi OS (bookworm/trixie), on a Pi 3/4/5, Pi Zero 2 W, or any Debian box.
- SvxLink installed and running with
/etc/svxlink/svxlink.conf(packagesvxlink-server). - For one-click talkgroup / DTMF control from the web, this line in your logic section of
svxlink.conf:
DTMF_CTRL_PTY=/var/lib/svxlink/dtmf_svx
- (Optional, MQTT only) broker host, port (usually 8883) and a username/password — only if you want remote portal control.
You do not install nginx or PHP yourself — the package pulls them in and configures them for you.
Install
Easiest — the one-line installer (downloads the newest release and installs it; apt fetches nginx/PHP automatically):
curl -fsSL https://git.sa7aux.se/bjorne/svxspot-dashboard/raw/branch/main/install.sh | sudo bash
Or install a .deb you copied over:
sudo apt install ./svxspot-dashboard_<version>_all.deb
svxspot-dashboard_1.0.1_all.deb). The package is architecture-independent (_all) — the same file works on a Pi and on x86-64.What the installer asks you
A normal install pops up a few questions (debconf). Sensible defaults are offered — you can just press Enter:
| Question | What to enter |
|---|---|
| Node callsign | Auto-detected from svxlink.conf. Accept it.
|
| Dashboard admin user | Login name for the control pages. Default admin.
|
| Admin password | Type one, or leave empty to have a random 16-character password generated and printed once at the end — write it down. |
| Enable MQTT remote control? | Default no. Say yes only if a portal will control this node; then it asks for broker host / username / password. |
What it sets up for you
The installer does all the plumbing (and it's safe to re-run with sudo dpkg-reconfigure svxspot-dashboard):
- installs and configures nginx (a site on port 80) and php-fpm;
- creates the admin login (bcrypt
htpasswd); - installs tightly-scoped sudo rules so the web user can save config and restart SvxLink — and nothing else;
- adds the web user to the
audio, tty, dialout, svxlinkgroups; - stages the optional MQTT agent (a systemd service) — enabled only if you turned MQTT on.
At the end it prints a banner with your dashboard URL, admin user, and (if generated) the password.
Open it
- In a browser on the same network go to
http://svxspot.local/(orhttp://<node-ip>/if the.localname doesn't resolve). - The status page needs no login. The control pages (TG, config editor, power, Wi-Fi, …) ask for the admin user/password you set.
svxspot / raspberry and dashboard admin / svxspot. Change both immediately (see below).What's on the dashboard
| Page | What it does |
|---|---|
| Start / Status | Live status, last-heard stations, current talkgroup, quick-button keypad. (No login.) |
| TG + DTMF keypad | Switch talkgroup with one tap; send raw DTMF. |
| Config | Edit svxlink.conf in the browser with help text; every save makes a timestamped backup and restarts SvxLink.
|
| EchoLink · RF (SA818) · Audio | Editors for EchoLink, radio-module frequency/squelch, and audio levels. |
| Wi-Fi / Network | Join a Wi-Fi network / set networking. |
| Power | Reboot, shut down, or restart SvxLink. |
| Remote Control (MQTT) | Turn the optional MQTT agent on/off and set the broker. |
| Node info · Map · Log | Node metadata, map, and the SvxLink log. |
How it controls SvxLink (plain version)
You don't need to know this to use it, but it helps when troubleshooting: the dashboard reads /etc/svxlink/svxlink.conf and /var/log/svxlink to show status, and controls the node by writing DTMF strings (e.g. 91<tg># to switch TG) to the control pipe /var/lib/svxlink/dtmf_svx. Config edits are saved and SvxLink is restarted through the narrow sudo rules. That's it — no database.
Optional: remote control over MQTT
If you enabled MQTT, a small systemd agent (svxnode-mqtt) makes an outbound TLS connection to your broker on port 8883 (nothing to open in your router). An external portal publishes a talkgroup command, and the agent writes the same 91<tg># to the DTMF pipe — exactly what the web TG button does. Enable/disable it from the dashboard's Remote Control page, or re-run sudo dpkg-reconfigure svxspot-dashboard.
Change the admin password
No reconfigure needed — nginx re-reads the file on every request:
sudo htpasswd -B /etc/nginx/svxspot-dashboard.htpasswd admin
(Add -c to start a fresh file with only that user.)
Troubleshooting
| Symptom | Check |
|---|---|
| Page won't load | systemctl status nginx, sudo nginx -t, and ls /etc/nginx/sites-enabled/ (should list svxspot-dashboard). Still broken → sudo dpkg-reconfigure svxspot-dashboard.
|
| 502 Bad Gateway | php-fpm is down → sudo systemctl restart php*-fpm (use your actual version, e.g. php8.4-fpm).
|
| Password refused | sudo htpasswd -cB /etc/nginx/svxspot-dashboard.htpasswd admin (-c recreates it).
|
| Status page empty / no callsign | SvxLink isn't running or has no config → systemctl status svxlink, tail -n 30 /var/log/svxlink.
|
| TG buttons do nothing | Check grep DTMF_CTRL_PTY /etc/svxlink/svxlink.conf and that /var/lib/svxlink/dtmf_svx exists. Then sudo dpkg-reconfigure svxspot-dashboard and restart php-fpm.
|
| “Save” permission error | sudo visudo -cf /etc/sudoers.d/svxspot-dashboard must say "parsed OK".
|
| MQTT stays inactive | journalctl -u svxnode-mqtt -n 30 --no-pager — usually wrong password, wrong host, or port 8883 firewalled.
|
php8.4-fpm but your box might run php8.2-fpm. Substitute your own: ls /run/php/php*-fpm.sock.Removing / starting over
- Keep your settings:
sudo apt remove svxspot-dashboard. - Wipe everything (incl. MQTT credentials):
sudo apt purge svxspot-dashboard, then reinstall.
See also
- Hamradio — SvxLink and the rest of the digital-voice how-tos.
- Author: SA7AUX <bjorne@sa7aux.se>. GPL-3.0-or-later. Based on SVXLink-Dashboard-V2 / Guru-RF.