You know the drill. Immich on one port, n8n on another, Grafana buried behind a bookmark you made six months ago, and the staging WordPress URL living only in your head. You could keep a messy browser favorites folder — or you could give the homelab (or the client's small stack) a front door that actually looks intentional.
Homer is the boring-in-the-best-way answer. Bastien Wirtz built a static homepage for your server: one YAML file lists your links, icons, and groups; the browser gets a fast dashboard with search, themes, and optional "smart cards" that pull live status from the apps behind the links. ~12k GitHub stars, Apache 2.0, and almost no moving parts — which is why it shows up in every homelab thread right next to Portainer and Uptime Kuma.
What it actually does
Homer is not a portal with logins, RBAC, and a PostgreSQL dependency. It is HTML and JavaScript served over HTTP, configured by assets/config.yml. You define services (title, URL, icon, subtitle), sort them into groups, split them across multiple pages if you want "Production" vs "Lab", and ship.
The UX bits people actually use:
- Fuzzy search — hit
/, type three letters, jump to the right tile without scrolling a wall of icons. - PWA install — pin it like an app on your phone; handy when your services are VPN-only.
- Smart cards — custom integrations that show more than a static link (disk space, download counts, docker stats, whatever someone wrote a card for). Great when you want a glanceable health strip without opening five tabs.
- Theming — dark mode, custom CSS, logos and backgrounds so the page does not scream "default Docker dashboard."
It will not authenticate users for you. Put Homer behind your reverse proxy, Authelia, or VPN the way you should for anything that maps your internal infrastructure. The value is clarity, not perimeter security.
Why self-host a homepage?
One source of truth for your stack. When three people maintain the same client environment, "where is the backup UI?" stops being a Slack archaeology project. Edit YAML, reload, done.
Almost free to run. No database, no background workers. A tiny container on the same VPS as your apps, or a static zip behind nginx. Updates are pull a new image or drop a new release tarball — not migrate a schema.
Works offline from the heavy apps. If Plex or your wiki is down for maintenance, Homer itself often still loads because it is just files. Your links might 502 when clicked, but the directory of what you run stays visible.
Complements monitoring. Pair Homer with something like Uptime Kuma or Gatus: monitoring tells you what failed; Homer tells humans where everything lives when nothing has failed yet.
What running it takes
Docker is the usual path — image b4bz/homer, port 8080, bind-mount /www/assets so your config and icons survive container recreation:
docker run -d --name homer -p 8080:8080 \
--mount type=bind,source=/path/to/homer/assets,target=/www/assets \
--restart=unless-stopped b4bz/homer:latest
Match the container user (default uid/gid 1000) to permissions on that assets folder, or Homer cannot write the sample config on first boot. Put Caddy or nginx in front for HTTPS; set SUBFOLDER if you host at /homer instead of the root.
No Docker? Grab the release zip from GitHub, rename config.yml.dist to config.yml, point any static file server at it. Homer explicitly will not work from file:// — you need HTTP, which is fine because you were going to terminate TLS anyway.
Resource use is negligible (64–128 MB RAM is plenty). The maintenance cost is editing YAML when you add a service — which is either a feature (git-tracked infra docs) or a chore (remember to update Homer when you spin up container #47). Most teams batch updates weekly.
Who it's for (and who should skip it)
Good fit: homelabbers, agencies with a handful of client stacks, anyone running Docker Compose on a Canadian VPS who tired of emailing "here are the links again," teams that want a pretty launchpad without adopting a full ITSM portal.
Maybe skip it: if you need per-user dashboards, SSO-enforced tiles, or deep CMDB integration — Homer is a link board with flair, not ServiceNow. If you only run one app, a browser bookmark is simpler. If you will not protect the page behind auth, do not publish internal admin URLs to the public internet just because Homer made them pretty.
Hosting it in Canada
We drop Homer on Canadian Docker hosting all the time as the first tab in the browser profile for a managed stack — TLS, backups on the assets volume, and YAML checked into the client's private repo so the dashboard matches reality.
Tell us what services you are linking if you want help wiring smart cards, subpaths, or a homer + monitoring pair on the same VPS. It is a small container; the win is everyone knowing where to click.