Come fare self-hosting di Beszel su un VPS (Guida completa)
Beszel è un pannello di monitoraggio self-hosted che ti fornisce visibilità in tempo reale su CPU, RAM, disco e metriche di rete su più server. È estremamente leggero (funziona con 512 MB di RAM), usa SQLite per l’archiviazione e può essere distribuito in pochi minuti tramite Docker. Questa guida copre tutto, dalla scelta del VPS al monitoraggio del primo server remoto.
Prerequisiti
Prima di iniziare, hai bisogno di:
- Un VPS — 1 GB RAM, 1 vCPU, 10 GB di storage minimo. Provider consigliati:
- Hetzner Cloud — 4,15 EUR/mese, 4 GB RAM, 40 GB NVMe (miglior rapporto qualità /prezzo UE)
- Contabo VPS — 5,99 EUR/mese, 8 GB RAM, 200 GB NVMe (miglior storage)
- DigitalOcean — 6 USD/mese, 1 GB RAM (adatto ai principianti)
- Ubuntu 22.04 o Debian 12 installato sul VPS.
- Accesso SSH al VPS.
- Docker (o download diretto del binario Beszel).
- Porta 8090 aperta nel firewall.
Passo 1: Connettersi al VPS
ssh root@ip-del-tuo-vps
Aggiornare i pacchetti:
apt update && apt upgrade -y
Passo 2: Installare Docker
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
Verificare l’installazione:
docker --version
Passo 3: Aprire la porta 8090 nel firewall
Con UFW su Ubuntu:
ufw allow 8090/tcp
ufw reload
Passo 4: Distribuire l’hub Beszel
Opzione A: Docker Run (avvio rapido)
docker run -d \
--name beszel \
--restart unless-stopped \
-p 8090:8090 \
-v beszel_data:/beszel_data \
henrygd/beszel
Opzione B: Docker Compose (consigliato)
Creare una directory di progetto:
mkdir -p /opt/beszel && cd /opt/beszel
Creare 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:
Avviare il servizio:
docker compose up -d
Verificare lo stato:
docker compose ps
docker compose logs -f
Opzione C: Installazione binaria (senza Docker)
Scaricare l’ultima versione per la propria architettura:
curl -sL https://api.github.com/repos/henrygd/beszel/releases/latest \
| grep "browser_download_url.*linux_amd64" \
| cut -d '"' -f 4 \
| xargs curl -Lo /usr/local/bin/beszel
chmod +x /usr/local/bin/beszel
Creare un servizio systemd in /etc/systemd/system/beszel.service:
[Unit]
Description=Beszel monitoring hub
After=network.target
[Service]
ExecStart=/usr/local/bin/beszel serve
WorkingDirectory=/var/lib/beszel
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Abilitare e avviare:
mkdir -p /var/lib/beszel
systemctl daemon-reload
systemctl enable --now beszel
Passo 5: Primo accesso
Apri il browser e naviga su:
http://ip-del-tuo-vps:8090
Al primo avvio ti verrà chiesto di creare un account amministratore. Usa una password sicura.
Passo 6: Aggiungere server da monitorare
Beszel usa un agente leggero installato su ogni server da monitorare.
6.1 Generare una chiave agente
Nel pannello Beszel:
- Fare clic su Aggiungi server.
- Inserire un nome e l’hostname o l’IP del server.
- Copiare la Chiave agente generata — sarà necessaria sul server monitorato.
6.2 Installare l’agente sul server di destinazione
Connettersi via SSH al server da monitorare, poi eseguire:
Docker:
docker run -d \
--name beszel-agent \
--restart unless-stopped \
--network host \
-e KEY="<incolla-la-tua-chiave-agente-qui>" \
henrygd/beszel-agent
Binario:
curl -sL https://api.github.com/repos/henrygd/beszel/releases/latest \
| grep "browser_download_url.*beszel-agent.*linux_amd64" \
| cut -d '"' -f 4 \
| xargs curl -Lo /usr/local/bin/beszel-agent
chmod +x /usr/local/bin/beszel-agent
Creare /etc/systemd/system/beszel-agent.service:
[Unit]
Description=Beszel monitoring agent
After=network.target
[Service]
ExecStart=/usr/local/bin/beszel-agent
Environment=KEY=<la-tua-chiave-agente>
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Abilitare e avviare:
systemctl daemon-reload
systemctl enable --now beszel-agent
In pochi secondi il server dovrebbe apparire come Connesso nel pannello Beszel.
Passo 7: (Opzionale) Mettere Beszel dietro un reverse proxy
Per accesso HTTPS, configurare Caddy o Nginx davanti a Beszel.
Esempio Caddy (/etc/caddy/Caddyfile):
monitor.tuodominio.it {
reverse_proxy localhost:8090
}
Esempio Nginx:
server {
listen 443 ssl;
server_name monitor.tuodominio.it;
ssl_certificate /etc/letsencrypt/live/monitor.tuodominio.it/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.tuodominio.it/privkey.pem;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Risoluzione dei problemi
| Problema | Soluzione |
|---|---|
| Pannello non raggiungibile | Verificare il firewall (ufw status), confermare che il container sia attivo (docker ps) |
| L’agente non si connette | Verificare la variabile d’ambiente KEY, controllare i log dell’agente (docker logs beszel-agent) |
| Alto utilizzo disco | Ridurre l’intervallo di retention nelle impostazioni Beszel |
| Il container non si avvia | Controllare i log: docker compose logs beszel |
Domande frequenti
Come faccio il backup dei dati Beszel?
L’intero stato di Beszel si trova nel volume Docker beszel_data. Creare un backup del database:
docker exec beszel sqlite3 /beszel_data/beszel.db ".backup /beszel_data/beszel.db.bak"
Poi copiare il file di backup fuori dal server con rsync o scp.
Posso monitorare server Windows con Beszel?
L’agente Beszel supporta Linux, macOS e Windows. Installa il binario Windows e registralo come servizio Windows.
Beszel richiede una connessione internet?
No. Beszel è completamente autonomo. Hub e agenti comunicano solo tra loro, senza chiamate esterne. Funziona perfettamente su una rete privata o VPN.