Once you are running more than a handful of self-hosted services, remembering which service runs on which port becomes a real problem. Is Grafana on port 3000 or 3001? What was the URL for that Nextcloud instance again? A self-hosted dashboard solves this by providing a single landing page with organized links to all your services, often with live status indicators, search functionality, and custom theming.

This guide compares the four most popular self-hosted dashboard applications, provides Docker setup instructions for each, and helps you choose the right one for your needs.

Why Use a Dashboard?

  • Service discovery: One bookmark instead of dozens. Especially valuable when onboarding new team members or family members.
  • Status monitoring: At-a-glance view of which services are running and which are down.
  • Organization: Group services by category (media, networking, monitoring, development) for quick access.
  • Custom start page: Replace your browser's default new tab with your service dashboard.

Homer: Simple YAML Configuration

Homer is a minimalist, static dashboard generated from a single YAML configuration file. It has no backend, no database, and no JavaScript framework overhead. The entire dashboard is served as static HTML/CSS/JS files.

Docker Setup

services:
  homer:
    image: b4bz/homer:latest
    container_name: homer
    ports:
      - "8080:8080"
    volumes:
      - ./homer/assets:/www/assets
    environment:
      INIT_ASSETS: 1  # Generate default config on first run
    restart: unless-stopped

Configuration

# homer/assets/config.yml
title: "My Homelab"
subtitle: "Service Dashboard"
logo: "assets/logo.png"

header: true
footer: '<p>Managed with <a href="https://usulnet.com">usulnet</a></p>'

columns: "3"
connectivityCheck: true

theme: default
colors:
  light:
    highlight-primary: "#3367d6"
    highlight-secondary: "#4285f4"
    highlight-hover: "#5a95f5"
    background: "#f5f5f5"
    card-background: "#ffffff"
    text: "#363636"
    text-header: "#ffffff"
    text-title: "#303030"
    text-subtitle: "#424242"
    card-shadow: rgba(0, 0, 0, 0.1)
  dark:
    highlight-primary: "#3367d6"
    highlight-secondary: "#4285f4"
    highlight-hover: "#5a95f5"
    background: "#131313"
    card-background: "#2b2b2b"
    text: "#eaeaea"
    text-header: "#ffffff"
    text-title: "#fafafa"
    text-subtitle: "#f5f5f5"
    card-shadow: rgba(0, 0, 0, 0.4)

services:
  - name: "Infrastructure"
    icon: "fas fa-server"
    items:
      - name: "usulnet"
        subtitle: "Docker Management"
        url: "https://usulnet.local"
        icon: "fas fa-docker"
        tag: "management"
        tagstyle: "is-success"

      - name: "Traefik"
        subtitle: "Reverse Proxy"
        url: "https://traefik.local"
        icon: "fas fa-route"
        tag: "networking"
        tagstyle: "is-info"

      - name: "Pi-hole"
        subtitle: "DNS Ad Blocking"
        url: "http://pihole.local/admin"
        icon: "fas fa-shield-alt"
        type: "PiHole"

  - name: "Monitoring"
    icon: "fas fa-chart-line"
    items:
      - name: "Grafana"
        subtitle: "Dashboards & Metrics"
        url: "https://grafana.local"
        icon: "fas fa-chart-area"

      - name: "Prometheus"
        subtitle: "Metrics Collection"
        url: "http://prometheus.local:9090"
        icon: "fas fa-database"

  - name: "Media"
    icon: "fas fa-film"
    items:
      - name: "Jellyfin"
        subtitle: "Media Server"
        url: "http://jellyfin.local:8096"
        icon: "fas fa-play-circle"

Strengths: Extremely lightweight (serves static files only), fast load times, simple YAML configuration, dark/light theme support, Pi-hole and Ping status checks built in.

Limitations: No drag-and-drop, requires manual YAML editing, no built-in authentication, limited widget support.

Homarr: Drag-and-Drop Simplicity

Homarr provides a modern, widget-based dashboard with a drag-and-drop editor. It integrates directly with various services (Sonarr, Radarr, qBittorrent, etc.) to display live data on the dashboard.

Docker Setup

services:
  homarr:
    image: ghcr.io/homarr-dev/homarr:latest
    container_name: homarr
    ports:
      - "7575:7575"
    volumes:
      - homarr_data:/appdata
      - /var/run/docker.sock:/var/run/docker.sock:ro  # Optional: Docker integration
    environment:
      TZ: America/New_York
    restart: unless-stopped

volumes:
  homarr_data:

After starting Homarr, open http://your-server:7575 and use the visual editor to add apps, widgets, and categories. No YAML editing required.

Key Features

  • Visual editor: Drag-and-drop interface for arranging apps and widgets
  • Service integrations: Live data from Sonarr, Radarr, Lidarr, qBittorrent, Deluge, Overseerr, and many more
  • Docker integration: Auto-discover running containers and add them to the dashboard
  • Weather widget: Built-in weather display
  • Search bar: Quick search across all configured services
  • Multi-user: User accounts with individual dashboard configurations

Strengths: No configuration files to edit, extensive service integrations, Docker auto-discovery, polished UI.

Limitations: Heavier resource usage than Homer, requires Docker socket access for auto-discovery, newer project with more rapid API changes.

Dashy: Feature-Rich Powerhouse

Dashy is the most feature-rich dashboard option, offering YAML or UI-based configuration, extensive theming, status checks, authentication, and a widget marketplace.

Docker Setup

