Beszel is a self-hosted server monitoring platform for people running homelabs or small fleets of servers who want a lightweight alternative to heavier monitoring stacks. It tracks CPU, memory, disk, network, and container metrics over time, with a web dashboard and alerting built in. It's aimed at anyone who wants visibility into their infrastructure without standing up a full Prometheus/Grafana setup.
Beszel fits homelab operators and small teams who run a handful to a few dozen servers and want a dashboard showing system and container health without deploying a heavier observability stack. It's a good match if you want historical graphs for CPU, memory, disk, and network, plus alerting on thresholds like temperature or disk usage, and you'd rather not manage Prometheus, Grafana, and exporters separately.
It's also a reasonable choice if you need multi-user access control (each user sees only their own systems) or want to authenticate via an existing OAuth/OIDC provider instead of managing separate credentials.
It's probably not the right fit if you need deep application-level metrics, distributed tracing, log aggregation, or the extensibility of a full Prometheus/Grafana or Datadog-style stack. Beszel focuses on system and container-level metrics, not custom application instrumentation. If you're running large-scale infrastructure with complex alerting pipelines or need integration with a broader observability ecosystem, a more general-purpose toolchain will likely serve you better.
Beszel has two components: a hub (the web dashboard, built on PocketBase) and an agent (runs on each monitored system and reports metrics back to the hub).
The README points to the official quick start guide for full setup instructions:
https://beszel.dev/guide/getting-started
At a high level, the setup involves:
Both the hub and agent ship as Docker images (henrygd/beszel and henrygd/beszel-agent), which is the simplest way to run them. Follow the getting started guide on beszel.dev for exact commands, environment variables, and configuration options, since setup details (ports, tokens, backup targets) are documented there rather than fully spelled out in the README.