📡 Setup Beszel — Lightweight Server Monitoring Hub
Monitor CPU, RAM, disk, and network across all your servers from one clean dashboard. Beszel is fast, lightweight, and incredibly easy to deploy with Docker.
📦 Resources & Setup Scripts
Grab the automated bash script from GitHub to follow along with the video.
Quick Install:
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/monitoring/beszel/beszel-ubuntu.sh
chmod +x beszel-ubuntu.sh
sudo bash beszel-ubuntu.sh
Tutorial Steps
1 Download & Run the Script
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/monitoring/beszel/beszel-ubuntu.sh
chmod +x beszel-ubuntu.sh
sudo bash beszel-ubuntu.sh
2 Access the Web Dashboard
On first visit, register your admin account:
http://<your-server-ip>:8090
3 Add Servers to Monitor
Click Add System in the Beszel dashboard. You'll get a Docker command to run on each server you want to monitor — the agent will connect back automatically.
4 View Your Dashboard
Once agents connect, you'll see real-time CPU, RAM, disk, and network charts for each server. Beszel stores historical data so you can review trends over time.
Ports Used
| Port | Purpose |
|---|---|
| 8090 | Beszel Web Dashboard |
Overview
Beszel is a lightweight server monitoring hub that provides real-time and historical metrics for CPU, RAM, disk, network, and Docker containers. It uses a hub-and-agent architecture — the hub collects and displays data, while small agents installed on each server send metrics over SSH. No firewall changes are required on the monitored servers.
Why Use It
Beszel fills the gap between lightweight monitoring scripts and heavy observability stacks like Prometheus/Grafana. It gives you real-time and historical CPU, memory, disk, network, and Docker metrics across multiple servers from a single hub — without opening any inbound firewall ports on your monitored servers. The agent communicates outbound only over SSH, making it safe to deploy even on production machines with strict security postures. Setup takes minutes per server, not hours of configuration.
When You Need It
Who Should Use It
Real Use Cases
Main Features
How to Use After Installation
Security Best Practices
Ports and Firewall Notes
The Beszel hub web UI listens on port 8090 by default. This should be reverse-proxied to HTTPS on port 443 — do not expose 8090 directly. The hub SSH service for agent communication listens on port 45876 (configurable). On monitored servers, NO inbound ports need to be opened — the agent connects outbound to the hub's SSH port. Your hub server needs inbound access on 8090 (proxied to 443) and 45876 from agent IPs. Optionally restrict 45876 to known server IPs for tighter security.
Backup and Maintenance
Common Mistakes
Troubleshooting
Alternatives
Prometheus with Node Exporter and Grafana is the most powerful self-hosted monitoring stack — far more capable than Beszel but requires significantly more setup and maintenance. Netdata provides per-second metrics with zero configuration but uses more resources and has a more complex multi-server setup. Uptime Kuma handles uptime and availability checks but not detailed performance metrics. Zabbix is an enterprise monitoring platform with much more feature depth but a steep learning curve. For very small setups, tools like Glances or htop with remote SSH access may be simpler than deploying a hub-agent monitoring system.
When Not to Use It
Beszel is not the right tool if you need application-level metrics (request rates, error rates, latency percentiles) — those require instrumentation and Prometheus or a similar APM. If you need compliance-grade monitoring with audit logs and access controls beyond basic RBAC, an enterprise platform is more appropriate. For organizations that already have a working Prometheus/Grafana or Datadog setup, adding Beszel creates redundant monitoring rather than replacing the existing stack. Also, Beszel's historical data retention is limited — for long-term trend analysis spanning months or years, a time-series database like InfluxDB is better suited.
Need Help Setting Up Beszel?
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Frequently Asked Questions
Do I need to open any inbound ports on the servers I'm monitoring?
No. The Beszel agent on monitored servers connects outbound only to the hub's SSH port. Your monitored servers don't need any inbound firewall rules for Beszel. Only the hub server needs inbound ports — the web UI port (8090, proxied to 443) and the agent SSH port (45876) need to be reachable from agent IPs.
How does Beszel compare to Netdata for server monitoring?
Netdata collects metrics with per-second granularity and auto-discovers most services with zero configuration — it's more powerful but uses more CPU and RAM. Beszel is simpler, lighter, and easier to set up for multi-server fleet monitoring. If you want deep, real-time performance analysis, Netdata is better. If you want a clean fleet overview with history and alerts, Beszel is a better fit.
Can Beszel monitor Docker containers?
Yes. With Docker socket access configured for the agent user, Beszel tracks per-container CPU, memory, network, and status. This is enabled per-server in the hub UI. The agent reads Docker stats through the socket — no changes to Docker or containers are needed.
What happens to metrics if the hub goes offline temporarily?
Agents store a small buffer of recent metrics locally. When the hub comes back online, agents reconnect automatically and resume sending data. There is no persistent metric store in the agent — a longer hub outage will result in a gap in historical data. The hub's database (SQLite) retains all historical data collected before the outage.
Is Beszel suitable for monitoring cloud VMs from different providers?
Yes. As long as the agent can reach the hub's SSH port (45876) outbound, it works across any network boundary — cloud VMs, on-premise servers, home lab machines, or a mix. This is a major advantage over tools that require inbound network access to the monitored server.
How do I update Beszel agents after a hub update?
Download the new agent binary from the Beszel releases page on GitHub, replace the existing binary on each monitored server, and restart the agent service with systemctl restart beszel-agent. If a hub update introduces a new agent API, the hub dashboard will typically warn you that agents need updating. Update the hub first, then agents.
Can multiple users share the Beszel hub dashboard?
Yes. Beszel supports multiple user accounts with different roles. Admin users have full control. Regular users can view dashboards and metrics without being able to add or remove servers. This makes it practical for teams where multiple people need monitoring visibility without all having administrative access.
How long does Beszel retain historical metric data?
Beszel stores metric history in its SQLite database. By default it retains a rolling window of data — shorter intervals for recent data and downsampled data for older periods. The exact retention period depends on configuration and available disk space. For long-term trend analysis beyond a few months, export to a dedicated time-series database.
