Beszel è una piattaforma leggera e self-hosted per il monitoraggio di sistemi e container, progettata per offrire una panoramica in tempo reale e storica delle prestazioni dei server, con particolare attenzione a semplicità, efficienza e scalabilità minimale.
A differenza di soluzioni più complesse come Prometheus + Grafana, Zabbix o Netdata, Beszel è pensato per essere estremamente facile da installare, configurare e mantenere anche in ambienti con risorse limitate — come homelab, piccoli VPS, o cluster edge — senza rinunciare a funzionalità chiave come alerting, backup, autenticazione avanzata e gestione multi-utente.
PREREQUISITI
Prima di installare Beszel, assicurati di soddisfare i seguenti requisiti:
- Un sistema che esegue Ubuntu Server 24.04
- Un account utente con privilegi sudo.
- Una connessione Internet stabile.
AGGIORNAMENTO DEL SISTEMA OPERATIVO
Innanzitutto aggiornare gli elenchi dei pacchetti e aggiornare i pacchetti installati per assicurarti che il sistema sia aggiornato:
0 |
apt update -y && sudo apt upgrade -yapt-get update -y && sudo apt-get upgrade -yapt autoremove -y |
Per evitare potenziali conflitti, rimuovere tutti i pacchetti preesistenti correlati a Docker con il seguente comando:
0 |
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done |
Installare gli strumenti necessari per il processo di installazione con i seguenti comandi:
0 |
apt-get updateapt-get install -y ca-certificates curl |
Per aggiungere la chiave GPG ufficiale di Docker creare una directory per memorizzare la chiave GPG, scaricare la chiave e impostare le autorizzazioni appropriate con i comandi:
0 |
install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascchmod a+r /etc/apt/keyrings/docker.asc |
Configurare il repository Docker aggiungendo il repository Docker all’elenco dei sorgenti del sistema con i comandi:
0 |
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 |
Aggiornare gli elenchi dei pacchetti con il comando:
0 |
apt-get update |
Installare Docker e i suoi plugin associati con il comando:
0 |
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
Verificare l’installazione eseguendo un contenitore di test con il comando:
0 |
docker run hello-world |
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
0 |
Unable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-worlde6590344b1a5: Pull completeDigest: sha256:ec153840d1e635ac434fab5e377081f17e0e15afab27beb3f726c3265039cfffStatus: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/ |
CONFIGURAZIONE DI BESZEL
Creare una directory per Beszel con il comando:
0 |
mkdir beszel && cd beszel |
Creare un file docker-compose.yml con il comando:
0 |
nano docker-compose.yml |
Aggiungere il contenuto sottostante al file:
0 |
services:beszel:image: henrygd/beszel:latestcontainer_name: beszelrestart: unless-stoppedextra_hosts:- host.docker.internal:host-gatewayports:- 8090:8090volumes:- ./beszel_data:/beszel_databeszel-agent:image: henrygd/beszel-agent:latestcontainer_name: beszel-agentrestart: unless-stoppednetwork_mode: hostvolumes:- /var/run/docker.sock:/var/run/docker.sock:roenvironment:PORT: 45876# Do not remove quotes around the keyKEY: 'UPDATE WITH YOUR PUBLIC KEY (copy from "Add system" dialog)' |
Salvare e chiudere il file
Avviare Beszel eseguendo il comando:
0 |
docker compose up -d |
Questo comando estrarrà le immagini necessarie e avvierà i contenitori Beszel e Beszel Agent.
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
0 |
[+] Running 6/6✔ beszel Pulled 2.5s✔ 28be1b01da41 Pull complete 0.8s✔ 987712dae23f Pull complete 0.8s✔ beszel-agent Pulled 2.3s✔ 2caa744e88ee Pull complete 0.6s✔ 5d5ecc137077 Pull complete 0.6s[+] Running 3/3✔ Network beszel_default Created 0.0s✔ Container beszel Started 0.6s✔ Container beszel-agent Started 0.6s |
ACCESSO ALL’INTERFACCIA WEB DI BESZEL
Accedere all’interfaccia di Beszel aprendo un browser web e richiamando il seguente link:
http://IP-SERVER-O-FQDN:8090
Creare l’account amministratore inserendo la mail e la password quindi cliccare Create Account
Se è tutto OK dovremmo vedere la Dashboard di Beszel come mostrato nell’immagine sovrastante
AGGIUNTA DI UN SISTEMA AL MONITORAGGIO
Collegarsi alla Web Gui di Beszel
Cliccare su Add System
Inserire i dettagli richiesti dall’agente/cliente:
- Nome del sistema
- Indirizzo host o IP
- Numero di porta
- Chiave pubblica (copiarla dalla finestra di dialogo “Aggiungi sistema” in Beszel)
Cliccare Save System per aggiungere il sistema a Beszel
INSTALLAZIONE DELL’AGENTE/CLIENT SUI SISTEMI DA MONITORARE
È possibile copiare un comando preconfigurato nell’interfaccia utente Web dell’hub quando si aggiunge un nuovo sistema, quindi nella maggior parte dei casi non è necessario eseguire questo comando manualmente.
Questo comando scarica ed esegue lo script. Lo script installa l’ultimo file binario e crea un servizio systemd per assicurarsi che venga eseguito dopo un riavvio.
Facoltativamente è possibile abilitare gli aggiornamenti giornalieri automatici.install-agent.sh
Di seguito il comando:
0 |
curl -sL https://raw.githubusercontent.com/henrygd/beszel/main/supplemental/scripts/install-agent.sh -o install-agent.sh && chmod +x install-agent.sh && ./install-agent.sh |
Sostituire con la porta desiderata e con la chiave pubblica effettiva (è possibile trovare la chiave pubblica nella sezione Aggiungi sistema dell’interfaccia utente).Port_NumberPublic_Key
NOTA BENE: una volta completata l’installazione, il nome del sistema apparirà sul server di monitoraggio e sarai in grado di monitorarlo da lì.
Se si sceglie di scaricare manualmente l’agente procedere nel seguente modo: scarica il binario. Scaricare l’ultimo file binario dalle versioni che corrispondono al sistema operativo/architettura del tuo server con il comando:
0 |
curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel-agent | tee ./beszel-agent >/dev/null && chmod +x beszel-agent |
Avviare l’agente con il comando:
0 |
PORT=45876 KEY="<public key>" ./beszel-agent |
Per aggiornare l’agente eseguire il comando:
0 |
./beszel-agent update |
Al termine dell’installazione dell’Agent dovremmo visualizzare le info relative al server aggiunto
Dovremmo visualizzare una schermata come quella sovrastante con il server in verde. Cliccare sul nome del server per vedere tutte le info sul monitoraggio
Da questa schermata è possibile visualizzare le info relative alla CPU, Ram, Disco, Network, Uptime, ecc ecc
CONFIGURAZIONE DELL SERVER SMTP E DELLE NOTIFICHE MAIL
Per configurare il Server STMP dalla GUi di Beszel
Cliccare sulla rotellina in altro a destra quindi selezionare dal menù a sinstra Notification quindi cliccare sul link configure an SMTP server
Verrà fatto un redirect alla pagina del Super Login. Inserire le credenziali di amministratore di Beszel per accedere
Dal menù a sinistra cliccare sull’icona dei Tools -> Quindi Mail Settings -> Abilitare l’opzione Use SMTP mail server (recommended) quindi inserire l’IP o l’FDQN del server SMTP con la relativa porta
Cliccare Save Changes per applicare le modifiche
A questo punto sarà possibile ricevere le notifiche via mail.
🧩 Caratteristiche principali
- Monitoraggio CPU, memoria e rete sia a livello del sistema host che dei container Docker/Podman, con raccolta di dati storici per analisi nel tempo
- Alert configurabili su metriche critiche quali utilizzo di CPU, memoria, disco, larghezza di banda, temperatura, media di carico e stato del sistema
- Architettura multi-utente, con gestione delle autorizzazioni e condivisione dei sistemi tra amministratori e utenti finali
- Autenticazione OAuth / OIDC, consentendo l’integrazione con provider esterni — l’autenticazione con password può essere disabilitata
- Backup automatici, su disco locale o storage S3‑compatibile, per il salvataggio e ripristino dei dati
- API REST per accedere ai dati di monitoraggio da script o applicazioni esterne
⚙️ Architettura
Beszel è composto da due componenti principali:
- Hub – un’applicazione web basata su PocketBase, che fornisce dashboard centralizzate e gestione degli utenti e dei sistemi monitorati
- Agent – un servizio da installare su ciascun host o container da monitorare, responsabile del rilevamento delle metriche e dell’invio al hub. Può essere distribuito via Docker/Podman, binario autonomo, pacchetto Homebrew / Scoop / WinGet o add‑on Home Assistant
📊 Metriche supportate
- CPU (host e container)
- Memoria (inclusa swap e ZFS ARC)
- Utilizzo disco e I/O (con supporto per più dispositivi)
- Rete (trafico di sistema e container)
- Load average del sistema
- Temperatura da sensori hardware
- GPU (Nvidia/AMD) solo tramite l’agent binario
🚀 Perché scegliere Beszel?
- È molto più leggero rispetto a stack più complessi come Prometheus + Grafana o Checkmk, ideale per ambienti con risorse limitate o homelab
- Richiede una configurazione minima ed è operativo immediatamente, anche in ambiente offline (non richiede esposizione su Internet pubblico)
- Ideale per chi cerca un sistema di monitoraggio semplice e rapido da implementare, con backup integrati e supporto multi-utente.
🧠 In sintesi
Obiettivo: Monitoraggio server/container minimale ma completo
Componenti: Hub (PocketBase) + Agent (vari modalità di installazione)
Metriche: CPU, memoria, disco, rete, I/O, temperatura, GPU
Funzionalità chiave: Alert, backup automatico, OAuth/OIDC, API REST, autenticazione multi‑utente
Vantaggi: Leggerezza, facilità di installazione, semplicità d’uso, self‑hosting
0 commenti