Dashboard minimaliste pour surveiller mon Raspberry Pi 5 en temps réel, avec une architecture volontairement réduite à un seul service.
Métriques système
- Temps réel, CPU %, température SoC, RAM, remplissage disque, en jauges colorées.
- Sparklines, historique visuel et prévision de saturation du disque par régression linéaire.
- Historique 1 h / 6 h / 24 h, depuis des buffers mémoire côté serveur.
Docker & hôte
- Stats Docker, regroupées par projet Compose (repliables), I/O réseau/disque.
- Hôte, load average, processus hôte (hors Docker).
- Spécifique Pi, throttling, voltage via
vcgencmd.
Architecture & PWA
- Monolithique, un seul service Next.js (App Router) qui combine l’UI et l’API (
/api/metrics), pas de backend séparé. - PWA, service worker network-first (shell hors-ligne, API jamais cachée), mode mur/kiosk et préférences persistées.
Déployé sur le homelab : la CI GitHub Actions cross-build une image arm64 sur GHCR puis se connecte au Pi en SSH pour docker compose pull. ⚠️ L’API expose des infos système sensibles → servie derrière authentification (NPM), jamais exposée brute à Internet.
Minimalist dashboard to monitor my Raspberry Pi 5 in real time, with an architecture deliberately reduced to a single service.
System metrics
- Real-time, CPU %, SoC temperature, RAM, disk usage, in color-coded gauges.
- Sparklines, visual history and disk saturation forecast via linear regression.
- 1 h / 6 h / 24 h history, from server-side memory buffers.
Docker & host
- Docker stats, grouped by Compose project (collapsible), network/disk I/O.
- Host, load average, host processes (outside Docker).
- Pi-specific, throttling, voltage via
vcgencmd.
Architecture & PWA
- Monolithic, a single Next.js service (App Router) combining the UI and the API (
/api/metrics), no separate backend. - PWA, network-first service worker (offline shell, API never cached), wall/kiosk mode and persisted preferences.
Deployed on the homelab: the GitHub Actions CI cross-builds an arm64 image on GHCR then connects to the Pi over SSH to run docker compose pull. ⚠️ The API exposes sensitive system info → served behind authentication (NPM), never exposed raw to the Internet.