Building a Self-Hosted Dashboard With Homer or Dashy
Organize every self-hosted service into one fast landing page using Homer or Dashy, with live health dots, custom widgets, and reverse proxy via Docker.
Netbay Developer Relations
Netbay Engineering
On this page
Once you run three, five, or a dozen self-hosted services, remembering every port, subdomain, and login gets silly. A dashboard turns your scattered apps into a single landing page you open first: a grid of tiles that links to each service, shows live status, and even embeds quick actions or search. Homer and Dashy are the two best lightweight options for exactly this.
The dashboard is the polish that makes a home lab feel finished. Instead of typing several URLs and remembering what runs where, you land on one tidy page with everything linked and a live green or red dot for each service. It also makes it easy to hand the lab to a family member or a colleague without a crash course in your port numbering.
Both are static-ish web apps that run in one container and read a YAML config, which keeps deployment trivial. This guide compares them and shows a working Homer setup on your existing VPS.
Homer vs Dashy
- Homer is a minimalist, dead-simple dashboard. You edit one YAML file, drop in a logo folder, and you have a polished grid. Perfect if you value simplicity.
- Dashy is feature-rich: widgets, multiple views, theming, status checks, and a settings UI. Better if you want knobs without editing YAML all the time.
Both are single containers with no database. I run Homer for pure speed and share the pattern below.
The main differences show up as your lab grows. Dashy's built-in status widgets and settings UI mean less YAML fiddling when you want live health indicators everywhere, while Homer keeps the concept minimal — a tile is just a name, an icon, and a URL. If your dashboard is purely a launchpad, Homer's zero-friction edit loop wins; if you want inline dashboards, widgets, and theming controls, Dashy is the richer choice.
Deploying Homer
Homer reads its config from a mounted YAML file. Create config.yml and launch:
title: Home Lab
subtitle: My self-hosted services
# config.yml for Homerservices:
- name: Infra
items:
- name: Gitea
icon: simple-icons/gitea
href: https://git.example.com
target: _blank
- name: Vaultwarden
icon: simple-icons/bitwarden
href: https://vault.example.com
target: _blank
- name: Uptime Kuma
icon: simple-icons/uptimekuma
href: https://status.example.com
target: _blankservices:
homer:
image: b4bz/homer:latest
container_name: homer
volumes:
- ./assets:/www/assets
ports:
- "127.0.0.1:8080:8080"
restart: unless-stoppedMount your config directory at /www/assets. Put the config.yml and any custom icons or logos inside ./assets.
Because everything is static, editing the dashboard is just editing YAML and refreshing the page, which makes iteration near-instant. Add a service, remove one, or reorder the grid and the change is visible immediately with no build step. That low-friction editing loop is the reason Homer stays pleasant to maintain even as your lab grows.
Customizing Status and Widgets
Homer can render live health per tile by enabling the ping or healthcheck on each service. Add a health field pointing at a status endpoint:
- name: Nextcloud
icon: simple-icons/nextcloud
href: https://cloud.example.com
ping: https://cloud.example.com/status.phpTiles with a working ping show a green or red dot so you can spot downtime from the landing page. Add greeting text, links, or a search box at the top of the config if you want quick navigation.
One nice touch is to include your Uptime Kuma status page as a tile too, so the dashboard becomes the single place you both launch services and check their health. Grouping by function, such as Infra, Media, and Productivity, keeps the grid organized as the number of tiles climbs past a dozen.
Putting It Behind the Proxy
Serve the dashboard over your reverse proxy so it is one subdomain like any other app:
home.example.com {
reverse_proxy 127.0.0.1:8080
encode gzip
}Because Homer is static and stateless, that is the whole deployment — no database, no upgrades beyond pulling the image, and near-zero runtime cost.
Takeaway
A Homer or Dashy dashboard ties all your self-hosted apps into one fast, tidy landing page with live status, so you and anyone you share the lab with always know where to click.
Pair it with your other services on a 1 GB Ubuntu VPS at netbayhosts.in, deployed in under 60 seconds.
Keep reading
Follow along on a real VPS
Deploy Linux in under 60 seconds
These guides are written against Ubuntu, Debian, and RHEL-family images — the same ones on NetBay.
Deploy an instance