# Homelab Dashboard A small, self-contained single-page dashboard that links all your homelab services. Static site (HTML + CSS + JS), served by a lightweight **nginx** image. No backend, no database, no build step — just static files. ## Services Internal: Open WebUI, ComfyUI, Gitea, Jellyfin, Immich, Home Assistant, Audio Server / Dubplate, Nextcloud, Vaultwarden, Nginx Proxy Manager, Netbird. External: gitlab-ixsol, gem360. ## Features - Responsive grid of service cards with icons, categories and a live "Online" indicator - **Open** (new tab) + **Copy URL** per service - Live search / filter across names, categories and URLs - Live local clock - Dark, themeable design; respects `prefers-reduced-motion` ## Run with Docker ```bash docker compose up -d --build ``` Then open . ### Without Docker (quick dev) Any static file server works: ```bash # from this directory python3 -m http.server 8888 # or: npx serve . -l 8888 ``` ## Edit services All services live in one array at the top of [`script.js`](./script.js). Add / remove / reorder entries there: ```js { section: "internal", name: "My Service", url: "http://10.0.0.5:9000", cat: "infra", icon: "⚙️" } ``` `section` is either `"internal"` or `"external"`. `cat` is any key from the `CATEGORIES` map (or add your own). ## Build the image manually ```bash docker build -t homelab-dashboard . docker run -d --name homelab-dashboard -p 8888:80 --restart unless-stopped homelab-dashboard ``` ## Notes - The "Online" badge is cosmetic (a static site can't probe your services from the browser due to CORS). If you want real health checks later, a tiny backend that pings each URL would be the next step. - Port 8888 is published by the Compose file; change it there if needed.