Pi-Pilot
A server dashboard for monitoring and managing a Raspberry Pi remotely. Real-time hardware stats over WebSockets, Docker container management with instant event-driven updates, historical graphs with LTTB downsampling, container log viewer, and host commands — all secured behind Cloudflare Zero Trust with no exposed ports.
Pi-Pilot is a self-hosted server dashboard for monitoring and managing a Raspberry Pi from a custom Android app — without opening any ports on the router.
Backend
A Spring Boot service runs as a native systemd process (outside Docker, so OSHI reads real host stats from /proc and /sys). It streams CPU, RAM, disk, and temperature data over STOMP WebSockets at 1-second intervals with a subscription-aware scheduler — no work is done when no client is connected. Docker container state changes arrive instantly via the Docker event stream, no polling.
Android client
The app follows Clean Architecture with separate network DTOs, domain models, and UI state. WebSocket connections are lifecycle-aware with exponential backoff reconnection. Tapping a hardware gauge opens a history chart backed by an H2 embedded database that records snapshots every 60 seconds, downsampled client-side with the LTTB algorithm for smooth rendering across 7-day ranges. Container logs render in a terminal-style bottom sheet with colour-coded stdout/stderr and contextual timestamps.
Host commands (reboot, Docker prune) require typed confirmation for deliberate friction. Secrets are stored in the Android KeyStore with AES-256-GCM encryption.
Networking
Handled entirely through Cloudflare Tunnels with Service Token authentication. The Pi has zero exposed ports and no port forwarding.
Screenshots