Discover.
Lab 30 Jul 2026 2 min read

Building the Perfect NAS Dashboard with Homepage

Turn a wall of bookmarks into a living control room. Build a gethomepage.dev dashboard with live Docker container cards, resource widgets and a status board that actually updates.

Sten

Senior Editor

Building the Perfect NAS Dashboard with Homepage

Every homelab starts with a browser bookmarks folder. Then the folder grows to 40 links, half of them dead, and you’re typing 192.168.1.50:8123 from memory like a caveman. The upgrade is a proper dashboard — and after trying a dozen of them, Homepage is the one that stuck.

It’s a single Docker container, zero database, config in YAML, and it can talk to your Docker socket so every card shows live status — not a static link.

What Homepage gives you

  • Service discovery — point it at the Docker socket and every running container becomes a card automatically, with a live up/down dot.
  • Widgets — CPU, memory, disk, network, weather, and integrations for everything from Glances to your UPS.
  • No build step — edit YAML, save, it hot-reloads. No React, no database, no pain.

Wiring up the Docker integration

Homepage needs read access to the Docker socket. Mount it read-only — never give a dashboard write access to your containers:

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    ports:
      - 3000:3000
    volumes:
      - ./config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

Then tell it which Docker host to watch in config/docker.yaml:

my-docker-host:
  host: unix:///var/run/docker.sock

Cards that monitor containers

In config/services.yaml, define groups and let Homepage discover the rest. A hybrid setup — a few hand-pinned services, the rest auto-discovered — keeps the dashboard curated instead of chaotic:

- Media:
    - Plex:
        icon: sh-plex
        href: http://192.168.1.50:32400
        description: Movies and TV
        widget:
          type: plex
          url: http://192.168.1.50:32400
          key: {{HOMEPAGE_VAR_PLEX_TOKEN}}
- Docker:
    - Homepage:
        icon: sh-homepage
        href: http://192.168.1.50:3000

The widget: block is what makes it alive — the Plex card shows what’s currently playing, not just a logo. For anything with an API, check the widget gallery before you build a custom integration. You’ll usually find it exists.

Widgets that make it feel alive

The right widgets turn the dashboard from a link page into a status board:

  • Resource monitor — Glances or the built-in resources widget, showing CPU, RAM and disk for the NAS itself.
  • Network — per-interface throughput, so you can see a backup saturating the link at a glance.
  • Storage — disk usage per pool, which is the first thing you check when something feels slow anyway.

Environment-variable templating ({{HOMEPAGE_VAR_* }}) keeps secrets like API keys out of the YAML — put them in a .env that’s gitignored.

Layout and theming

Homepage’s layout is a grid of columns per group, with status dots, uptime, and ping latency on every card. Set statusStyle: dot in settings.yaml and a dark theme, and the whole thing looks like a proper NOC instead of a bookmarks page. It also supports a layout yaml for precise placement.

The verdict

Homepage replaced four tools in my lab: the bookmarks folder, a Grafana board I never finished, a Uptime Kuma instance I checked weekly, and the “what port was that again?” question. One container, one YAML directory, and every morning the dashboard tells me everything I need to know before I even open a terminal. If your NAS dashboard is still a bookmarks folder, this is the 20-minute fix.

Written by

Sten

Senior Editor

Builds AgenticOS and runs a homelab full of containers, GPUs and experiments.

Related articles

The Open Source Stack That Runs My Homelab

A NUC, a NAS, and zero licence fees. The battle-tested open source stack that runs my homelab — from containers and DNS to dashboards and backups — and what each tool actually earns its place.

20 Jul 2026 2 min read
Read