Minimal, open source home server dashboard
A small dashboard for any home server.
armdash is a single static binary that shows what your home server and your FRITZ!Box smart home are doing, in around 20 MB of memory. Every number is read from Prometheus, so every number on screen has history behind it. Install the package, open the page, and set up the rest in the browser.
Why not just Grafana?
Grafana is the obvious answer and a good one. But it is a large thing to run permanently on a 12 W board, it is not packaged for aarch64 in Arch Linux ARM or the AUR, and most of it goes unused when all you want is a handful of charts and a plan of your flat.
armdash is the small version of that. Go with the standard library only, server-rendered pages with htmx, Bulma and uPlot embedded in the binary. Nothing to install next to it, nothing to update behind its back.
Measured on the Radxa Dragon Q6A it was written for, it idles at around 20 MB of memory and under 0.1 % of one core. That leaves a small ARM board free for everything else, and it runs just as well on an x86 box.
- Installone static binary
- Memoryaround 20 MB
- CPU at idleunder 0.1 % of a core
- Databasenone, Prometheus keeps history
- Runtime dependenciesnone
- Go modulesstandard library only
- Node toolchainnever
- Runs onLinux, FreeBSD, macOS
- Architecturesx86, ARM, RISC-V
What it shows
One tab per system. Each one is compiled in and shown or hidden on the settings page.
Server metrics
CPU, memory, filesystems, temperatures, load and uptime from node_exporter. An overview of the current values and a chart per metric, from the last hour to the last year, each reloading on its own while it is open. The thermals chart names its lines, so a warm board tells you which part is warm.
FRITZ!Box smart home
Where the power goes, what is on, which window is open. Plugs, thermostats, sensors, contacts and bulbs, charted per device, plus the internet traffic. Read from the box itself over AHA or the REST API, so there is no exporter to run.
Your flat, to scale
Upload the .sh3d file straight from SweetHome3D: walls, rooms,
doors, windows and furniture are drawn from it. An SVG or a photo of the plan
works too. Press Edit and drag each sensor to where it sits.
The rest of the server
Put your wiki, a Grafana or the router in the navbar. Each one opens in a frame, through the built-in reverse proxy, or in a new tab, from a few lines of configuration.
Set up in the browser
The first visit creates the login, then the Settings page takes Prometheus, the FRITZ!Box and the navbar links, applied without a restart. A status box says what is still missing. Env files still work and win over the page.
Open to look, locked to change
The dashboards stay open to your LAN, like a display on the wall. Uploading a plan, placing devices and opening Settings need the one owner login: a PBKDF2 hash, server-side sessions and failed logins limited per address.
A look around
Real pages, reading a real FRITZ!Box and a real Prometheus. Click one for the full size.
How it fits together
armdash keeps no history of its own. Prometheus scrapes node_exporter and
armdash's /metrics, and armdash reads Prometheus back to draw the
pages. Both exporters are packaged by the major distributions on ARM and x86
alike, so none of it needs containers.
A Compose stack is there if you prefer them.
Install
Every release ships static binaries for Linux on amd64, arm64, armv7 and riscv64,
and for FreeBSD and macOS on amd64 and arm64, plus .deb,
.rpm and Arch packages for Linux, all built from the same commit.
# brings Prometheus and node_exporter along $ sudo pacman -U armdash_*_linux_arm64.pkg.tar.zst # scrape node_exporter and armdash $ sudo cp /usr/share/armdash/prometheus.yml.example /etc/prometheus/prometheus.yml # PROMETHEUS_ARGS="--storage.tsdb.retention.time=10y" $ sudoedit /etc/conf.d/prometheus $ sudo systemctl enable --now prometheus prometheus-node-exporter armdash # then create the login and fill in the rest $ xdg-open http://homeserver:9494/
The package brings a hardened systemd unit. It runs as its own unprivileged user on a read-only filesystem, with one writable directory for the settings, the uploaded floor plan and device positions. Ports 80 and 443 work without root.
It brings Prometheus and node_exporter along. The example configuration
scrapes both, and the flag keeps ten years of history instead of 15 days.
That is Arch: Debian and Fedora install with apt or
dnf install ./ and take the flag in
/etc/default/prometheus. The
install guide
has every step.
Point it at a certificate and it serves HTTPS, with the plain port redirecting there.
armdash is a LAN tool. Keep it on your home network and do not forward it to the internet.