mrkeyoor.com_
Thu 24 Sept 20:00 UTC
Self-Hostedevaluationupdated 26 Aug 2026

beszel review

Beszel is a self-hosted server monitor with a central web dashboard and a small agent on each machine. It keeps historical host and container metrics, sends threshold alerts, and covers common hardware data without asking you to assemble a full metrics database and dashboard stack.

+177stars / 7d
Verdict

Our Beszel build completed in 11 seconds, but 3 of 12 tested Go packages failed in the full run. It is still a good first choice for a homelab or small fleet that wants host and container history without operating Prometheus and Grafana. Walk away if you need open-ended metrics, agentless monitoring, or dependable ZFS pool visibility today.

We ran it

Lab card: what happened when we ran beszelScreenshot of beszel (beszel.dev)
Install✓ · 42s114 packages
Build✓ · 11s
Tests✗ · 49s9 passed · 3 failed of 12 (go test)
Repo429 files~65,649 lines of source · 5 MB · 6 CI workflows

Answers from our run

Does beszel build from source?

Dependencies installed in 42 seconds (114 packages), and the build succeeded in 11 seconds. We cloned commit f1e5797 into a clean Debian container with 3 CPUs and no project-specific setup.

Do beszel's tests pass?

Not all of them: 9 of 12 passed and 3 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use beszel?

Teams that need arbitrary application metrics, query languages, or custom dashboards: Beszel collects a defined set of system and container signals.

What are the alternatives to beszel?

Prometheus, Netdata, Uptime Kuma. Our Beszel build completed in 11 seconds, but 3 of 12 tested Go packages failed in the full run.

Setup4/5Hub and agent quick start is clear; host permissions still matter
Docs5/5Versioned guides cover deployment, metrics, auth, and troubleshooting
Community5/524,674 stars with busy current issue and pull request traffic
Maturity4/5Active v0.18.8 release, broad support, and a failed full test run

Discussed on

  1. hnBeszel: Lightweight server monitoring hub with historical data, Docker stats7 points
  2. hnBeszel: Lightweight server resource monitoring with history, Docker stats,alerts3 points

Who it’s for

Homelab operators who want useful host and Docker charts with less setup than Prometheus and Grafana.
Small infrastructure teams monitoring several Linux, Windows, BSD, or container hosts from one private dashboard.
Self-hosters who need alerts, user accounts, OAuth, backups, and S3-compatible backup storage in one application.
Operators willing to install an agent and grant only the host access needed for their chosen metrics.

Who it’s NOT for

Teams that need arbitrary application metrics, query languages, or custom dashboards: Beszel collects a defined set of system and container signals.
ZFS-heavy operators who need pool health and vdev visibility today: that remains an open feature request, and a separate report shows a containerized agent reading the overlay instead of a ZFS-only root.
Environments that prohibit an agent or Docker socket access on monitored machines: the architecture depends on a hub plus per-host agents, and container statistics use the runtime socket.
Windows fleets with sensitive USB firmware workflows: an open v0.18.8 report says the agent interfered with one mass-storage emulation update path.
Buyers requiring a completely green source test baseline: our run ended with 3 failing Go packages, and the supplied log tail names no common cause.

Setup reality

Our sandbox installed 114 Go packages in 42 seconds, then built Beszel in 11 seconds. Tests failed after 49 seconds: 9 packages passed and 3 failed out of 12. The supplied log tail only ends in FAIL, so it does not support blaming a service, platform dependency, or specific test.

Running the product means starting a hub, creating an admin account, and deploying an agent per system. Each agent needs a public key and token, or a universal token. Docker container metrics require mounting the Docker socket, while remote agents need network reachability to the hub.

Hardware coverage depends on the host. Extra filesystems need mounts or configuration, and SMART or GPU data may need device access and supporting utilities. Reverse proxy, OAuth, notification providers, and S3-compatible backups add their own URLs and credentials.

Beszel gives small fleets one hub and one agent per host

Beszel splits monitoring into a central PocketBase-based hub and an agent on every system. The hub stores history, presents dashboards, manages users, and sends alerts. Agents report host and container measurements. That design is easy to understand and far smaller in scope than a Prometheus, exporter, database, alert manager, and Grafana installation. It fits a homelab, a set of rented servers, or a small business that wants charts and warnings without hiring an observability specialist.

The repository we tested contained 429 files and about 65,649 lines of source in a 5 MB checkout. Beszel covers CPU, memory, swap, disks, disk I/O, networks, temperatures, fans, batteries, and several GPU vendors. It also records Docker or Podman container status and usage. Alerts can watch common thresholds and host availability. This is a deliberately defined monitoring product, so you get a useful dashboard quickly but cannot invent any metric or query you like.

The quick start still requires trust between 2 components

The documented Docker example starts the hub on port 8090 and can connect a local agent through a Unix socket. After creating the first administrator, you add a system in the web interface, copy its public key and token into the agent environment, then restart that agent. Since v0.12.0, a universal token can enroll an agent without configuring the system first. Remote machines follow the same idea over a network connection instead of the local socket.

