Skip to content

Introduction

Home Lab is a self-hosted dashboard for your homelab. It gives you a single, good-looking page that lists your services as cards, pulls live data from them through built-in widget integrations, and stores everything you configure on the server.

Why Home Lab

  • Server-side state - your pages, services, widgets, credentials and settings live in a SQLite database on the server. Open it in any browser, on your phone, on another machine - it always looks the same.
  • Live widgets - over 30 native integrations fetch real data: download speeds, media now-playing, Proxmox node load, Pi-hole blocking, ntfy notifications and much more. No separate proxies or sidecar containers to run.
  • No config files - everything is done in the UI. There is no services.yaml to hand-edit (though you can import one from Homepage).
  • Secrets stay private - API keys and passwords are stored server-side and are never sent back to the browser.
  • One container - a single Node.js + SQLite image serves both the API and the static front-end from the same origin.

How it is built

LayerTechnology
BackendNode.js + Express 5, better-sqlite3 (WAL mode)
Front-endReact (rendered in the browser via Babel)
StorageA single SQLite database in the data volume
Docker controlOptional tecnativa/docker-socket-proxy sidecar

The backend is authoritative: when the page loads it reads your configuration from the server. Widget data is fetched live and cached briefly so the same service isn't hammered by every refresh.

See Architecture for the full picture.

Core concepts

Pages


Top-level tabs in the sidebar. Each page holds groups. The built-in Dashboard shows favourites and health.

Groups


Titled sections within a page. Cards live inside groups; you can drag cards between them.

Services / cards


A tile for one service - name, icon, link, optional Docker container, and up to three widgets.

Widgets


Live data attached to a card, resolved from the widget type and the credentials you provide.

Next steps