Server monitoring used to mean setting up Prometheus, node_exporter, cAdvisor, and Grafana. Four components. YAML config files. PromQL queries. Two to eight hours before you could see a single CPU graph.

Beszel changed that. It’s a single Go binary that monitors CPU, memory, disk, network, and Docker containers with a clean web dashboard. The agent uses under 10MB of RAM. Setup takes five minutes.

In 2026, Beszel has become the default monitoring tool for homelabs and small VPS fleets. Here’s why – and how to set it up.

What Beszel Monitors

Beszel tracks the metrics that matter for self-hosters:

  • CPU usage – per-core breakdown, historical graphs
  • Memory – used, cached, available, swap
  • Disk – usage per mount point, I/O rates
  • Network – bandwidth in/out per interface
  • Temperature – CPU and GPU thermal sensors
  • Docker containers – per-container CPU, memory, and network usage

That last one is the reason most self-hosters pick Beszel over tools like Glances or htop. If you’re running 10-15 Docker containers on a single server, Beszel shows you which container is eating your resources without SSH-ing in and running docker stats.

All metrics are stored historically. You can look back days, weeks, or months to spot trends – when did that memory leak start? Is disk usage growing linearly or accelerating?

Why Not Grafana or Netdata?

Two tools dominate the monitoring conversation: Grafana (with Prometheus) and Netdata. Both are powerful. Both are overkill for most self-hosters.

Grafana + Prometheus

The enterprise standard. Infinitely customizable. Also infinitely complex.

A working Grafana stack needs four components: Prometheus (metric scraping), node_exporter (host metrics), cAdvisor (Docker metrics), and Grafana (visualization). Each has its own configuration file, port, and update cycle. Total RAM: 500MB-1GB+.

Then you write PromQL queries. rate(node_cpu_seconds_total{mode!="idle"}[5m]) gives you CPU usage. If that sentence made you flinch, Grafana isn’t the right tool for your homelab.

Grafana Cloud exists as a managed option, but the free tier limits you to 10,000 active metrics series. A single Docker host can generate 5,000+ series. Two servers and you’re paying $8 per 1,000 additional series.

For a detailed comparison of Beszel vs Grafana Cloud – including cost scenarios for 5, 10, and 20 servers – see this Beszel vs Grafana Cloud breakdown.

Netdata

Netdata collects 2,000+ metrics at one-second resolution with AI anomaly detection. Impressive. Also 200-500MB of RAM per agent.

For most self-hosters who need to answer “is my CPU OK and is Docker behaving,” Netdata shows 1,997 charts you’ll never look at. You scroll past disk I/O histograms and network socket statistics to find the three numbers you care about.

Netdata Cloud adds multi-server views but limits free accounts to 5 nodes. The Pro plan costs $5 per node per month – quickly more expensive than Beszel’s approach.

Where Beszel Wins

Factor Beszel Grafana + Prometheus Netdata
RAM per agent <10MB 500MB-1GB+ 200-500MB
Setup time 5 minutes 2-8 hours 15 minutes
Components 2 (hub + agent) 4+ (Prometheus, Grafana, exporters) 1 (agent) + cloud
Custom dashboards No (fixed layout) Yes (unlimited) Limited
Docker monitoring Built-in per-container Via cAdvisor (extra component) Built-in
Query language None needed PromQL (steep curve) None needed
License MIT AGPL / Apache GPL v3+

Beszel wins on simplicity and resource usage. Grafana wins on customization and scale. Netdata wins on metric depth. For 90% of self-hosters, simplicity matters more.

How to Set Up Beszel

Beszel uses a hub-agent architecture. The hub is the web dashboard where you view metrics. Agents run on each server you want to monitor and send data to the hub.

Step 1: Deploy the Hub

The hub is a single binary. Run it with Docker:

docker run -d \
  --name beszel-hub \
  -p 8090:8090 \
  -v beszel_data:/beszel_data \
  henrygd/beszel

