Beszel on VPS: Your Lightweight Monitoring Hub in 2026
Server monitoring does not have to mean heavyweight stacks. Beszel is an open-source, lightweight monitoring dashboard that gives you real-time CPU, RAM, disk I/O, and network stats across your entire fleet — all from a single web UI backed by SQLite. This guide walks you through choosing a VPS, deploying Beszel via Docker, and getting your first server into the dashboard.
What Is Beszel?
Beszel (GitHub: henrygd/beszel) is a self-hosted server monitoring solution built for developers and homelabbers who want visibility without operational overhead. Key characteristics:
- Hub + Agent model: The Beszel hub runs on your VPS on port 8090. A tiny agent binary is installed on each server you want to monitor.
- SQLite backend: No external database required. Metrics are stored locally, making backups trivial.
- Multi-server support: Monitor dozens of servers from one dashboard.
- Extremely lightweight: Runs on 512 MB RAM. The hub and each agent consume minimal resources.
- Deployment options: Docker, Docker Compose, or standalone binary.
Compared to alternatives like Netdata (heavier, more complex) or Uptime Kuma (service health checks, not system metrics), Beszel is purpose-built for clean system metrics dashboards.
Why Use a VPS for Beszel?
Running Beszel on a dedicated VPS makes sense for several reasons:
- Always-on monitoring: Your hub is available 24/7 independently of the servers it monitors.
- Centralized visibility: One URL to check all your servers.
- Independence: If a monitored server goes down, your hub and historical data remain accessible.
- Low cost: A 1 GB RAM VPS is sufficient, keeping monthly costs under 5–6 EUR/USD.
VPS Comparison for Beszel
| Provider | Price | RAM | Storage | Best For |
|---|---|---|---|---|
| Contabo VPS | 5.99 EUR/mo | 8 GB | 200 GB NVMe | Long metrics retention, EU |
| Hetzner Cloud | 4.15 EUR/mo | 4 GB | 40 GB NVMe | Best price/perf, EU |
| DigitalOcean | 6 USD/mo | 1 GB | 25 GB SSD | Beginners |
| Vultr | 6 USD/mo | 1 GB | 25 GB SSD | Global locations |
| Linode (Akamai) | 5 USD/mo | 1 GB | 25 GB SSD | Budget, reliable |
For a homelab or small fleet, Hetzner Cloud at 4.15 EUR/mo hits the sweet spot: NVMe storage, reliable uptime, and a great API for automation. For maximum storage headroom, Contabo at 5.99 EUR/mo gives you 200 GB NVMe — ideal if you retain months of metrics across many servers.
Installation: Beszel via Docker
Prerequisites
- A VPS running Ubuntu 22.04 or Debian 12.
- Docker and Docker Compose installed.
- Port 8090 open in your firewall.
Step 1: Install Docker
sudo apt update && sudo apt install -y ca-certificates curl
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
Step 2: Deploy the Beszel Hub
docker run -d \
--name beszel \
--restart unless-stopped \
-p 8090:8090 \
-v beszel_data:/beszel_data \
henrygd/beszel
Or use Docker Compose — create docker-compose.yml:
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
ports:
- "8090:8090"
volumes:
- beszel_data:/beszel_data
volumes:
beszel_data:
Then run:
docker compose up -d
Step 3: Open the Dashboard
Navigate to http://your-vps-ip:8090 in your browser. On first launch, you will be prompted to create an admin account. Set a strong password.
Step 4: Add a Server Agent
For each server you want to monitor, install the Beszel agent. On the monitored server:
docker run -d \
--name beszel-agent \
--restart unless-stopped \
--network host \
-e KEY="<your-agent-key-from-dashboard>" \
henrygd/beszel-agent
The agent key is generated in the Beszel hub UI when you click Add Server. Copy it and paste it into the command above.
Dashboard Overview
Once a server is connected, the Beszel dashboard shows:
- CPU usage — per-core and aggregate, historical charts.
- Memory — used, cached, available.
- Disk I/O — read/write throughput per device.
- Network — inbound/outbound bandwidth per interface.
- System info — hostname, OS, uptime, kernel version.
Charts are interactive and support custom time ranges. All data is stored in SQLite under /beszel_data/.
FAQs
Does Beszel support alerting?
Beszel supports basic alerting via webhooks. You can configure alert thresholds in the dashboard for CPU, memory, and disk usage, with notifications sent to services like Discord, Slack, or any webhook endpoint.
Can I put Beszel behind a reverse proxy?
Yes. Beszel works well behind Nginx, Caddy, or Traefik. Configure your proxy to forward HTTPS traffic to port 8090. Add SSL via Let’s Encrypt for a production setup.
Is Beszel data persistent across container restarts?
Yes, as long as you mount a named volume (beszel_data). The SQLite database persists all metrics history. Always include the volume in your Docker Compose file.
For more VPS recommendations suited to monitoring workloads, see our full VPS comparison.