Beszel
henrygd · Observability
GitHub stars
26,660Awaiting first sync
No measured star history yet
What is Beszel?
Beszel gives a small team or a home lab a clear view of how its servers are doing, without the setup of a larger monitoring stack. You run one hub and install a light agent on each machine, and the hub keeps history for system and container metrics. Alerts tell you when something needs attention, so nobody has to watch the dashboard all day.
Beszel is a lightweight server monitoring platform made of two parts: a hub web app and a small agent that runs on each machine you watch. It keeps historical data for CPU, memory, disk, network, temperature and GPU use, tracks Docker and Podman containers, and sends alerts through many notification services. It also supports multiple users, OAuth or OIDC sign-in, automatic backups and a REST API.
Core capabilities
- Tracks CPU, memory, disk, network, temperature, GPU and S.M.A.R.T. disk health per host.
- Keeps CPU, memory and network history for each Docker or Podman container.
- Sends alerts to Discord, Slack, Teams, Telegram, Gotify, ntfy and other services.
A hub plus a light agent on each machine
Beszel has two parts. The hub is a web application built on PocketBase that shows a dashboard of every connected system. The agent runs on each machine and sends its metrics to the hub, either over SSH started by the hub or over a WebSocket started by the agent. The WebSocket mode uses a token and a mutual authentication handshake, and the docs recommend it with an HTTPS hub URL when traffic crosses the public internet.
- Hub
- Agent
- PocketBase
- WebSocket
Metrics, containers and alerts
Agents report CPU, memory, disk usage and I/O, network, load average, temperature, fan speed, GPU use and battery charge. Container status and usage come from Docker or Podman, and S.M.A.R.T. and ZFS data cover disk and pool health. Notifications use Shoutrrr URLs for services such as Discord, Slack, Teams, Telegram, Gotify, ntfy, Pushover and generic webhooks. Network monitors add response time and packet loss checks run from each agent.
- Docker
- Podman
- S.M.A.R.T.
- Alerts
- Network monitoring
Run it yourself under MIT
The hub runs as a single binary or with the henrygd/beszel Docker image on port 8090, keeping its data in a beszel_data folder. An install script for Linux and FreeBSD sets up the hub as a systemd service, with optional automatic daily updates. The agent is available as a Docker or Podman image, a binary, Homebrew, WinGet and Scoop packages, and a Home Assistant add-on. Users manage their own systems, admins can share systems, and backups can go to disk or S3-compatible storage. Beszel is released under the MIT licence.
- Self-hosted
- Docker
- MIT
- Backups
Where it fits
Use cases
- 01
Monitor a group of servers from one screen
Start the hub with Docker on port 8090 and create the first account. Click Add System, copy the generated docker-compose.yml or install command to each server, and start the agent. Each system appears in the table and turns green once it reports in.
- 02
Get notified when a server needs attention
Add a notification URL for a service such as Slack, Discord or ntfy under Settings > Notifications. Then enable alerts for a system in the systems table and set the metrics to watch. Beszel sends a message to that service when an alert fires.
- 03
Check that key services respond from each site
Open Network Monitors from the navbar and click Add Monitor. Choose one or more systems, enter a target, and pick ICMP, TCP, HTTP or DNS with a probe interval. Each agent probes from its own network and reports response time and packet loss.