← Back to archive
Project

VPS Monitoring with Beszel

Stack
Docker Compose · Beszel · Cloudflare Tunnel · GitHub Actions
main monitoring bezel

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 main via 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.

Gallery

GitHub

VPS Monitoring with Beszel · Tionusa Catur Pamungkas