Zammad is an open-source help desk and issue-tracking system written in Ruby and JavaScript. It manages customer communication through various channels such as email, chat, phone, Twitter, or Facebook. Zammad provides various useful features like escalation management, customer communication across multiple channels, ticket routing, issue resolution, and many more. It uses PostgresSQL, MariaDB or MySQL as database backend and supports external authentication via Twitter, Facebook, LinkedIn, or Google via OAuth.
In this tutorial, I will show you how to install and configure Zammad Helpdesk on AlmaLinux 8 or Rocky Linux 8.
First, you need to install Java JDK on your system. You can install it by running the following command:
dnf install java-11-openjdk-devel -y
Once Java is installed, you can check the Java version with the following command:
java --version
You should see the following output:
openjdk 11.0.14 2022-01-18 LTS OpenJDK Runtime Environment 18.9 (build 11.0.14+9-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.14+9-LTS, mixed mode, sharing)
Once you are done with that, you can proceed to the next step.
You also need to install the Elasticsearch package on your server. First, import the GPG key with the following command:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Next, create an Elasticsearch repository with the following command:
nano /etc/yum.repos.d/elasticsearch-7.x.repo
Add the following lines:
[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
Save and close the file, then install the Elasticsearch package with the following command:
dnf install elasticsearch -y
Once Elasticsearch is installed, you must install the ingest attachment. You can install it with the following command:
/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
You will get the following output:
-> 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
Next, reload the systemd daemon with the following command:
systemctl daemon-reload
Start and activate the Elasticsearch service with the following command:
systemctl enable elasticsearch systemctl restart elasticsearch
You can also check the Elasticsearch status with the following command:
systemctl status elasticsearch
You should see the following output:
? elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-02-19 08:36:46 UTC; 13s ago
Docs: https://www.elastic.co
Main PID: 2158 (java)
Tasks: 75 (limit: 23696)
Memory: 2.2G
CGroup: /system.slice/elasticsearch.service
??2158 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=>
??2357 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Feb 19 08:36:11 linux systemd[1]: Starting Elasticsearch...
Feb 19 08:36:46 linux systemd[1]: Started Elasticsearch.
When you are done, you can proceed to the next step.
By default, Zammad is not included in the Alma Linux default repo. Therefore, you need to create a repo for Zammad.
First, import the Zammad GPG key with the following command:
rpm --import https://dl.packager.io/srv/zammad/zammad/key
Next, create a Zammad repository with the following command:
wget -O /etc/yum.repos.d/zammad.repo https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo
Next, install the EPEL repository and Zammad with the following command:
dnf install epel-release -y dnf install zammad -y
Once Zammad is installed, start and activate all Zammad services with the following command:
systemctl start zammad zammad-web zammad-worker systemctl enable zammad zammad-web zammad-worker
Now you can check the status of all services with the following command:
systemctl status zammad zammad-web zammad-worker
You will get the following output:
? zammad.service
Loaded: loaded (/etc/systemd/system/zammad.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-02-19 08:41:05 UTC; 32s ago
Main PID: 3560 (sleep)
Tasks: 1 (limit: 23696)
Memory: 180.0K
CGroup: /system.slice/zammad.service
??3560 /bin/sleep infinity
Feb 19 08:41:05 linux systemd[1]: Started zammad.service.
? zammad-web.service
Loaded: loaded (/etc/systemd/system/zammad-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-02-19 08:41:05 UTC; 32s ago
Main PID: 3565 (sleep)
Tasks: 1 (limit: 23696)
Memory: 168.0K
CGroup: /system.slice/zammad-web.service
??3565 /bin/sleep infinity
Feb 19 08:41:05 linux 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 Sat 2022-02-19 08:41:05 UTC; 32s ago
Main PID: 3561 (sleep)
Tasks: 1 (limit: 23696)
Memory: 188.0K
CGroup: /system.slice/zammad-worker.service
??3561 /bin/sleep infinity
Feb 19 08:41:05 linux systemd[1]: Started zammad-worker.service.
Next, give proper permissions to the Zammad public directory:
chmod -R 755 /opt/zammad/public/
Zammad will also install the Nginx package automatically. Now you need to copy the Nginx configuration file for Zammad from the Zammad directory to the Nginx configuration directory.
cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/conf.d/zammad.conf
Next, edit the Nginx configuration file for Zammad with the following command:
nano /etc/nginx/conf.d/zammad.conf
Replace "localhost" with your fqdn if you want to use Zammad remotely:
server_name zammad.example.com;
Save and close the file when you're done, and restart the Nginx service to apply the changes:
systemctl restart nginx
You can also check the Nginx status with the following command:
systemctl status nginx
You should see the following output:
? nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-02-19 08:45:45 UTC; 5s ago
Process: 7112 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 7110 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 7108 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 7113 (nginx)
Tasks: 3 (limit: 23696)
Memory: 5.1M
CGroup: /system.slice/nginx.service
??7113 nginx: master process /usr/sbin/nginx
??7114 nginx: worker process
??7115 nginx: worker process
Feb 19 08:45:45 linux systemd[1]: Starting The nginx HTTP and reverse proxy server...
Feb 19 08:45:45 linux nginx[7110]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Feb 19 08:45:45 linux nginx[7110]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Feb 19 08:45:45 linux systemd[1]: Started The nginx HTTP and reverse proxy server.
Once you are done, you can proceed to the next step.
You can now access the Zammad Web UI from the URL http://zammad.example.com in your web browser. You should see the following page:
Click on the Set up new systembox. You should see the Administrator account setup page:
Enter your admin username and password and click the Create button. You should see the Create Organization page:
Enter your organization name and URL and click the Next button. You should see the following page:
Click the Next button. You should see the Connect Channels page:
Click the Skip button. On the following page, you should see the Zammad dashboard:
Congratulations! You have successfully installed the Zammad helpdesk system on Alma Linux 8. You can now start using Zammad in your organization. If you have any questions, please feel free to contact me.
Magento is a free and open-source e-commerce platform written in PHP. It is simple, easy…
ISPConfig is an open-source control panel that allows users to manage multiple servers from a…
As a Linux administrator, you may find it necessary to troubleshoot or test your Simple…
Ubuntu 24.04, like many modern Linux distributions, relies on the NetworkManager for managing network connections.…
Restic is a modern, open-source backup program designed for efficiency, security, and simplicity. It enables…
phpMyAdmin is a popular free tool written in PHP intended to administer MySQL and MariaDB…