Docker statistics require access to the Docker socket, mounted read-only in the example. That is a meaningful permission even when the mount itself is read-only because the socket exposes information and control surfaces from the container runtime. Agent configuration also changes with the metrics you want. Extra filesystems need explicit paths, GPU collection may need device access or utilities, and SMART data depends on what the host exposes. Start with basic host metrics, then add privileges one collector at a time.

What happened when we ran it

Our clean Go sandbox installed 114 packages in 42 seconds. The build succeeded in 11 seconds, so compiling the checked-out source was straightforward on 3 CPUs with 8 GB of memory. The repository was only 5 MB, a welcome contrast with monitoring systems that bring a large frontend toolchain or several services into the development checkout. No top-level Dockerfile or conventional tests directory was detected, although test files live alongside Go packages.

The full test command failed after 49 seconds. Go reported 9 passing packages and 3 failing packages out of 12. The final lines show several hub packages with no test files, one transport package passing, then a plain FAIL. They do not show the names or assertions behind the 3 failures. We can report the red result, but attributing it to PocketBase, timing, permissions, or the sandbox would be speculation beyond the supplied log.

For a production decision, separate buildability from test health. Our 11-second build shows the source compiled at commit f1e5797, while the failed 12-package run means that commit did not provide a clean full-suite baseline in our Debian container. Test the release and target operating systems you intend to deploy, especially if you depend on a specific hardware collector. Beszel supports many host combinations, and that breadth creates cases a single Linux container cannot prove.

ZFS and device-specific metrics need qualification

Beszel reports ordinary filesystem use and can monitor extra mounted filesystems. Native ZFS pool capacity, health, scrub state, and vdev details remain requested in issue 1541. Issue 1782 describes a TrueNAS Scale deployment where the containerized agent reported its roughly 10 MB overlay as the root disk because the ZFS-only host returned no normal partitions. Extra mounted datasets worked for that reporter, but the primary disk did not. ZFS operators should reproduce their exact mount and container arrangement before trusting storage alerts.

SMART monitoring has similar hardware boundaries. A current request says an HP ProLiant controller requires explicit smartctl -d cciss,N arguments that Beszel does not automatically enumerate. Release v0.18.8 improved mdraid consistency checks and SMART device detection, yet those changes do not promise support for every controller. Confirm each disk appears, compare its health with the host's own tool, and test a known alert condition before treating the dashboard as the only storage warning system.

Built-in accounts and backups reduce surrounding work

The hub includes multiple users, system sharing, OAuth or OIDC login, API access, and automatic backups to disk or S3-compatible storage. Those are useful operational features, since a dashboard with no authentication or backup plan quickly becomes another fragile service. Notification documentation covers many providers. A reverse proxy can give the hub TLS and a stable address, while password authentication can be disabled when an identity provider is ready.

Each added service brings configuration outside Beszel. OAuth needs client details and callback URLs. Object storage needs endpoint and access credentials. Notifications need provider tokens or webhooks. None is required for a one-host trial, but a shared deployment should record who owns those credentials and how the hub database is restored. The backup feature is only useful once a restore has been tested.

Active v0.18.8 development comes with a large queue

GitHub recorded the last push on August 24, 2026, one week after v0.18.8 was released. The repository had 24,674 stars and 318 open issues and pull requests when fetched. The latest release added fan, battery, Intel GPU, FreeBSD sensor, proxy, authentication, and platform work, alongside fixes for Docker counters and SMART records. Recent pull requests and issue updates show continued development; the combined open number describes both proposed work and problems, not 318 confirmed defects.

Beszel earns its place by choosing sane defaults for a bounded job. A 2-component deployment can give a small fleet historical metrics, container charts, and alerts without a separate query and dashboard platform. Our failed package tests stop us from calling the source baseline clean, and hardware-specific reports require local verification. If its fixed metric set covers your machines, run a trial. If you need custom telemetry or storage-specific depth, start with Prometheus or Netdata instead.

Alternatives

ProjectWhat it isPick it when
Prometheus gh↗A metrics database and query system with a large exporter ecosystem.pick this instead when you need arbitrary application metrics, PromQL, and an observability stack you can shape yourself.
Netdata gh↗A detailed real-time infrastructure monitor with broad automatic metric collection.pick this instead when deep per-host visibility matters more than Beszel's simpler hub and agent model.
Uptime Kuma gh↗A self-hosted uptime monitor for HTTP, TCP, DNS, and other service checks.pick this instead when service availability and public status checks matter more than host resource history.

What people are saying

  1. [github-trending] henrygd/beszel

Sources

  1. Beszel repository
  2. Beszel getting started guide
  3. Beszel v0.18.8 release
  4. ZFS pool monitoring request
  5. ZFS root filesystem report
  6. HP Smart Array SMART request
  7. Windows USB firmware report

More self-hosted reviews

autobrr · AgentENV · LibreChat · hosts · Atomic-Chat · omakade · the whole board →