1 14/05/2026 9 min

Repository Zabbix su Debian 12: partire dal pacchetto giusto

Su Debian 12 conviene installare Zabbix dai repository ufficiali del progetto, non dai pacchetti generici della distribuzione. Il motivo è semplice: versione più coerente tra server, frontend, agent e supporto al database, con meno sorprese quando devi aggiornare o aggiungere componenti. Se parti da una macchina pulita, il flusso corretto è: repository Zabbix, database, frontend PHP, server Zabbix, agent, poi verifica dell’intera catena. In questo modo riduci il rischio di ritrovarti con dipendenze vecchie o moduli PHP non allineati.

Per questa guida assumo Debian 12, installazione standard, accesso root o sudo e database MariaDB/MySQL locale. Se usi PostgreSQL, il concetto non cambia, ma cambiano alcuni pacchetti e i comandi SQL iniziali. Dove il dato non è certo, lo segnalo: ad esempio il nome esatto del pacchetto dipende dalla versione Zabbix che scegli e dal backend database, quindi va verificato sul repository ufficiale prima di procedere.

Preparazione del sistema e prerequisiti

Prima di installare, aggiorna l’indice dei pacchetti e verifica che l’orologio di sistema sia corretto. Zabbix usa TLS, timestamp e controlli temporali; un server con ora sballata genera problemi inutili durante login, certificati e confronti nei grafici.

1. Aggiorna il sistema:

sudo apt update
sudo apt -y upgrade

2. Installa strumenti base e verifica NTP:

sudo apt -y install wget curl gnupg ca-certificates lsb-release
timedatectl status

Se `System clock synchronized: yes` non compare, chiudi prima quel gap. Senza tempo affidabile, i certificati e le sessioni web possono comportarsi in modo incoerente.

Aggiungere il repository ufficiale Zabbix

Il repository va scelto in base alla release che vuoi installare. Al momento della scrittura, la pratica più comune su Debian 12 è usare il pacchetto di configurazione del repository Zabbix per la versione stabile supportata. Il nome del file cambia con la major release, quindi verifica il download sul sito Zabbix prima di eseguire i comandi.

3. Scarica e installa il pacchetto del repository Zabbix: sostituisci la versione con quella che hai scelto.

wget https://repo.zabbix.com/zabbix/<VERSIONE>/debian/pool/main/z/zabbix-release/zabbix-release_<VERSIONE>-1+debian12_all.deb
sudo dpkg -i zabbix-release_<VERSIONE>-1+debian12_all.deb
sudo apt update

Se il download fallisce, non forzare workaround a caso. Verifica la URL nel repository Zabbix, perché il path cambia fra major release. Il controllo minimo è che `apt-cache policy zabbix-server-mysql` mostri un candidato proveniente da `repo.zabbix.com`.

Database: MariaDB o PostgreSQL, ma con schema iniziale corretto

Zabbix senza database non parte. Qui il punto non è solo installare MariaDB o PostgreSQL, ma creare utente, database e charset corretti prima di importare lo schema iniziale. Se sbagli collation o permessi, lo scopri dopo, quando il frontend è già installato e il server non riesce a scrivere le tabelle di history o trends.

4. Installa MariaDB, se scegli questo backend:

sudo apt -y install mariadb-server mariadb-client
sudo systemctl enable --now mariadb

5. Crea database e utente dedicato. Non usare root applicativo e non riutilizzare credenziali di altri servizi.

sudo mysql
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ScegliUnaPasswordLunga';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;

6. Verifica l’accesso con il nuovo utente:

mysql -u zabbix -p -h localhost zabbix -e 'SHOW TABLES;'

L’output può essere vuoto se il database è appena creato: in quel caso il test corretto è l’autenticazione riuscita, non la presenza di tabelle.

Installare i pacchetti Zabbix server, frontend e agent

