← All articles
INFRASTRUCTURE Dashy: The Most Customizable Self-Hosted Dashboard 2026-02-09 · dashy · dashboard · homepage

Dashy: The Most Customizable Self-Hosted Dashboard

Infrastructure 2026-02-09 dashy dashboard homepage organization infrastructure

Every self-hoster eventually reaches the point where they can't remember all the URLs and ports for their services. Was Jellyfin on port 8096 or 8920? Is Grafana at /grafana or its own subdomain? You end up with a text file of bookmarks, or worse, you just memorize everything until you forget.

Dashy is a self-hosted dashboard that gives you a single page with links to all your services, organized however you want. But unlike simpler dashboards, Dashy goes deep on customization: themes, widgets, status indicators, multiple pages, authentication, and a visual editor that generates YAML configuration for you.

Why a Dashboard?

If you run three services, you don't need a dashboard. But once you're managing ten, twenty, or more, a central landing page becomes genuinely useful:

Dashy vs. Homepage vs. Homarr

These three are the most popular self-hosted dashboards in 2026. They all solve the same core problem but with very different approaches.

Feature Dashy Homepage Homarr
Configuration YAML file YAML files Web UI (database)
Customization depth Extremely high Moderate High
Widgets 50+ built-in Service-specific integrations Widget-based
Themes 50+ built-in, custom CSS Limited (CSS overrides) Theme system
Multi-page Yes No (single page) Yes (boards)
Visual editor Yes (generates YAML) No Yes (native)
Status checking Built-in Via integrations Built-in
Authentication Built-in (multiple methods) None (relies on reverse proxy) Built-in
Resource usage ~80 MB RAM ~30 MB RAM ~150 MB RAM
Search Built-in with keyboard shortcut Built-in Built-in
Config as code Native (YAML) Native (YAML) Export/import

Choose Dashy when

Choose Homepage when

Choose Homarr when

The honest take: Homepage has the best service integrations by far — it can show your Sonarr download queue, Plex active streams, and Pi-hole stats in real-time. Dashy has the most visual customization options. Homarr has the easiest initial setup. Pick based on what matters most to you.

Installation

services:
  dashy:
    image: lissy93/dashy:latest
    container_name: dashy
    ports:
      - "4000:8080"
    volumes:
      - ./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

Create a minimal conf.yml to start:

pageInfo:
  title: My Homelab
  description: Dashboard
  navLinks:
    - title: GitHub
      path: https://github.com

sections:
  - name: Media
    icon: fas fa-film
    items:
      - title: Jellyfin
        url: http://192.168.1.100:8096
        icon: hl-jellyfin
      - title: Sonarr
        url: http://192.168.1.100:8989
        icon: hl-sonarr

  - name: Infrastructure
    icon: fas fa-server
    items:
      - title: Portainer
        url: http://192.168.1.100:9000
        icon: hl-portainer
      - title: Traefik
        url: http://192.168.1.100:8080
        icon: hl-traefik
docker compose up -d

Visit http://your-server:4000 and you'll see your dashboard.

YAML Configuration Deep Dive

Dashy's configuration is a single YAML file that controls everything. This is both its greatest strength (version-controllable, reproducible, portable) and its biggest learning curve.

Page settings

pageInfo:
  title: Homelab
  description: My self-hosted services
  logo: /web-icons/dashy.png
  navLinks:
    - title: Docs
      path: /docs
  footerText: ''

Sections and items

Sections are groups of service links. Each item has at minimum a title and URL:

sections:
  - name: Monitoring
    icon: fas fa-chart-line
    displayData:
      sortBy: alphabetical
      collapsed: false
      cols: 2
    items:
      - title: Grafana
        description: Metrics and dashboards
        url: https://grafana.mydomain.com
        icon: hl-grafana
        target: newtab
        statusCheck: true
        statusCheckUrl: https://grafana.mydomain.com/api/health
      - title: Uptime Kuma
        description: Uptime monitoring
        url: https://uptime.mydomain.com
        icon: hl-uptime-kuma
        statusCheck: true

Icons

Dashy supports multiple icon sources, which is one of its strongest features:

The homelab icon pack covers most popular self-hosted apps out of the box.

Layout control

You can control how sections display:

sections:
  - name: Wide Section
    displayData:
      cols: 3           # Number of columns for items
      rows: 2           # Number of rows before scrolling
      itemSize: large    # small, medium, large
      sectionLayout: grid  # grid or auto

  - name: Compact Section
    displayData:
      cols: 1
      itemSize: small
      collapsed: true    # Start collapsed, click to expand

Widgets

Dashy includes over 50 widgets for displaying external data. These go beyond just links to your services:

