Self-host Beszel
A lightweight server monitoring hub with a small agent per machine, charting CPU, memory, disk, network and Docker container stats with history and threshold alerts. The hub is a single Go binary built on PocketBase, so there is no separate database to run.
Key facts
Pick Beszel when you want a clean dashboard over machines you own — CPU, memory, disk, network and container stats from a small agent per host, with history and threshold alerts, and no separate database to provision. Be equally clear about what it is not: its network monitors only chart latency and packet loss from each agent, with no keyword, status-page or certificate checks, so it is no substitute for an uptime monitor. It watches boxes, not endpoints — run Uptime Kuma or Gatus alongside it if you need both, and only reach for Zabbix when you genuinely need SNMP, templates and network discovery.
Follow the Beszel deploy guide →What you need
- Any VPS with at least 256 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Beszel — the hub container first, then one agent per monitored machine
docker run -d --name beszel --restart unless-stopped \
-p 8090:8090 -v /opt/beszel:/beszel_data henrygd/beszel:latest
# create the admin account at http://SERVER_IP:8090, add a system, and copy
# the public key + token it shows you into the agent install below
curl -sL https://get.beszel.dev -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.shWhat you take on
Beszel is the easiest thing in this category to stand up, and the agent model is where the surprises live:
An alternative to
Head-to-head
More in Monitoring
changedetection.io
Checkmate
Gatus
Glances
Common questions
Does Beszel monitor websites, or only servers?
Only machines running its agent. Beszel collects CPU, memory, disk, network and container metrics from an agent you install on each host. Since agent v0.20.0 it can also probe targets over ICMP, TCP, HTTP or DNS and alert on packet loss, but there is no keyword matching, certificate-expiry check or status page — for real endpoint monitoring, run Uptime Kuma or Gatus alongside it.
Does Beszel need a database?
No. The hub is built on PocketBase and keeps everything in an embedded database inside its data directory, so there is no Postgres or MongoDB to provision. Back up the beszel_data volume and you have backed up the entire install, users and history included.
How do I add a machine to Beszel?
Create the system in the hub UI first — it generates a public key and a token — then run the agent installer on the target machine with those two values. Which way the connection runs is a choice: the agent can dial out to the hub over a WebSocket using its hub URL and token, or it can listen on a port and let the hub reach it. The first suits agents behind NAT or a firewall you do not control; the second needs the hub to have network access to each agent. Decide before you open any ports.
What can Beszel alert on?
Status (the system going offline) plus thresholds for CPU, memory, disk, bandwidth, load average, temperature and fan speed, and S.M.A.R.T. disk health where the agent can read it. Alerts are configured per system and per alert type, and each user manages alerts for the systems they can see.