How to Install Zammad Helpdesk on AlmaLinux or Rocky Linux

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.

Requirements

  • A server running Rocky Linux 8 or AlmaLinux 8.
  • A valid domain name pointing to the server IP.
  • A root password is configured on the server.

Install Java JDK

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.

Install Elasticsearch

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.

Install Zammad

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/

Configure Nginx for Zammad

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.

Accessing the Zammad Web UI

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:

Conclusion

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.

Vitux Staff

Recent Posts

How to Install Magento 2 on AlmaLinux

Magento is a free and open-source e-commerce platform written in PHP. It is simple, easy…

1 year ago

How to Install ISPConfig Hosting Control Panel with Apache Web Server on Ubuntu 24.04

ISPConfig is an open-source control panel that allows users to manage multiple servers from a…

1 year ago

How to Test your Email Server (SMTP) Using the Telnet Command

As a Linux administrator, you may find it necessary to troubleshoot or test your Simple…

1 year ago

Managing Network Interfaces and Settings on Ubuntu 24.04 with nmcli

Ubuntu 24.04, like many modern Linux distributions, relies on the NetworkManager for managing network connections.…

2 years ago

Using Restic Backup on Ubuntu 24.04

Restic is a modern, open-source backup program designed for efficiency, security, and simplicity. It enables…

2 years ago

Installing phpMyAdmin on Rocky Linux 9 and Securing it with Let’s Encrypt SSL

phpMyAdmin is a popular free tool written in PHP intended to administer MySQL and MariaDB…

2 years ago