sections:
  - name: System Info
    widgets:
      - type: gl-current-cpu
        options:
          hostname: http://192.168.1.100:61208
      - type: gl-current-mem
        options:
          hostname: http://192.168.1.100:61208

  - name: Weather
    widgets:
      - type: weather
        options:
          apiKey: your-openweathermap-key
          city: Seattle

  - name: Network
    widgets:
      - type: pi-hole-stats
        options:
          hostname: http://192.168.1.1:80

Widget categories include:

The Glances-based system widgets are particularly useful. Install Glances on your server and Dashy pulls live CPU, RAM, and disk data without needing a separate monitoring setup.

Gotcha: Some widgets require external API keys (weather, finance). The system monitoring widgets require Glances to be running on the target machine. Don't expect all 50+ widgets to work out of the box without some setup.

Themes and Appearance

Dashy ships with over 50 built-in themes, from clean minimalist to cyberpunk neon. Switch themes in the UI or set one in config:

appConfig:
  theme: dracula
  # Or: material-dark, nord, matrix, one-dark, lissy, colorful, etc.
  customCss: |
    .item {
      border-radius: 12px;
    }

You can also create entirely custom themes with CSS. Dashy exposes CSS variables for every color, so you can restyle it without fighting the cascade:

appConfig:
  cssThemes:
    - name: My Theme
      styles: >
        --background: #1a1a2e;
        --primary: #16213e;
        --accent: #e94560;

Status Checking

One of Dashy's most practical features is built-in status checking for your services:

items:
  - title: Nextcloud
    url: https://cloud.mydomain.com
    statusCheck: true
    # Optional: use a different URL for the health check
    statusCheckUrl: https://cloud.mydomain.com/status.php
    statusCheckAcceptCodes: '200,302'
    statusCheckMaxRedirects: 3

When enabled, each item shows a small colored indicator: green for up, red for down, orange for slow response. This turns your dashboard into a basic uptime monitor.

Limitations to know about:

Authentication

Dashy has built-in authentication, which is unusual for a dashboard:

appConfig:
  auth:
    users:
      - user: admin
        hash: YOUR_SHA256_HASH
        type: admin
      - user: guest
        hash: GUEST_HASH
        type: normal
    enableGuestAccess: false

Generate a password hash:

echo -n 'your-password' | sha256sum

Authentication methods include:

For most homelabs, header-based auth via your reverse proxy is the better approach. Dashy's built-in auth is fine for basic access control, but it's not a substitute for a real auth layer if you're exposing your dashboard to the internet.

The Visual Editor

If writing YAML from scratch feels tedious, Dashy has a visual configuration editor built into the UI. Click the edit button and you get a form-based interface for adding sections, items, and widgets. The editor generates valid YAML that you can export and commit to version control.

This is a reasonable middle ground: start with the visual editor, then fine-tune the YAML directly once you're comfortable. The visual editor doesn't expose every option, but it covers the most common ones.

Multi-Page Support

Dashy supports multiple pages for organizing large numbers of services:

pages:
  - name: Home
    path: /
  - name: Media
    path: /media
  - name: Development
    path: /dev

sections:
  # Sections for the home page
  - name: Quick Links
    page: /
    items: [...]

  # Sections for the media page
  - name: Streaming
    page: /media
    items: [...]

This is useful if you run 30+ services and don't want them all on one page. Navigation between pages appears in the top bar.

Practical Tips

Keep your config in version control

Since Dashy's config is a single YAML file, it's easy to version-control:

# In your compose directory
git init
git add conf.yml docker-compose.yml
git commit -m "initial dashboard config"

This gives you rollback capability and a history of how your homelab has evolved.

Use the search feature

Press / or click the search bar to filter items across all sections. This is the fastest way to find a service when your dashboard grows large.

Organize by function, not by server

Group services by what they do (Media, Monitoring, Networking) rather than which server they run on. When you're looking for Sonarr, you think "media" not "server-02."

Reasonable defaults

Don't over-configure on day one. Start with sections and links, get comfortable, then gradually add widgets, status checks, and theme customization. Dashy's depth of options can lead to configuration paralysis if you try to set everything up at once.

The Honest Trade-offs

Dashy is great if:

Dashy is not ideal if:

Performance note: Dashy is a Vue.js application that can feel sluggish on first load, especially with many widgets enabled. Once loaded, it's responsive. But on a Raspberry Pi with a complex config, expect a 3-5 second initial load time.

Bottom line: Dashy is the dashboard for people who want full control over every pixel. If you enjoy customizing your setup and want a dashboard that looks exactly how you imagine it, Dashy delivers. If you just want a quick service directory with live data from your apps, Homepage might be the more practical choice.

Resources