A questo punto installa i componenti principali. Su Debian 12, con MariaDB, servono in genere server, frontend web, supporto database e agent. Il frontend può usare Apache o Nginx; qui uso Apache perché la sequenza di setup è più lineare per una prima installazione. Se preferisci Nginx, cambia solo il layer web, non il cuore del sistema.

7. Installa i pacchetti principali:

sudo apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

Se usi PostgreSQL, il pacchetto del server cambia in `zabbix-server-pgsql` e anche gli script SQL vanno importati con il backend corretto. Non mischiare i due mondi: è uno degli errori più comuni nelle installazioni frettolose.

Importare lo schema del database Zabbix

L’import iniziale crea tabelle, indici e oggetti necessari al server. È il passaggio che più spesso viene saltato o eseguito nel database sbagliato. Il file da importare dipende dal pacchetto e dal backend, quindi verifica il path prima di lanciare il comando. Su Debian 12, con pacchetti Zabbix ufficiali, lo schema è di solito sotto `/usr/share/zabbix-sql-scripts/`.

8. Importa lo schema nel database `zabbix`:

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix

Se il file non esiste, verifica il percorso con:

dpkg -L zabbix-sql-scripts | grep -E 'server\.sql|schema|mysql'

Un import corretto non deve produrre errori di permessi né di engine. Se vedi `Access denied`, il problema è l’utente MySQL. Se vedi errori di charset o collation, il database non è stato creato con i parametri giusti e conviene correggerlo subito, prima di andare oltre.

Configurare il server Zabbix

Il server deve sapere dove si trova il database e con quali credenziali connettersi. Il file da modificare è `zabbix_server.conf`. Qui conviene fare una modifica minima e tracciabile, senza toccare altri parametri finché il servizio non sale pulito.

9. Imposta la password del database nel file di configurazione:

sudo cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
sudo nano /etc/zabbix/zabbix_server.conf

10. Cerca e valorizza almeno queste direttive:

DBName=zabbix
DBUser=zabbix
DBPassword=ScegliUnaPasswordLunga

11. Avvia e abilita il servizio:

sudo systemctl enable --now zabbix-server
sudo systemctl status zabbix-server --no-pager

Se il servizio fallisce, il primo controllo utile è il journal:

journalctl -u zabbix-server -n 100 --no-pager

In questa fase gli errori tipici sono tre: password errata, schema non importato, permessi database insufficienti. Sono tutti falsificabili in pochi minuti e non richiedono ancora interventi strutturali.

Configurare il frontend PHP e Apache

Il frontend web è il punto dove molti amministratori sottovalutano la parte PHP. Zabbix richiede estensioni precise, timezone corretta e limiti ragionevoli per upload e memoria. Se il frontend si apre ma la pagina di configurazione mostra warning, non ignorarli: spesso anticipano problemi di grafici, login o integrazioni API.

12. Installa e abilita Apache, se non già presente:

sudo apt -y install apache2
sudo systemctl enable --now apache2

13. Verifica il file PHP di Zabbix, in genere in `/etc/zabbix/apache.conf`, e imposta una timezone valida. Esempio:

php_value date.timezone Europe/Rome

14. Riavvia Apache dopo le modifiche:

sudo systemctl restart apache2

15. Apri il browser su `http://IP-del-server/zabbix` e completa il wizard. Durante la procedura inserisci i dati del database, verifica i prerequisiti PHP e conferma la connessione al server Zabbix. Il wizard ti segnala subito se manca un modulo, se la timezone non è accettata o se il server non risponde.

Avviare e verificare l’agent

L’agent non è obbligatorio per vedere il frontend, ma è utile quasi subito per monitorare il nodo locale. Installarlo e registrarlo correttamente evita di dover tornare dopo per capire se il problema è nel server Zabbix o nella macchina monitorata.

16. Abilita l’agent:

sudo systemctl enable --now zabbix-agent
sudo systemctl status zabbix-agent --no-pager

