Self-Hosted Beszel: Lightweight Server and Docker Monitoring That Fits a Homelab

Your VPS ran fine until it didn't — disk at 100%, swap thrashing, one Docker container eating all the RAM, and you found out from a client email instead of a graph. Uptime Kuma told you the homepage returned 200. It didn't tell you the box was melting.

Beszel fills that gap. ~23k GitHub stars, MIT-licensed, and lightweight server monitoring — CPU, memory, disk, network, load, temperature, GPU, per-container Docker stats, historical charts, and alerts. Hub plus agent. Smaller than Netdata, simpler than Prometheus, and actually pleasant to look at.

What it actually does

Beszel has two parts:

Hub — web dashboard on port 8090, built on PocketBase. View all your systems, history graphs, alert config, multi-user access, OAuth/OIDC, API access. Single Docker container or binary.

Agent — runs on each host you monitor, pushes metrics to the hub. Install via Docker, binary install script (Linux), or unix socket for local hub+agent on the same machine.

What it tracks. Host CPU, memory (including swap and ZFS ARC), disk usage and I/O across partitions, network throughput, load average, temperature sensors, Nvidia/AMD/Intel GPU usage, battery, S.M.A.R.T. disk health, and every running Docker/Podman container's resource usage over time.

Alerts. Threshold notifications on CPU, memory, disk, bandwidth, temperature, load average, and agent status — Slack, Discord, email, and more via the hub settings.

Ops extras. Automatic backups to disk or S3-compatible storage. Multi-user with admins sharing systems across accounts. Universal tokens (0.12+) simplify agent pairing.

Beszel vs Uptime Kuma vs SigNoz

We've covered other monitoring tools — different jobs:

  • Uptime Kuma — synthetic checks: is this URL up? Public status pages, certificate expiry, 90+ notification channels
  • SigNoz — application observability: traces, logs, OpenTelemetry APM for microservices
  • Beszel — host and container metrics: how full is the disk, which container spiked CPU, what did load look like last Tuesday

Run Kuma and Beszel together — Kuma pings your endpoints, Beszel watches the metal underneath. SigNoz when you're debugging why the API is slow; Beszel when you're wondering if the VPS needs more RAM.

Why self-host?

Infrastructure metrics are sensitive. Hostnames, internal IPs, resource usage patterns — that's operational intelligence you may not want on a US SaaS dashboard.

Lightweight on the hosts you monitor. Beszel's pitch is smaller footprint than heavyweight monitoring stacks. Homelab NUCs and small Canadian VPS instances won't choke on the agent.

Historical data you keep. Charts and alerts based on your retention on your hub — not a vendor's 30-day free tier.

MIT, Docker-native. Hub and agent images on Docker Hub. Fits the same compose workflow as Dockge-managed stacks.

What running it takes

Start the hub:

mkdir beszel && cd beszel
# docker-compose.yml from beszel.dev — henrygd/beszel:latest
# Set APP_URL to your public URL
docker compose up -d

Create an admin at http://your-server:8090. Click Add System — the UI generates agent config with token and key. Deploy henrygd/beszel-agent on each host (Docker with host networking for remote servers, or unix socket for local). Mount /var/run/docker.sock:ro on agents if you want per-container stats.

Hub storage in ./beszel_data — back it up. Put HTTPS in front of the hub. Agents initiate outbound to the hub, which helps with NAT and firewall rules on monitored servers.

Who it's for (and who should skip it)

Good fit: homelabbers with multiple VPS boxes, Canadian small businesses running Docker on one or five servers, anyone who wants Grafana-less host graphs without learning PromQL, teams already on Uptime Kuma who need resource monitoring too.

Maybe skip it: you only need "is the website up" — Kuma alone is enough. You need full APM with distributed tracing — SigNoz. You're running a 50-node Kubernetes cluster — Prometheus/Grafana or a managed stack probably fits better at scale.

Hosting it in Canada

Hub on your central monitoring VPS, agents on each Canadian server you run. We deploy Beszel hubs on Canadian Docker hosting — TLS, backups on beszel_data, firewall rules so agents reach the hub securely.

Tell us how many hosts you're monitoring — we'll size the hub before your homelab outgrows the graphs.

Tags:
  • Beszel
  • Monitoring
  • Docker
  • Homelab
  • Self-Hosted

Need Help With Your Hosting?

Tell us about your application — we respond within 1 hour with honest recommendations.