Installer le système de billetterie Zammad sur Rocky 8 | CentOS 8
Chaque entreprise disposant d'un support client a besoin d'un système de billetterie et de support client pour des opérations commerciales fluides. Il existe une option de solutions logicielles commerciales et open source qui peuvent être adoptées à cet effet. Zammad est l'un des meilleurs systèmes open source de billetterie et de support client qui vous permet de gérer la communication client via différents canaux tels que les réseaux sociaux, les e-mails, les appels téléphoniques et les chats à partir d'un tableau de bord Web centralisé.
Certaines fonctionnalités clés de la solution logicielle Zammad sont :
- Gestion des tickets clients
- Base de connaissances pour les procédures, les FAQ et les SOP internes
- Gestion des actifs informatiques
- Automatisation des flux de travail
- Surveillance, reporting et analyses
- Prise en charge de divers canaux de communication
- Intégration avec de nombreux outils de collaboration
- Collecte des retours clients
- Gestion des accords de niveau de service (SLA)
- Gestion du centre d'appels
- Modèles d'e-mails
- Notifications en temps réel
- Portail libre-service
- Parmi tant d'autres
Dans ce court didacticiel, vous apprendrez comment installer, configurer et utiliser le système de billetterie Zammad sur le système Linux Rocky 8 ou CentOS 8.
Ajouter un référentiel EPEL
Certains des packages de dépendances requis sont contenus dans le référentiel EPEL. Vous pouvez configurer le dépôt sur le système en exécutant les commandes suivantes sur le système.
sudo dnf install wget epel-release
Définissez également les paramètres régionaux sur votre langue.
sudo localectl set-locale LANG=en_US.utf8
Installer Elasticsearch
Importez la clé GPG elasticsearch dans votre magasin système.
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Ajoutez le dépôt Elasticsearch au système.
sudo tee /etc/yum.repos.d/elasticsearch-7.x.repo<<EOF
[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
EOF
Installez le package elasticsearch
en exécutant les commandes suivantes dans votre terminal.
sudo dnf -y install elasticsearch
Ouvrir le fichier de configuration pour le modifier
sudo vim /etc/elasticsearch/elasticsearch.yml
Personnalisez les valeurs http.max_content_length
et indices.query.bool.max_clause_count
.
# Tickets above this size (articles + attachments + metadata)
# may fail to be properly indexed (Default: 100mb).
#
# When Zammad sends tickets to Elasticsearch for indexing,
# it bundles together all the data on each individual ticket
# and issues a single HTTP request for it.
# Payloads exceeding this threshold will be truncated.
#
# Performance may suffer if it is set too high.
http.max_content_length: 400mb
# Allows the engine to generate larger (more complex) search queries.
# Elasticsearch will raise an error or deprecation notice if this value is too low,
# but setting it too high can overload system resources (Default: 1024).
#
# Available in version 6.6+ only.
indices.query.bool.max_clause_count: 2000
Démarrez et activez le service pour démarrer au démarrage du système.
sudo systemctl enable --now elasticsearch
Installez le plugin ingest-attachment
pour elasticsearch.
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
-> Installing ingest-attachment
-> Downloading ingest-attachment from elastic
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission createAccessControlContext
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Continue with installation? [y/N]y
-> Installed ingest-attachment
-> Please restart Elasticsearch to activate any plugins installed
Redémarrez le service après avoir effectué la modification.
sudo systemctl restart elasticsearch
Installez Zammad sur Rocky/CentOS 8
Importer la clé du référentiel Zammad
sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key
Ajoutez ensuite le référentiel Zammad RPM qui contient les packages requis
wget https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo -O zammad.repo
sudo mv zammad.repo /etc/yum.repos.d/
Installez Zammad à l'aide du gestionnaire de packages yum
ou dnf
.
sudo dnf -y install zammad
Démarrez et activez les services.
sudo systemctl enable --now zammad zammad-web zammad-worker zammad-websocket
Définir les autorisations de répertoire pour les données
sudo chmod -R 755 /opt/zammad/public/
Si SELinux est en mode d'application, configurez les étiquettes.
sudo chcon -Rv --type=httpd_sys_content_t /opt/zammad/public/
sudo setsebool httpd_can_network_connect on -P
sudo semanage fcontext -a -t httpd_sys_content_t /opt/zammad/public/
sudo restorecon -Rv /opt/zammad/public/
sudo chmod -R a+r /opt/zammad/public/
Ouvrez le port 80 ou le port 443 sur le pare-feu s'il est actif.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
En général, Zammad utilise trois services – ceux-ci peuvent être (re)démarrés et arrêtés avec le parent Zammad.
$ Zammad service to start all services at once
$ systemctl (status|start|stop|restart) zammad
$ # Zammads internal puma server (relevant for displaying the web app)
$ systemctl (status|start|stop|restart) zammad-web
$ # Zammads background worker - relevant for all delayed- and background jobs
$ systemctl (status|start|stop|restart) zammad-worker
$ # Zammads websocket server for session related information
$ systemctl (status|start|stop|restart) zammad-websocket
Vérifiez si les services sont en cours d'exécution.
$ systemctl status zammad zammad-web zammad-worker zammad-websocket
● zammad.service
Loaded: loaded (/etc/systemd/system/zammad.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
Main PID: 6807 (sleep)
Tasks: 1 (limit: 49026)
Memory: 172.0K
CGroup: /system.slice/zammad.service
└─6807 /bin/sleep infinity
Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad.service.
● zammad-web.service
Loaded: loaded (/etc/systemd/system/zammad-web.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
Main PID: 6810 (sleep)
Tasks: 1 (limit: 49026)
Memory: 172.0K
CGroup: /system.slice/zammad-web.service
└─6810 /bin/sleep infinity
Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad-web.service.
● zammad-worker.service
Loaded: loaded (/etc/systemd/system/zammad-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
Main PID: 6808 (sleep)
Tasks: 1 (limit: 49026)
Memory: 172.0K
CGroup: /system.slice/zammad-worker.service
└─6808 /bin/sleep infinity
Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad-worker.service.
● zammad-websocket.service
Loaded: loaded (/etc/systemd/system/zammad-websocket.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
Main PID: 6812 (sleep)
Tasks: 1 (limit: 49026)
Memory: 176.0K
CGroup: /system.slice/zammad-websocket.service
└─6812 /bin/sleep infinity
Mar 14 22:36:35 webhosting.example.com systemd[1]: Started zammad-websocket.service.
Définissez l'adresse du serveur Elasticsearch à l'aide de la commande zammad
.
zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
Construisez l'index de recherche avant d'utiliser Zammad.
$ zammad run rake zammad:searchindex:rebuild
Dropping indexes... done.
Deleting pipeline... done.
Creating indexes... done.
Creating pipeline... done.
Reloading data...
- Chat::Session...
done in 0 seconds.
- Cti::Log...
done in 0 seconds.
- Group...
done in 0 seconds.
- KnowledgeBase::Answer::Translation...
done in 0 seconds.
- KnowledgeBase::Category::Translation...
done in 0 seconds.
- KnowledgeBase::Translation...
done in 0 seconds.
- Organization...
done in 0 seconds.
- StatsStore...
done in 0 seconds.
- Ticket::Priority...
done in 0 seconds.
- Ticket::State...
done in 0 seconds.
- Ticket...
done in 0 seconds.
- User...
done in 0 seconds.
La désactivation de la vérification SSL peut être effectuée en définissant es_ssl_verify
sur false.
zammad run rails r "Setting.set('es_ssl_verify', false)"
Configurer le proxy Nginx
Assurez-vous que nginx est installé.
sudo dnf -y install nginx && sudo systemctl enable --now nginx
Configurez le serveur Web en copiant le fichier de configuration
$ sudo find / -name zammad.conf
/etc/nginx/conf.d/zammad.conf
/opt/zammad/contrib/apache2/zammad.conf
/opt/zammad/contrib/nginx/zammad.conf
Modifiez et définissez le nom DNS correct pour qu'il corresponde au nom DNS.
$ sudo vim /etc/nginx/conf.d/zammad.conf
# replace 'localhost' with your fqdn if you want to use zammad from remote
server_name tickets.cloudspinx.com;
Confirmez l'index Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Redémarrez le service du serveur Web nginx.
sudo systemctl restart nginx
Accéder à l'interface Web de Zammad
Accédez à Zammad sur votre navigateur Web en utilisant le nom d'hôte configuré – http://yourfqdn. Choisissez « Configurer un nouveau système ».
Saisissez le nom de votre organisation et téléchargez le logo de votre entreprise.
Confirmez que le logo a été téléchargé et est visible.
Ensuite, vous pouvez configurer SMTP pour les e-mails sortants ou choisir de le configurer ultérieurement.
Le MTA local peut être utilisé pour la livraison des e-mails.
Configurez les canaux de communication à utiliser ou ignorez-les pour les configurations ultérieures.
Sur la page suivante, vous devriez voir l'interface administrative de Zammad.
Sécurisez Zammad avec le certificat Let's Encrypt
Let's Encrypt est un certificat SSL gratuit qui peut être utilisé pour l'accès HTTPS de vos sites Web. Installez certbot.
sudo dnf -y install epel-release
sudo dnf -y install certbot python3-certbot python3-certbot-nginx
Définissez le nom de domaine et l'adresse e-mail Zammad qui recevront les alertes d'expiration de certificat.
export DOMAIN="tickets.example.com"
export ALERTS_EMAIL="alerts.example.com"
Générez des certificats SSL et configurez nginx pour les utiliser.
sudo certbot --nginx --redirect -d $DOMAIN --preferred-challenges http --agree-tos -n -m $ALERTS_EMAIL --keep-until-expiring
Apprenez-en plus sur les pages de documentation de Zammad.