17. Controlla il file `zabbix_agentd.conf` se devi definire il server autorizzato o il nome host. I parametri più comuni sono:

Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=nome-host-esatto

Il nome host deve combaciare con quello creato nel frontend, altrimenti i controlli attivi non si agganciano e credi che l’agent sia rotto quando in realtà è solo un mismatch di naming.

Prima verifica funzionale: capire se la catena è intera

A installazione finita, non fermarti al “la pagina si apre”. Devi verificare che ogni layer risponda: database, server, frontend, agent. Un controllo rapido e utile è questo:

systemctl is-active mariadb apache2 zabbix-server zabbix-agent
ss -ltnp | grep -E '(:80|:10051)'
journalctl -u zabbix-server -n 50 --no-pager

Condizione attesa: tutti i servizi attivi, Apache in ascolto su 80 o 443 se hai già TLS, Zabbix server in ascolto su 10051, nessun errore ripetuto nel journal. Se il server parte ma il frontend continua a mostrare errore di connessione, il problema è quasi sempre nelle credenziali DB o nel database non importato, non nel web server.

Hardening minimo e cose da non lasciare in sospeso

Una volta che tutto funziona, fai il minimo indispensabile per non lasciare il sistema esposto. Zabbix è un bersaglio interessante perché espone dati di infrastruttura, host, servizi e spesso credenziali di integrazione. Non serve irrigidirlo in modo eccessivo subito, ma almeno il baseline va chiuso.

18. Proteggi l’accesso web con TLS. Se il sito è pubblico, non lasciare il frontend in HTTP puro. Puoi usare un certificato Let’s Encrypt o un certificato interno, a seconda del contesto. Il controllo minimo è che il browser vada su `https://` e che il certificato sia valido.

19. Limita l’esposizione del database: MariaDB deve restare in ascolto solo localmente, salvo necessità precise. Verifica con:

ss -ltnp | grep 3306

20. Non lasciare credenziali deboli nel file di configurazione più del necessario. Se il server è condiviso o soggetto ad audit, valuta permessi stretti su `/etc/zabbix/` e revisione periodica dei file di configurazione. Le password non vanno mai copiate in chiaro in ticket, note o documentazione operativa.

Problemi tipici subito dopo l’installazione

Se il wizard web non completa l’installazione, i casi più frequenti sono prevedibili. Primo: PHP non ha il timezone giusto o manca un modulo richiesto. Secondo: il database non è stato importato o l’utente non ha privilegi. Terzo: il server Zabbix non riesce a leggere il database perché la password in `zabbix_server.conf` non coincide. Questi casi si distinguono in pochi minuti leggendo i log giusti, senza andare a tentativi.

Per il frontend, controlla i log di Apache, ad esempio:

journalctl -u apache2 -n 100 --no-pager

Per il server Zabbix, il file di log è in genere sotto `/var/log/zabbix/zabbix_server.log`. Se i permessi non sono corretti o la directory non esiste, il servizio lo segnala nel journal. La verifica più utile resta sempre quella: errore concreto, file preciso, correzione minima, nuovo avvio.

Conclusione operativa: installazione pulita e pronta per la crescita

Su Debian 12, installare Zabbix bene significa soprattutto non improvvisare il database e non sottovalutare il frontend PHP. Se il repository è corretto, lo schema è importato nel database giusto e i servizi partono senza errori, hai già risolto l’80% dei problemi che in genere emergono dopo l’installazione. Il resto è rifinitura: TLS, permessi, retention, template e onboarding degli host.

La sequenza più solida resta sempre la stessa: repository ufficiale, database dedicato, import schema, configurazione server, frontend, agent, verifica log. È una procedura semplice, ma solo se la fai nell’ordine giusto e con controlli intermedi. Se salti un passaggio, Zabbix te lo ricorda subito: meglio leggerlo nei log che scoprirlo in produzione.