Add static homelab dashboard with Docker and nginx setup
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# 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 <http://localhost:8888>.
|
||||
|
||||
### 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.
|
||||
Reference in New Issue
Block a user