VPS Monitoring with Beszel

A self-hosted monitoring solution for a multi-container production VPS, built around Beszel as a lightweight (~70 MB RAM) alternative to a Grafana + Prometheus stack — chosen to fit a memory-constrained 2 GB host running 13+ Docker containers.
Key features:
- Host-level metrics: CPU, RAM, disk, network, and temperature
- Per-container Docker stats across all running services
- Threshold-based alerting (email/webhook) for CPU, RAM, disk, and system-down events
- Authenticated web dashboard served securely over a Cloudflare Tunnel, with the hub bound only to localhost on the VPS
- Automated redeploy on push to
mainvia a GitHub Actions workflow
Architecture: a Beszel hub (web UI) is deployed via Docker Compose behind an existing Cloudflare Tunnel, communicating over SSH with a Beszel agent running on the host network to read Docker socket stats — keeping the monitoring surface fully private while remaining accessible through a single public hostname.
Tech stack: Docker Compose, Beszel, Cloudflare Tunnel/Zero Trust, GitHub Actions.
Designed, configured, and deployed the full stack, including the tunnel routing, CI-driven deployment pipeline, and alerting configuration.