$docker.recipes
·9 min read·Updated February 2026

Building a Beautiful Home Lab Dashboard with Homepage

How to set up Homepage as a central dashboard for all your Docker services — with live widgets, Docker integration, and service health indicators.

homepagedashboardhomelabdocker-compose

01Why You Need a Dashboard

When you're running 15+ self-hosted services, remembering URLs and port numbers becomes tedious. Was Grafana on port 3000 or 3001? Is Gitea at git.mydomain.com or gitea.mydomain.com? A dashboard solves this by giving you a single page with organized links to every service, plus live status widgets that show whether services are healthy. Homepage is my favorite dashboard tool: it's fast, beautiful, and integrates directly with Docker to auto-discover running services. I have it as my browser's new tab page, and it's become the starting point for everything in my home lab.

02Docker Compose Setup

Homepage is a single container with configuration via YAML files:
[docker-compose.yml]
1services:
2 homepage:
3 image: ghcr.io/gethomepage/homepage:latest
4 container_name: homepage
5 restart: unless-stopped
6 volumes:
7 - ./config:/app/config
8 - /var/run/docker.sock:/var/run/docker.sock:ro
9 ports:
10 - "3000:3000"
11 environment:
12 - PUID=1000
13 - PGID=1000

03Configuring Services and Widgets

Homepage's configuration lives in YAML files in the config directory. The services.yaml file defines your service links and widgets:
[services.yaml]
1# config/services.yaml
2- Infrastructure:
3 - Traefik:
4 href: https://traefik.mydomain.com
5 description: Reverse Proxy
6 icon: traefik
7 widget:
8 type: traefik
9 url: http://traefik:8080
10
11 - Uptime Kuma:
12 href: https://status.mydomain.com
13 description: Uptime Monitoring
14 icon: uptime-kuma
15 widget:
16 type: uptimekuma
17 url: http://uptime-kuma:3001
18 slug: default
19
20- Media:
21 - Jellyfin:
22 href: https://media.mydomain.com
23 description: Media Server
24 icon: jellyfin
25 widget:
26 type: jellyfin
27 url: http://jellyfin:8096
28 key: your-api-key

Enable Docker integration in docker.yaml to auto-discover containers. Homepage can show container status, resource usage, and pull service information from Docker labels.

04Docker Auto-Discovery

The most powerful Homepage feature is Docker integration. Instead of manually listing every service, Homepage can discover running containers and display them automatically. Add labels to your existing service containers to control how they appear on the dashboard. Homepage picks them up automatically — no dashboard configuration changes needed when you add or remove services. This turns Homepage into a living document of your infrastructure. New service deployed? It appears on the dashboard. Service removed? It disappears. Combined with the status widgets, it's the quickest way to understand the state of your home lab at a glance. Browse our homelab recipes for Homepage configurations and other dashboard solutions like Heimdall and Dashy.

About the Author

Frank Pegasus

DevOps engineer and self-hosting enthusiast with over a decade of experience running containerized workloads in production. Creator of docker.recipes.