Skip to main content

How to Set Up Beszel: The Ultimate Homelab Monitoring Guide

· By Pankajbhai Chavda · 5 min read

Your homelab setup is a simple Proxmox server for Pi-hole. In this setup, you are running a bunch of Docker containers and you don't know why your RAM is maxed out. In this situation, you need a self-hosted tool to monitor your server.

Some people advise you to use Prometheus and Grafana for this monitoring. But the reality is that running a massive enterprise observability stack just to watch your media server is total overkill. Grafana is a big tool, so you need to be burned out to maintain it, or Uptime Kuma is lightweight but only answers "is my site online?". This is not an ideal answer for your homelab.

Beszel fixes this. It is lightweight like Uptime Kuma and provides deep resource insights like Grafana. Here is a breakdown of why Beszel is the ultimate homelab monitor and a complete step-by-step guide to installing it on your server.

Why Choose Beszel for Homelab Monitoring?

Here is why Beszel is the ultimate headache-free homelab monitor.

Simple and Lightweight

Beszel is a tiny binary tool that requires almost zero resources. It is easy to set up. It requires no public internet exposure.

Docker and Podman Stats

This is the feature that makes it a must-install. Beszel tracks CPU, memory, and network usage for every single container. This makes it easy to monitor which service is consuming the most resources on your host.

CPU monitoring

Smart, Configurable Alerts

When something breaks in your system, you can easily see where the exact problem is. You don't need to fully understand PromQL. Beszel features simple, configurable alerts for CPU, memory, disk, bandwidth, temperature, and general system status.

Multi-user with OAuth / OIDC

Beszel uses PocketBase to support multi-user OAuth/OIDC authentication. If you share your infrastructure, each user can manage their own systems. Users can authenticate using self-hosted services or public providers, with user creation enabled by setting USER_CREATION=true.

Private and Secure

Beszel handles backing up and restoring data automatically, whether you are working with your local disk or any S3-compatible cloud storage. It includes a built-in REST API, so you can easily grab your metrics to use in your own custom scripts or personal dashboards.

Now we will look at how to install Beszel. To install Beszel on your homelab server, follow the guidance below.

How to Install Beszel

Installing Beszel is straightforward. You can set up both the Hub and the Agent on the same Ubuntu/Debian server using Docker Compose. In this guide, we install Beszel on an Ubuntu 24.04 server.

Update system and install prerequisites

In any Linux distribution, when we install any tool, we first need to update and upgrade our system. So here we update and upgrade our Ubuntu server.

sudo apt update && sudo apt upgrade -y
sudo apt-get install -y ca-certificates curl

Install Docker

After updating your system, you have to install Docker using the official repository.

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Create the Docker Compose File

Create a directory for Beszel and set up your docker-compose.yml file.

mkdir ~/beszel && cd ~/beszel
nano docker-compose.yml

Paste the following configuration into the file. One more thing to note: no key is needed for installation. After installation, when you add a system, copy the public key and paste it into this file.

services:
  beszel:
    image: 'henrygd/beszel'
    container_name: 'beszel'
    restart: unless-stopped
    ports:
      - '8090:8090'
    volumes:
      - ./beszel_data:/beszel_data
    extra_hosts:
      - 'host.docker.internal:host-gateway'

  beszel-agent:
    image: 'henrygd/beszel-agent'
    container_name: 'beszel-agent'
    restart: unless-stopped
    network_mode: host
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      PORT: 45876
      KEY: 'YOUR_KEY_HERE'

Save and exit the file.

Start the Hub and Get Your Public Key

Next, we understand how to add a system and how to get the public key.

First, start the hub using the command below.

sudo docker compose up -d beszel

Then open your browser and paste the link below and replace YOUR_SERVER_IP with your server's IP.

http://YOUR_SERVER_IP:8090

Then a page will open like the image below. Create your admin account here.

Beszel's Homepage.

After opening the Beszel home page, click on +Add System. A page will open — fill in the details as shown in the image below and copy your Public Key.

In Beszel's add system page information.

Then save the system. For the Host/IP, enter host.docker.internal instead of 127.0.0.1.

Start the Agent

Now that you have your Public Key, let's start the agent. First, open your compose file again.

nano docker-compose.yml

Replace 'YOUR_KEY_HERE' under the beszel-agent environment block with the key you just copied, like ssh-ed25...., then save and exit.

Start the agent:

sudo docker compose up -d

Then go back to your browser after a few minutes and refresh the page. The "down" dot will turn "green".

Key Features to Check Out Once Installed

Once you have Beszel running, it is packed with built-in tools. Here we explore some features of Beszel.

Live Uptime Monitoring

In Beszel, you can see whether your Virtual Machine or server is online or offline — just look at the System dashboard. It shows simple indicators.

Server or VM is Up or Down in Beszels.

A green dot means the system is "Up" and a red dot means the system is "Down".

Built-in Alerting

You don't need a PhD in PromQL to get notified when something breaks in your system. You can set up alerts in Beszel so it automatically notifies you via Email, Pushover, or any custom Webhook the moment a system goes down, CPU spikes, or your disk fills up.

Live Docker Container Logs

You can view live logs for individual Docker containers on the dashboard. When you click on a specific system in Beszel, you can view container status, health, and pull up their basic logs. You don't need to open your terminal for that.

Host System Logs

Beszel also features a "Logs" tab on the system details page. Here you can see your individual containers or server logs. This pulls the last 200 lines of your host's system journal logs live from the agent. In the dashboard, at the top, you will see a containers option — click on it to open all your containers. Then you can view the logs of any virtual machine you want.

Conclusion

Beszel is a self-hosted, lightweight tool that gives you Grafana-level insights with Uptime Kuma-level simplicity. You can watch live containers and Docker logs instantly. It's lighter than Grafana, but way more useful than a simple uptime kuma.

About the author

Pankajbhai Chavda Pankajbhai Chavda
Updated on Jul 16, 2026
-