Self-Hosting·5 min read·

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.

NB

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.

Dashboard: one entry point config.yml tiles + links Homer / Dashy single static app ping/health links to services gitea/nextcloud/kuma reverse proxy home.example.com one landing page for your whole lab

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:

yaml
title: Home Lab
subtitle: My self-hosted services
# config.yml for Homer
yaml
services:
  - 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: _blank
yaml
services:
  homer:
    image: b4bz/homer:latest
    container_name: homer
    volumes:
      - ./assets:/www/assets
    ports:
      - "127.0.0.1:8080:8080"
    restart: unless-stopped

Mount 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:

yaml
      - name: Nextcloud
        icon: simple-icons/nextcloud
        href: https://cloud.example.com
        ping: https://cloud.example.com/status.php

Tiles 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:

caddyfile
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