Configuration
Environment variables
| Variable | Default | What it does |
|---|---|---|
PORT |
45678 |
HTTP port |
DATA_DIR |
/data |
Where everything is stored (see below) |
MDNS_HOSTNAME |
switchboard.local |
Hostname advertised on the LAN |
MDNS_SERVICE_TYPE |
switchboard |
DNS-SD service type — carries the port automatically for anything that queries it properly |
MDNS_IP / MDNS_INTERFACE |
auto | Force the advertised IP/NIC if auto-detect picks wrong (common on multi-NIC boxes) |
DISABLE_MDNS |
off | Set 1 to turn off discovery entirely |
ADMIN_PASSWORD |
unset | Seeds/overwrites the admin UI’s password on every start. Leave unset to set it once from the UI’s own setup screen instead. |
ALLOWED_NETWORKS |
unset | Replaces Settings → Security’s allowed networks while set: comma-separated ranges or addresses, or any to turn the check off. The way back in if a list ever shuts you out. |
TZ |
unset | The time zone every device’s times are shown in (e.g. Europe/Dublin). Wins over Settings → Clock and time zone; without either, the server takes Home Assistant’s. |
DISABLE_UPDATE_CHECK |
off | Set 1 to stop the server asking GitHub whether a newer Switchboard Server is out (see Settings → About) |
TRUST_PROXY |
unset | Behind a reverse proxy: its address(es), comma-separated (or loopback). The allowed networks then check the address the proxy forwards, not the proxy’s. |
On Unraid
Add Container → Template → point it at this repo’s unraid-template.xml. Set the Data path to wherever you want profiles saved (defaults to /mnt/user/appdata/switchboard-server/data) and apply.
Host networking required. mDNS (how remotes find
switchboard.localautomatically) needs multicast, which doesn’t cross Docker’s default bridge network. Withoutnetwork_mode: host, the admin UI still works fine athttp://<ip>:45678— remotes just can’t auto-discover it, and you’d need to set the host/port by hand in each remote’s firmware config.
Private image?
If this repo is private, GHCR images are private by default too — docker login ghcr.io -u stumarti with a GitHub token (read:packages scope) before pulling. Or make the package public from its GitHub page if you’d rather skip that.
Where data lives
Everything is stored under DATA_DIR (/data in the container): room profiles, _globals.json, viewport layouts, paired devices, the compiled theme, firmware builds (firmware/) battery history (_battery-history.json) and which battery sensors were published to Home Assistant (_ha-published.json). Back up that one folder.