Open http://your-server:8090 in a browser. Create your admin account on first visit.

Step 2: Add a Server

In the Beszel dashboard, click “Add Server.” You’ll get a connection key – a one-line string that the agent uses to authenticate with the hub.

Step 3: Install the Agent

On each server you want to monitor, run the agent:

docker run -d \
  --name beszel-agent \
  --network host \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -e KEY="your-connection-key" \
  -e PORT=45876 \
  henrygd/beszel-agent

The agent connects to the hub, and metrics start flowing within seconds.

That’s it. No config files. No YAML. No query language. Three commands and you have server monitoring running.

Step 4: Add More Servers

Repeat step 2 and 3 for each additional server. The hub dashboard shows all servers in a single view – CPU, memory, disk, and Docker containers across your entire fleet.

What Beszel Can’t Do

Being honest about limitations:

No custom metrics. If you need application-specific metrics (request latency, queue depth, custom counters), Beszel doesn’t support them. You need Prometheus or Netdata for that.

No log aggregation. Beszel monitors metrics, not logs. For Docker logs, pair it with Dozzle – together they use less than 20MB of RAM and give you metrics + logs.

No alerting integrations. Beszel has threshold alerts (CPU > 90%, disk > 80%), but it can’t route alerts to PagerDuty, Slack, or OpsGenie. If you need advanced alerting, you need a different stack.

Fixed dashboard layout. You can’t build custom charts or rearrange the dashboard. What you see is what you get. For most self-hosters, this is a feature (no time spent building dashboards), but power users may find it limiting.

No uptime monitoring. Beszel monitors server resources from inside the server. It doesn’t check if your websites or APIs are reachable from outside. For that, pair it with Uptime Kuma.

The Beszel + Dozzle Stack

The most common self-hosted monitoring setup in 2026 is Beszel + Dozzle:

  • Beszel answers: “Something is using too much CPU/memory. Which container?”
  • Dozzle answers: “Here are the error messages from that container.”

Both are lightweight (combined <20MB RAM), both take minutes to set up, and together they replace what used to require Grafana + Prometheus + Loki (a 500MB+ stack that takes hours to configure).

Add Uptime Kuma if you also need external availability monitoring (“is my website responding?”), and you have a complete monitoring stack for under 80MB of RAM.

Who Should Use Beszel

Homelab owners running 2-10 servers with Docker containers. Beszel gives you visibility into your entire fleet from one dashboard without eating the resources you’re trying to monitor.

VPS operators managing a handful of cloud servers. The agent uses so little RAM that it has zero impact on your $5/mo VPS workloads.

Docker-heavy setups where you need per-container metrics. Beszel’s built-in Docker monitoring beats running a separate cAdvisor instance alongside Prometheus.

Anyone who tried Grafana and gave up configuring dashboards. Beszel’s fixed layout is the point – it shows you what you need without asking you to build it first.

Who Should Not Use Beszel

Production SaaS teams that need custom metrics, PromQL queries, multi-datasource dashboards, and PagerDuty integration. That’s Grafana’s territory.

Large-scale infrastructure (50+ servers) where you need metric cardinality management, long-term storage, and advanced alerting rules. Prometheus was built for this scale.

Compliance-driven environments that need audit logging, metric retention policies, and vendor support contracts. Beszel is an MIT-licensed project maintained by one developer – not an enterprise product.

Getting Started

The fastest way to try Beszel:

  1. Self-host the hub on any Linux server with Docker (instructions above)
  2. Use a managed deployment if you don’t want to manage the hub server – platforms like InstaPods and PikaPods deploy Beszel with one click for $3/mo

Once the hub is running, adding servers takes 30 seconds each. You’ll have full monitoring of your entire infrastructure in the time it takes to configure a single Grafana dashboard.

Beszel isn’t the most powerful monitoring tool. It’s the most practical one. And for self-hosters who want monitoring without a second job maintaining it, that’s the tool that sticks.