Zammad è una soluzione open source di assistenza clienti / Tickets basata su Ruby e PostgreSQL. Aiuta le organizzazioni a gestire le comunicazioni tra vari canali di posta elettronica, chat e social media.
In questa guida, vi mostrerò come installare il sistema di ticketing Zammad sul server Rocky Linux. Eseguiremo Zammad con PostgreSQL, Nginx e Elasticsearch.
I prerequisiti
Prima di iniziare, assicurati di avere quanto segue:
- Un server Rocky Linux 9 aggiornato,
- Un utente non root con privilegi di amministratore.
- Un nome di dominio indicava un indirizzo IP del server.
- Un SELinux con stato permissivo.
Installazione delle dipendenze
Installeremo le dipendenze necessarie al funzionamento di Zammad, questo include il repository EPEL, il database PostgreSQL, il server web Nginx, Redis e Node.js.
Prima di tutto, aggiungiamo il repository EPEL al tuo sistema Rocky Linux con quanto segue.
dnf install epel-release
Ora esegui il comando sottostante per abilitare il repository Node.js per la versione 18.
dnf module enable nodejs:18
Successivamente, eseguire il comando dnf qui sotto per installare le dipendenze per Zammad, tra cui Nginx, PostgreSQL, Redis e Node.js.
dnf install imlib2 nginx postgresql-server postgresql-contrib libpq-devel redis nodejs
Dopo che l’installazione è terminata, eseguire il comando sottostante per inizializzare il server PostgreSQL.
postgresql-setup initdb
Avviare e abilitare i servizi per Nginx, PostgreSQL e Redis con il comando sottostante.
systemctl start nginx postgresql redis
systemctl enable nginx postgresql redis
Infine, controllare la versione Node.js utilizzando il comando sottostante. Assicurati di avere Node.js 18.0+ installato.
node –version
Installazione di Elasticsearch
Dopo l’installazione di dipendenze, è necessario installare Elasticsearch. In questa sezione, installi Elasticsearch 7.x per Zammad.
Ora esegui il comando sottostante per aggiungere la chiave GPG per il repository Elasticsearch.
rpm –import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Aggiungere il repository Elasticsearch per il server Rocky Linux con il seguente comando.
echo “[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md”| tee /etc/yum.repos.d/elasticsearch-7.x.repo
Successivamente, installare Elasticsearch sul sistema con il seguente comando. Input y per confermare l’installazione e accettare la chiave GPG quando richiesto.
dnf install elasticsearch
Al termine dell’installazione, installare il plugin di ingest-attachment all’installazione di Elasticsearch utilizzando il comando sottostante.
/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
batti y per confermare l’installazione.
Ora ricaricare il gestore systemd e avviare il servizio di ricerca elastica utilizzando il comando sottostante.
systemctl daemon-reload
systemctl start elasticsearch
Una volta iniziato, controllare l’Elasticsearch con il comando curl qui sotto. Se la tua installazione ha successo, otterrai informazioni dettagliate sulla tua versione di Elasticsearch
curl -X GET ‘http://localhost:9200’
Aumentare le connessioni di Max in PostgreSQL
Per PostgreSQl, è necessario aumentare le connessioni massime di default nel file postgresql.conf. Questo è necessario per Zammad.
Quindi accedi come utente postgres con il comando sottostante.
su – postgres
Aprire i dati di configurazione di PostgreSQL/postgresql.conf utilizzando il nano editor.
nano data/postgresql.conf
Modificare le connessioni massime di default a 2000 come le seguenti:
max_connections = 2000
Salvare il file e uscire
Ora esegui il comando systemctl qui sotto per riavviare il servizio PostgreSQL e applicare le modifiche.
systemctl restart postgresql
Configurazione di Firewalld
Per impostazione predefinita, il firewalld è abilitato su Rocky Linux. Quindi ora è necessario aprire sia i servizi HTTP che HTTPS e consentire il traffico a Zammad.
Aggiungere sia i servizi HTTP che HTTPS al firewall utilizzando il seguente comando.
firewall-cmd –zone=public –add-service=http –permanent
firewall-cmd –zone=public –add-service=https –permanent
Ora ricaricare firewall per applicare nuove regole per HTTP e HTTPS
firewall-cmd –reload
Controllare l’elenco delle regole sul firewall utilizzato utilizzando il comando sottostante. Vedrai sia i servizi HTTP che HTTPS disponibili su firewall
firewall-cmd –list-all
Installazione del sistema di assistenza clienti Zammad
Ora che hai delle dipendenze installate e configurate, puoi avviare l’installazione di Zammad, che può essere eseguita tramite il gestore dei pacchetti dnf.
Aggiungere la chiave GPG per il repository Zammad usando il comando sottostante.
rpm –import https://dl.packager.io/srv/zammad/zammad/key
Ora aggiungi il repository Zammad al tuo server Rocky Linux con il seguente comando.
wget -O /etc/yum.repos.d/zammad.repo \
https://dl.packager.io/srv/zammad/zammad/develop/installer/el/9.repo
Successivamente, installare zammad con il comando dnf sotto. Quando richiesto, digitare y per confermare il tasto gpg e l’installazione di Zammad.
dnf install zammad
Al termine dell’installazione, eseguire il seguente comando per controllare i servizi per Zammad, tra cui zammad, zammad-web, zammad-worker e zammad-websocket.
systemctl status zammad
systemctl status zammad-web
systemctl status zammad-worker
systemctl status zammad-websocket
Assicurati che ogni servizio per Zammad sia in esecuzione.
Infine, eseguire il seguente comando per impostare l’integrazione tra Zammad ed Elasticsearch.
zammad run rails r “Setting.set(‘es_url’, ‘http://localhost:9200’)”
zammad run rake zammad:searchindex:rebuild
Dopo aver eseguito il comando, questo creerà un indice di ricerca elastica per Zammad.
Configurazione di Nginx come proxy inverso
Ora che hai installato Zammad, configurerai Nginx come proxy inverso e, per impostazione predefinita, Zammad fornisce una configurazione di esempio disponibile nella directory /opt/zammad/contrib.
Copiare la configurazione Nginx per Zammad in /etc/nginx/conf.d/zammad.conf e aprirlo usando il comando nano editor.
cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/conf.d/zammad.conf
nano /etc/nginx/conf.d/zammad.conf
All’interno dell’opzione nome server, modificarlo con il dominio.
server_name zammad.miodominio.it;
Salvare e uscire dal file.
Ora verifica la configurazione di Nginx per assicurarti di avere una sintassi corretta. In caso di successo, si dovrebbe ottenere un output ‘syntax is ok’.
nginx -t
Infine, eseguire il comando sottostante per riavviare il servizio Nginx e applicare una nuova configurazione del blocco server per Zammad.
systemctl restart nginx
Con questo, la tua installazione di Zammad dovrebbe essere pronta e accessibile
Ma se volessimo mettere online la nostra piattaforma di ticketing usando il protocollo https, allora procediamo usando uno di questi due metodi.
Metodo 1 certificati Letsencrypt
Ora che Nginx è configurato, assicuriamo Zammad tramite certificati SSL/TLS. Installarai Certbot e genererai certificati SSL utilizzando certbot da Letsencrypt.
Installa il plugin Certbot e Nginx usando il comando dnf qui sotto. Digitare y per confermare l’installazione.
dnf install certbot python3-certbot-nginx
Al termine dell’installazione, eseguire il comando certbot qui sotto per generare certificati SSL/TLS e proteggere l’installazione di Zammad. Assicurati di modificare le informazioni dell’indirizzo e-mail e del nome di dominio con le tue informazioni.
certbot –nginx –agree-tos –redirect –hsts –staple-ocsp –email [email protected] -d zammad.miodominio.it
Una volta completati, i certificati SSL/TLS saranno disponibili nella directory /etc/letsencrypt/live/domain.com e anche il tuo Zammad è protetto automaticamente con HTTPS.
Metodo 2 installare i propri certificati
Aggiornando il nostro sistema abbiamo scaricato anche l’ultima versione di openssl, non spiegero qui come creare un autocertificato, per farlo vi basterà googolare in rete e troverete sicuramente ciò che desiderate.
Qui vedremo come configurare il file zammad.conf in modo corretto perché possiamo usare i nostri certificati.
Iniziamo a creare due cartella chiamata ssl/certificati nel path che vogliamo, qui li creerò nella cartella etc
mkdir -p /etc/ssl/certificati
ora all’interno della cartella certificati vado a posizionare il file .key e .crt , e creo un certificato dhparams per aumentarne la sicurezza sempre all’interno del path /etc/ssl/certificati
openssl dhparam -out dhparams.pem 4096
Il sistema ci metterà un po a creare questo certificato lasciate che lo porti a termine.
Una volta terminato accediamo a zammad.conf e impostiamolo in questo modo.
#
# this is the nginx config for zammad
#
upstream zammad-railsserver {
server 127.0.0.1:3000;
}
upstream zammad-websocket {
server 127.0.0.1:6042;
}
server {
listen 80;
listen [::]:80;
# replace ‘localhost’ with your fqdn if you want to use zammad from remote
server_name zammad.miodominio.it;
return 301 https://$host$request_uri; # redirect http to https
}
server {
listen 443 ssl;
listen [::]:443 ssl;
# ssl on;
## path certificati
ssl_certificate /etc/nginx/conf.d/ssl/certificati/miocertificato.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/certificati/miocertificato.key;
ssl_dhparam /etc/nginx/conf.d/ssl/certificati/dhparams.pem;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1.3 TLSv1.2;
# ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:AES256-GCM-SHA384;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
# security – prevent information disclosure about server version
server_tokens off;
root /opt/zammad/public;
access_log /var/log/nginx/zammad.access.log;
error_log /var/log/nginx/zammad.error.log;
client_max_body_size 200M;
location ~ ^/(assets/|robots.txt|humans.txt|favicon.ico|apple-touch-icon.png) {
expires max;
}
# legacy web socket server
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “Upgrade”;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
proxy_pass http://zammad-websocket;
}
# action cable
location /cable {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “Upgrade”;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
proxy_pass http://zammad-railsserver;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Change this line in an SSO setup
proxy_set_header X-Forwarded-User “”;
proxy_read_timeout 300;
proxy_pass http://zammad-railsserver;
gzip on;
gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml;
gzip_proxied any;
}
}
Controlliamo ancora la configurazione con nginx -t e poi riavviamolo systemctl restart nginx, se non ci sono errori possiamo passare alla configurazione di base di Zammad
Configurazione dell’installazione di Zammad
Avvia il tuo browser web e visita https://zammad.miodominio.it/. Se la tua installazione ha successo, ti verrà chiesto quanto segue:
Fare clic su Imposta un nuovo sistema per avviare la configurazione di Zammad.
Digitare i dettagli dell’utente di amministrazione e della password per Zammad, quindi fare clic su Crea.
Digita il nome dell’organizzazione, carica il tuo logo e fai clic su Avanti per continuare
Per le impostazioni di posta elettronica, fare clic su Salta. È possibile configurare questo dopo aver terminato l’installazione.
Ora vedrai la dashboard di Zammad come la seguente
Congratulazioni! Hai completato l’installazione del sistema Zammad Ticketing sul server Rocky Linux 9. Hai in Zammad in esecuzione con il database PostgreSQL, Nginx come proxy inverso, Elasticsearch e anche protetto con HTTPS
Per la configurazione di lascio il link ufficiale della documentazione.
Un Saluto
Adam







Ciao, non so se questo sia il canale migliore ma ho necessità di farti una domanda; conosci un software opensource che oltre alla gestione dei ticket, riesca anche a gestire il tipo di contratto del cliente?( full, orario a scalare, ecc).
Per il momento uso zammad che ho integrato in nextcloud, ma non gestisce i tipi di contratto… è solo ticketing.
Inoltre, visto che che conosci Passbolt, secondo te è integrabile in nextcloud?
Grazie, continua cosi.
Ciao, Inizio a risponderti alla tua seconda domanda.
Sì, potrebbe essere possibile integrare Passbolt con Nextcloud.
Passbolt come App esterna
Puoi installare Passbolt separatamente su un server e collegarlo a Nextcloud tramite l’uso di integrazioni API. Passbolt offre una API REST che può essere utilizzata per creare una connessione tra Passbolt e Nextcloud. In questo caso, Passbolt non viene eseguito direttamente all’interno di Nextcloud, ma i due sistemi possono scambiarsi dati.
l’altra e’ quella di usare l’ottima App Passman piuttosto simile a passbolt e puo’ imortare dati da KeePass, LastPass, DashLane, ZOHO.
mentre per la tua prima domanda non c’e’ molto in giro a livello open quello che chiedi dovrebbe fare anche da CRM.
Forse uno di questi potrebbe fare al caso tuo
https://otrs.com/
https://suitecrm.com/
https://www.redmine.org/
https://www.dolibarr.org/