services:
  dashy:
    image: lissy93/dashy:latest
    container_name: dashy
    ports:
      - "4000:8080"
    volumes:
      - ./dashy/conf.yml:/app/user-data/conf.yml
    environment:
      NODE_ENV: production
    healthcheck:
      test: ['CMD', 'node', '/app/services/healthcheck']
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
    restart: unless-stopped

Configuration

# dashy/conf.yml
pageInfo:
  title: Homelab Dashboard
  description: All services in one place
  navLinks:
    - title: usulnet
      path: https://usulnet.local
    - title: GitHub
      path: https://github.com

appConfig:
  theme: nord-frost
  layout: auto
  iconSize: medium
  language: en
  statusCheck: true
  statusCheckInterval: 300
  webSearch:
    searchEngine: duckduckgo
    openingMethod: newtab
  auth:
    enableGuestAccess: false
    users:
      - user: admin
        hash: "$2b$10$..."  # bcrypt hash
        type: admin

sections:
  - name: Infrastructure
    icon: fas fa-server
    displayData:
      sortBy: default
      cols: 2
    items:
      - title: usulnet
        description: Docker Management Platform
        url: https://usulnet.local
        icon: hl-docker
        statusCheck: true
        statusCheckUrl: https://usulnet.local/api/health

      - title: Traefik
        description: Reverse Proxy & SSL
        url: https://traefik.local
        icon: hl-traefik
        statusCheck: true

      - title: Uptime Kuma
        description: Service Monitoring
        url: http://uptime.local:3001
        icon: hl-uptime-kuma
        statusCheck: true

  - name: Development
    icon: fas fa-code
    items:
      - title: Gitea
        description: Git Hosting
        url: https://git.local
        icon: hl-gitea
        statusCheck: true

      - title: Drone CI
        description: Continuous Integration
        url: https://ci.local
        icon: hl-drone

  - name: Media & Entertainment
    icon: fas fa-photo-video
    items:
      - title: Jellyfin
        description: Media Streaming
        url: http://jellyfin.local:8096
        icon: hl-jellyfin
        statusCheck: true

  - name: Widgets
    icon: fas fa-th
    displayData:
      cols: 2
    widgets:
      - type: clock
        options:
          timeZone: America/New_York
          format: en-US
      - type: system-info

Dashy's Unique Features

  • Status checking: HTTP, TCP, and ICMP health checks for every service with configurable intervals
  • Built-in authentication: Username/password with bcrypt, Keycloak/OIDC support, guest access control
  • 30+ built-in widgets: Clock, weather, system info, RSS feeds, public IP, crypto prices, and more
  • 70+ themes: Pre-built themes including Nord, Dracula, Solarized, Material, and custom CSS support
  • Interactive editor: Edit configuration through the UI without touching YAML files
  • Multi-page support: Create separate dashboard pages for different categories or users
  • Keyboard shortcuts: Navigate entirely with the keyboard

Strengths: Most features of any dashboard, excellent theming, built-in auth, status checks, active development.

Limitations: Higher resource usage, longer initial load time, can be overwhelming to configure.

Heimdall: The Application Launcher

Heimdall focuses on being a simple, elegant application launcher rather than a feature-rich dashboard. It has a clean interface with large, colorful tiles for each service.

Docker Setup

services:
  heimdall:
    image: lscr.io/linuxserver/heimdall:latest
    container_name: heimdall
    environment:
      PUID: 1000
      PGID: 1000
      TZ: America/New_York
    volumes:
      - heimdall_config:/config
    ports:
      - "8090:80"
      - "8443:443"
    restart: unless-stopped

volumes:
  heimdall_config:

Strengths: Beautiful, simple interface, easy to set up, supports "enhanced" apps with live data (Pi-hole stats, etc.).

Limitations: Fewer features than Dashy/Homarr, no YAML configuration (database-based), limited customization, slower development pace.

Feature Comparison

Feature Homer Homarr Dashy Heimdall
Configuration YAML only UI (drag-drop) YAML + UI UI only
Status checks Basic (ping) Yes Advanced (HTTP/TCP/ICMP) Limited
Authentication No Yes Yes (bcrypt, OIDC) No
Docker integration No Yes (auto-discover) No No
Service integrations Pi-hole 20+ (Sonarr, etc.) Widgets Enhanced apps
Theming Basic (CSS vars) Custom colors 70+ themes Background only
Resource usage ~5 MB RAM ~100-200 MB RAM ~80-150 MB RAM ~50-100 MB RAM
ARM64 support Yes Yes Yes Yes
Search Yes Yes Yes (+ web search) Yes
Multi-user No Yes Yes No

Recommendations

  • Choose Homer if you want the lightest possible dashboard, prefer managing configuration as code (YAML in Git), and do not need authentication or service integrations.
  • Choose Homarr if you want a visual editor with drag-and-drop, Docker auto-discovery, and deep integrations with media management tools (Sonarr, Radarr, etc.).
  • Choose Dashy if you want the most features, built-in authentication, extensive theming, and status monitoring for all services.
  • Choose Heimdall if you want a beautiful, simple application launcher without the complexity of configuration files.
Tip: Dashboards complement but do not replace Docker management tools. A dashboard like Homer or Dashy provides quick access links and status checks. For actual container management, lifecycle operations, and monitoring, use a dedicated platform like usulnet alongside your dashboard.

Note: All four dashboards support running behind a reverse proxy with SSL. If you already have Traefik or nginx configured for your other services, add your dashboard as another service with its own subdomain or path.