Category
Dashboards and glue: a start page is not monitoring
Two failure modes dominate this category: a beautiful page nobody opens after week three, and a tile grid that was handed root on the host to draw a green dot.
Two ways this goes wrong#
The first is social. A start page that is only pretty gets abandoned inside a month, and the reason is mechanical: if it is not your browser's home page and new tab page, you will not navigate to it, and a dashboard you do not open has no value at all. The single best predictor of a dashboard still being used in six months is whether it replaced the new tab page on every device in the house on day one.
The second is that most dashboard setups quietly introduce the worst privilege problem in a homelab. Every one of these tools offers Docker integration, every guide tells you to mount /var/run/docker.sock, and that socket is root on the host. Anything that can talk to it can start a privileged container that mounts your filesystem. You are handing that to a web app so it can draw a green dot next to a container name.
And a dashboard is not monitoring. It renders when a human loads the page. Nothing in this category will wake you up. That job belongs to Uptime Kuma or Gatus pushing to ntfy, plus Beszel for per-host resources, all of which live in Monitoring.
The default#
Homepage, with a socket proxy, and the config directory in git. It is one container at roughly 110 MB, everything lives in YAML under /app/config, and the layout is reviewable in a pull request. Instead of the socket, run ghcr.io/tecnativa/docker-socket-proxy with CONTAINERS=1, SERVICES=1 and POST=0 and point docker.yaml at it over TCP.
The cost is credentials. Configuring Homepage is mostly minting long-lived read-only API keys for your *arr stack, Proxmox, your router and your UPS, and they sit in services.yaml in cleartext on one host. Scrub before you push that repo anywhere. v2.0.0 in August 2026 finally added a built-in auth gate with password or OIDC, but it applies no group or claim checks of its own and no rate limiting on password attempts, so authorization still belongs at your identity provider and rate limiting at your proxy.
Two exceptions, both common. Someone other than you will maintain it: Homarr, with drag and drop, real accounts and OIDC or LDAP, at a documented 500 MB minimum and a config you cannot diff. You are on a Pi or a crowded VPS, or you want a morning-read page rather than a launcher: Glance at 20 to 30 MB, one YAML file, no database.
The glue half of this category is n8n, which is capable and expensive to operate: ops load 4, roughly 400 MB idle, weekly releases, and a source-available licence. If your automations are mostly wiring MQTT and HTTP together, Node-RED does that in 110 MB under Apache-2.0.
The mistakes#
HOMEPAGE_ALLOWED_HOSTSunset or wrong. The page renders, every widget errors, and it looks like bad API keys. The log prints the host string it saw.- Losing Homarr's
SECRET_ENCRYPTION_KEY. That 64 character hex string encrypts every stored integration token. Restore the database under a different key and the dashboard comes up healthy with every integration silently dead. Keep it in the vault, not only in the compose file on the host you are restoring from. - Following a
ghcr.io/ajnart/homarrtutorial. That repository was archived in June 2026. The 0.x to 1.x path runs through an export tool that only exists in 0.15.10 or later, into a parallel install, never over the top. - Using compose service names in tile URLs. Integrations that hand a URL to your browser emit a name your laptop cannot resolve. Use the LAN IP or a DNS name that resolves everywhere.
- Iterating on a Glance config with a dozen feeds. Every config reload drops all cached widget data and refetches at once, so rate-limited APIs start returning errors that look like broken config. Also run at least v0.8.6, which fixed an
X-Forwarded-Forspoof that bypassed the login rate limit. - Not setting
N8N_ENCRYPTION_KEYexplicitly. n8n generates one into~/.n8non first start. Restore the database without it and every workflow appears, and not a single credential decrypts.
Read next#
The minimum viable monitoring stack is the thing this category is not, and it is the one to read first. Then Uptime Kuma vs Gatus and Beszel vs Netdata to pick the alarm, A security baseline for a home server for the socket, and Reverse proxy and TLS before any of it is reachable from outside.
Every dashboards tool we profile#
Sorted by operational load, lightest commitment first. Every row links to a full profile with the resource numbers, the upgrade traps and the restore path.
| Tool | Ops load | Idle RAM | Licence | Identity | Backup shape |
|---|---|---|---|---|---|
| Glance | 1, Set and forget | 25 MB | AGPL-3.0 | Local accounts only | File copy |
| Homarr | 2, Light | 500 MB | Apache-2.0 | Native OIDC | SQLite backup |
| Homepage | 2, Light | 110 MB | GPL-3.0 | Native OIDC | File copy |
| n8n | 4, Heavy | 400 MB | Sustainable Use License 1.0 (plus n8n Enterprise License for .ee files) | Local accounts only | SQLite backup |
Profiles#
Glance
One Go binary and one YAML file that turns RSS, Reddit, weather and Docker into a start page
ops 2/5 · 500 MBHomarr
Drag-and-drop homelab dashboard with real user accounts and no config files to edit
ops 2/5 · 110 MBHomepage
YAML-configured start page that pulls live status from a hundred-plus self-hosted services
ops 4/5 · 400 MBn8n
Visual workflow automation, self-hostable under a non-OSI fair-code licence
Questions#
Is a dashboard the same thing as monitoring?
No, and conflating them is how outages get missed. A dashboard renders state when a human loads the page. Monitoring evaluates state on a schedule and pushes you a message when it changes, which is the part that matters at 2am. The minimum useful pairing is one checker plus one push target: Uptime Kuma at about 120 MB or Gatus at 25 MB, wired to ntfy. Add Beszel at 40 MB for per-host CPU, memory and disk. Your dashboard can then show the same data without pretending to be the alarm.
Homepage or Homarr?
Homepage if the dashboard config belongs in git next to your compose files: everything is YAML under /app/config, it idles near 110 MB, and there is no admin UI at all. Homarr if someone other than you will add and rearrange tiles: drag and drop, real user accounts, OIDC and LDAP in the box, but the layout lives in a SQLite database you cannot diff and the project documents a 500 MB memory minimum. Note that Homarr's 0.x line was archived in June 2026 and a v2 beta is already public with no release date.
Do I have to mount the Docker socket for container status?
No, and you should not. Mounting /var/run/docker.sock gives the dashboard, and anything that compromises it, the ability to start a privileged container on the host, which is root. Homepage's own documentation says direct socket use is not the recommended method. Run ghcr.io/tecnativa/docker-socket-proxy with CONTAINERS=1, SERVICES=1 and POST=0, point docker.yaml at it over TCP, and you get the container list with no ability to change anything. The same fix applies to Beszel, Dozzle and Portainer.
Why do all my Homepage widgets show errors when the page loads fine?
Almost always HOMEPAGE_ALLOWED_HOSTS. Since v1.0 the API proxy validates the Host header, and a mismatch fails every widget call while the page itself renders normally, which reads exactly like a batch of wrong API keys. The logs print the host string it actually saw; paste that into the comma-separated list. Setting it to * disables the check and is explicitly discouraged. Auth routes under /api/auth/* are exempt, so logins keep working and mislead you further.
Is n8n open source?
No. n8n ships under the Sustainable Use License 1.0, which is not OSI-approved. You may use and modify it for internal business or personal purposes, and redistribute it only free of charge and only non-commercially. Running it for your own company, including making money from the workflows, is permitted; selling it as a hosted service, white-labeling it or removing the branding is not. Separately, any file with .ee. in its name or .ee in its path needs an Enterprise licence, which is where SSO, LDAP and log streaming live.
How much RAM should a dashboard cost?
Far less than the things it displays. Glance idles at 20 to 30 MB as a single Go binary with no database. Homepage sits near 110 MB. Homarr documents a 500 MB minimum because one container runs Node, nginx and a bundled Redis under one entrypoint, and its image alone wants about 600 MB of free disk. If you are on a Raspberry Pi or a 1 GB VPS, that tenfold spread is the whole decision, and Glance is the answer even though it has no drag and drop and no OIDC.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.