Skip to content

Self-host Beszel

updated Aug 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Aug 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

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

CategoryMonitoring
LicenseMIT
StackGo, PocketBase, SQLite
Min RAM256 MB
Official imageyes
Difficulty
Our recommendation

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
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

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.sh

What you take on

Beszel is the easiest thing in this category to stand up, and the agent model is where the surprises live:

non-negotiableEvery monitored machine needs the agent installed. There is no agentless mode — a box without the agent is simply invisible — and the connection runs either way — the agent dials out to the hub over a WebSocket, or the hub connects in to a listening agent — so firewall rules and network reachability are yours to arrange before a system reports anything.
non-negotiableIt answers “is this box healthy”, never “is my site up”. Its HTTP, TCP and DNS probes measure only response time and packet loss, and alert on loss averaged over an hour, so pair it with an endpoint monitor or you will be watching calm CPU graphs while visitors get a 502.
non-negotiableThe hub is both the single point of failure and the single backup target. Users, systems and all history live in the PocketBase data directory, so snapshot it off the box — and remember that a hub that is down is a fleet you cannot see.

An alternative to

Head-to-head

More in Monitoring

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.

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.