Installare Zammad su Ubuntu 22.04
Zammad è un helpdesk open source pensato per ticketing, email piping, knowledge base e automazioni. Su Ubuntu 22.04 l’approccio più lineare è usare i pacchetti ufficiali, così riduci il rischio di dipendenze incoerenti e hai un percorso di upgrade più pulito.
Questa guida parte da un server Ubuntu 22.04 aggiornato, con accesso root o sudo, e porta all’installazione funzionante con PostgreSQL, Redis, Elasticsearch e Nginx come reverse proxy.
Se stai facendo questa installazione in produzione, considera l’impatto su DNS, certificati TLS, posta in ingresso e risorse disco/RAM. Zammad non è solo una web app: dipende in modo stretto dal motore di ricerca e dalla coda interna, quindi conviene verificare i prerequisiti prima di procedere.
Prerequisiti e decisioni architetturali
Per un’installazione standard servono:
- Ubuntu 22.04 aggiornato
- Accesso amministrativo via sudo
- Almeno 4 GB di RAM, meglio 8 GB se prevedi più utenti o allegati consistenti
- Spazio disco sufficiente per database, log e allegati
- Un nome DNS dedicato, ad esempio
helpdesk.example.com
Zammad usa Elasticsearch per la ricerca. Se la ricerca è lenta o non funziona, l’esperienza utente degrada subito. Anche Redis e PostgreSQL sono componenti critici: il primo gestisce code e cache, il secondo i dati applicativi.
Per questa guida assumiamo un’installazione monolitica sullo stesso host. È la scelta più semplice per partire. In ambienti più grandi puoi separare PostgreSQL, Redis e Elasticsearch su nodi distinti, ma lì entrano in gioco latenza di rete, tuning e hardening aggiuntivo.
Aggiornare il sistema e preparare il server
Parti sempre da un sistema pulito e aggiornato. Questo riduce la probabilità di conflitti con librerie vecchie o kernel non allineati.
sudo apt update
sudo apt -y upgrade
sudo apt -y install curl gnupg ca-certificates apt-transport-https lsb-releaseDopo l’aggiornamento, verifica la release:
lsb_release -aAtteso: Ubuntu 22.04.x. Se non è così, fermati e riallinea il sistema prima di proseguire.
Se usi firewall locale, apri solo ciò che serve. In fase di installazione spesso bastano SSH, HTTP e HTTPS. Se l’installazione è dietro un reverse proxy, non esporre direttamente i servizi applicativi.
Installare PostgreSQL
Zammad richiede PostgreSQL come database principale. Su Ubuntu 22.04 il pacchetto della distribuzione è sufficiente nella maggior parte dei casi.
sudo apt -y install postgresql postgresql-contribVerifica che il servizio sia attivo:
systemctl status postgresql --no-pagerAtteso: stato active (running). Se non lo è, controlla i log con:
journalctl -u postgresql -n 50 --no-pagerCrea utente e database dedicati. Non usare il superuser postgres per l’applicazione.
sudo -u postgres psqlCREATE USER zammad WITH PASSWORD 'password_forte';
CREATE DATABASE zammad OWNER zammad ENCODING 'UTF8';
qUsa una password robusta e non lasciarla in chiaro nei file condivisi. Se devi documentarla, redigila o archiviala in un secret manager.
Se vuoi fare un controllo rapido della connessione, prova:
psql -h localhost -U zammad -d zammad -c 'SELECT version();'Atteso: output della versione PostgreSQL senza errori di autenticazione.
Installare Redis
Redis serve a Zammad per code, cache e componenti interni. Senza Redis il servizio può avviarsi male o degradare in modo evidente.
sudo apt -y install redis-serverControlla che sia attivo:
systemctl status redis-server --no-pagerAtteso: active (running). Verifica anche la risposta del ping:
redis-cli pingAtteso: PONG.
In installazioni standard non serve esporre Redis sulla rete. Lascia il binding locale e non aprire porte inutili nel firewall. Questo riduce la superficie d’attacco.
Installare Elasticsearch
La ricerca in Zammad dipende da Elasticsearch. È la parte che più spesso viene sottovalutata: se è assente o non compatibile, l’interfaccia può funzionare a metà, ma la ricerca e gli indici no.
Per Ubuntu 22.04 conviene seguire la versione supportata da Zammad nella documentazione ufficiale del rilascio che stai installando. Le versioni compatibili cambiano nel tempo, quindi non fissarti su un numero preso da vecchie guide. Se la tua release Zammad richiede una versione specifica, usa quella.
Tipicamente il flusso è:
- importare la chiave del repository Elasticsearch
- aggiungere il repository corretto
- installare il pacchetto
- impostare i parametri kernel richiesti
Un esempio generico del controllo dello stato è:
systemctl status elasticsearch --no-pagerAtteso: active (running). Se il servizio non parte, i log da guardare sono:
journalctl -u elasticsearch -n 100 --no-pagerPer Elasticsearch spesso il collo di bottiglia è la memoria virtuale e il limite vm.max_map_count. Se il servizio fallisce all’avvio, controlla questo parametro:
sysctl vm.max_map_countAtteso: valore adeguato alla release richiesta, spesso almeno 262144. Se serve impostarlo:
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-elasticsearch.conf
sudo sysctl --systemQuesta è una modifica reversibile: rimuovi il file di configurazione e ricarica sysctl se devi tornare indietro.
Aggiungere il repository ufficiale di Zammad
Il modo più pulito è usare il repository ufficiale del progetto. In questo modo installi pacchetti integrati e mantenuti per la distribuzione supportata.
Prima di aggiungere un repository, verifica sempre la pagina ufficiale della release che stai usando. I nomi del repository e la chiave GPG possono cambiare. Se copi un comando vecchio, rischi errore di firma o pacchetto non trovato.
Il pattern corretto è:
- importare la chiave GPG del repository
- aggiungere la source list
- aggiornare l’indice APT
Dopo l’aggiunta, controlla che APT veda il pacchetto:
apt-cache policy zammadAtteso: origine del pacchetto sul repository Zammad, non solo sui repository Ubuntu standard.
Installare Zammad
A questo punto puoi installare il pacchetto principale. In genere il metapacchetto porta con sé le dipendenze necessarie o comunque prepara l’ambiente applicativo.
sudo apt update
sudo apt -y install zammadAl termine verifica i servizi installati:
systemctl list-units --type=service | grep -i zammadIn una installazione tipica troverai componenti come web socket, scheduler, processi di background e web server integrati o app service. I nomi esatti dipendono dalla versione, quindi non fissarti sul servizio singolo: quello che conta è che l’installazione abbia registrato i suoi unit file e che non ci siano errori in avvio.
Se il pacchetto non si installa, le cause più comuni sono repository errato, dipendenze non soddisfatte o versione non compatibile con la release Ubuntu. In quel caso il primo controllo è:
apt-cache policy zammad
apt -o Debug::pkgProblemResolver=yes install zammadCosì vedi subito da dove APT sta tentando di prendere il pacchetto e dove si inceppa la risoluzione.
Configurare Zammad con l’assistente iniziale
Dopo l’installazione, apri il browser sul nome host configurato, ad esempio https://helpdesk.example.com. Se il proxy non è ancora configurato, potresti dover passare per HTTP locale o per il servizio esposto dal pacchetto, ma in produzione è preferibile arrivare subito al dominio finale.
Al primo accesso Zammad mostra normalmente la procedura iniziale di configurazione. Qui imposti:
- nome dell’istanza
- fuso orario
- account amministratore iniziale
- parametri email
- integrazioni base
Compila con attenzione il profilo amministrativo. L’errore tipico è usare una mailbox personale non presidiata o non documentata. Meglio un indirizzo funzionale, con accesso controllato e rotazione sicura delle credenziali.
Se l’interfaccia web non risponde, controlla la catena minima:
curl -I http://127.0.0.1
curl -I https://helpdesk.example.comAtteso: una risposta HTTP valida, non timeout e non reset. Se hai un reverse proxy, controlla che il backend sia raggiungibile e che i log del proxy non riportino 502 o 504.
Configurare Nginx come reverse proxy
In molti casi il pacchetto Zammad include il necessario per servire la web app, ma un reverse proxy Nginx resta una scelta comune per TLS, redirect e gestione delle connessioni. Se lo usi, tienilo semplice.
Obiettivi minimi:
- forzare HTTPS
- passare header corretti
- mantenere il WebSocket se richiesto dalla versione
- evitare buffering aggressivo se l’app lo sconsiglia
Un controllo base della configurazione è:
nginx -tAtteso: syntax is ok e test is successful. Poi ricarica:
sudo systemctl reload nginxSe la pagina va in errore dopo la modifica del proxy, i punti da verificare sono i log di Nginx e il backend Zammad. Tipicamente:
journalctl -u nginx -n 50 --no-pager
journalctl -u zammad -n 50 --no-pagerSe usi certificati Let’s Encrypt, integra il rinnovo automatico e verifica che il certificato servito corrisponda al nome DNS pubblico. Un mismatch TLS si traduce in errori lato browser o in warning che gli utenti spesso interpretano come “sito non funziona”.
Configurare TLS
Per un helpdesk esposto agli utenti, TLS non è opzionale. Serve sia per la sicurezza sia per evitare problemi con cookie, login e integrazioni email/webhook.
Con Certbot il flusso classico è:
sudo apt -y install certbot python3-certbot-nginx
sudo certbot --nginx -d helpdesk.example.comControlla il rinnovo:
systemctl list-timers | grep certbotAtteso: timer attivo o meccanismo equivalente. Verifica anche il certificato dal lato client:
openssl s_client -connect helpdesk.example.com:443 -servername helpdesk.example.comAtteso: catena corretta e nome host coerente. Se il certificato è sbagliato, la causa può essere DNS, virtual host errato o proxy davanti a Nginx che termina TLS altrove.
Configurare la posta in ingresso e in uscita
Uno dei punti chiave di Zammad è la gestione della posta. Senza email il ticketing perde gran parte del suo valore.
Per l’invio, configura SMTP con un account dedicato. Per la ricezione, usa IMAP o un meccanismo di fetch supportato dal tuo provider. Se hai un dominio aziendale, cura anche SPF, DKIM e DMARC, altrimenti rischi consegna scarsa o finita in spam.
Controlli utili:
- la mailbox risponde con autenticazione corretta
- l’ora del server è sincronizzata con NTP
- i record DNS del dominio mail sono coerenti
Se le notifiche non partono, guarda i log applicativi e del mail relay. Il problema spesso non è Zammad ma il relay SMTP che rifiuta mittente, TLS o autenticazione.
Verifiche post-installazione
Dopo l’installazione fai una validazione minima, prima di dare il sistema agli utenti.
- Apri il sito e fai login con l’account admin iniziale.
- Crea un ticket di prova.
- Verifica ricerca e aggiornamento stato ticket.
- Invia una mail di test verso l’helpdesk e controlla la creazione automatica del ticket.
- Controlla che allegati piccoli e medi vengano caricati correttamente.
Dal lato sistema, controlla i servizi e le risorse:
systemctl --failed
df -h
free -h
topAtteso: nessun servizio fallito, disco con margine sufficiente, memoria non saturata, assenza di swap thrashing. Se il nodo è stretto di RAM, Elasticsearch è il primo candidato a soffrire.
Tuning minimo per stabilità
Su installazioni piccole puoi partire con i default, ma ci sono alcuni punti da tenere d’occhio:
- memoria per Elasticsearch
- spazio su disco per allegati e indici
- rotazione log
- backup del database
Per il backup PostgreSQL puoi usare un dump periodico. Esempio base:
sudo -u postgres pg_dump zammad | gzip > /backup/zammad-$(date +%F).sql.gzConserva il backup fuori dal server se il sistema è critico. Un backup locale non ti protegge da guasto disco, ransomware o errore umano.
Se vuoi monitorare l’andamento nel tempo, tieni almeno queste metriche:
- stato dei servizi systemd
- latenza pagina iniziale
- errori HTTP 5xx
- uso RAM e swap
- dimensione indici Elasticsearch
Problemi comuni e come isolarli
Se Zammad non parte o mostra pagina bianca, non andare subito a modificare configurazioni a caso. Segui il layer corretto:
- DNS: il nome risolve al server giusto?
- Edge: proxy o CDN rispondono?
- Origin: Nginx o il servizio applicativo sono up?
- App: il backend Zammad è sano?
- DB: PostgreSQL è raggiungibile?
- Storage: disco pieno o permessi sbagliati?
Comandi rapidi utili:
curl -I https://helpdesk.example.com
systemctl status nginx postgresql redis-server elasticsearch --no-pager
journalctl -u zammad -n 100 --no-pager
df -hSe trovi 502 Bad Gateway, il problema è spesso nel backend o nel proxy upstream. Se trovi 500, guarda i log applicativi e il database. Se la pagina resta in loading infinito, sospetta Elasticsearch, Redis o una coda interna bloccata.
Upgrade e manutenzione
Una volta in produzione, l’aspetto più importante è mantenere il sistema aggiornato senza rompere la compatibilità tra componenti. Prima di aggiornare Zammad, leggi sempre le note di rilascio e verifica la versione richiesta di Elasticsearch, PostgreSQL e Redis.
Prima di un upgrade serio:
- backup del database
- backup configurazioni Nginx e file applicativi personalizzati
- snapshot della VM se disponibile
- finestra di manutenzione
Durante il cambio, osserva i log in tempo reale:
journalctl -fSe qualcosa va storto, il rollback minimo è tornare ai pacchetti precedenti e ripristinare database e configurazioni salvate. Non aggiornare mai senza sapere come tornare indietro.
Conclusione operativa
Installare Zammad su Ubuntu 22.04 non è difficile, ma va trattato come una piccola piattaforma: database, ricerca, cache, proxy, TLS e posta devono funzionare insieme. Il punto critico non è tanto l’installazione del pacchetto, quanto il controllo della catena completa e la preparazione di backup e rollback.
Se vuoi, il passo successivo sensato è documentare una variante più vicina al tuo scenario: installazione con Docker, reverse proxy dietro Cloudflare, oppure configurazione completa di posta in ingresso e uscita con dominio aziendale.
Assunzione: i comandi e i path indicati sono riferiti a un’installazione standard su Ubuntu 22.04 con repository ufficiali e nome host dedicato.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.