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:latest4 container_name: homepage5 restart: unless-stopped6 volumes: 7 - ./config:/app/config8 - /var/run/docker.sock:/var/run/docker.sock:ro9 ports: 10 - "3000:3000"11 environment: 12 - PUID=100013 - PGID=100003Configuring 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.yaml2- Infrastructure:3 - Traefik:4 href: https://traefik.mydomain.com5 description: Reverse Proxy6 icon: traefik7 widget: 8 type: traefik9 url: http://traefik:80801011 - Uptime Kuma:12 href: https://status.mydomain.com13 description: Uptime Monitoring14 icon: uptime-kuma15 widget: 16 type: uptimekuma17 url: http://uptime-kuma:300118 slug: default1920- Media:21 - Jellyfin:22 href: https://media.mydomain.com23 description: Media Server24 icon: jellyfin25 widget: 26 type: jellyfin27 url: http://jellyfin:809628 key: your-api-keyEnable 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.