Zammad is an open source web based helpdesk and customer support system build to help you manage customer communications via several channels like twitter, telephone, chat, facebook, and e-mails. The Zammad helpdesk software is released under GNU AGPLv3 license. With its REST API, you can link other programs easily and get real-time information on all your channels and operations.
Some notable features of Zammad Helpdesk are:
- Groups: Form groups to create separation within your teams and departments
- LDAP integration: Zammad offers you centralized user/rights management options using our secure LDAP integration
- SSO: Zammad offers easy Single Sign-On with just one click thanks to the integration of architectures such as SAML or Shibboleth
- External Authentication: Support for sign in through third parties such as Twitter, Facebook, LinkedIn, or Google via OAuth.
- Time recording: Zammad enables agents to record the exact processing time per ticket
- Exchange Integration: Support for Exchange synchronization to import Exchange address book contacts
- Slack Integration: You can automatically receive a message in Slack when there is a new ticket
- i-doit Integration: The i-doit integration makes it possible to keep an eye on your data, processes, and systems
- Knowledge Base: Zammad has an extensive knowledge base that makes sure everyone is always in the picture
- Multilingualism: Zammad web app supports over 30 languages
- And many more
In this short article we take you through the steps used to install Zammad Helpdesk and customer support system on Ubuntu Linux system.
Minimum server requirements:
- 2 CPU cores
- 4 GB of RAM (+4 GB if you want to run Elasticsearch on the same server)
For optimal performance up to 40 agents:
- 4 CPU cores
- 6 GB of RAM (+6 GB if you want to run Elasticsearch on the same server)
Step 1: Update System
As you already know we start all our software installation guides with system updates:
sudo apt update && sudo apt -y full-upgrade
I always recommend you perform system reboot after the upgrade has been done
[ -e /var/run/reboot-required ] && sudo reboot
Step 2: Install Package Dependencies
The below dependencies need to be installed on your system. This can all be done using apt package management tool:
sudo apt install wget apt-transport-https gnupg2 libimlib2 libimlib2-dev
For Zammad to function correctly, your system has to use the correct locales.
sudo apt install locales
sudo locale-gen en_US.UTF-8
echo "LANG=en_US.UTF-8" | sudo tee /etc/default/locale
Install MariaDB Database Server:
sudo apt install mariadb-server
Secure database installation server with the command below:
$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Configure encoding
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
Restart database server service:
sudo systemctl restart mariadb
Install Apache web server:
sudo apt install apache2
Enable Apache headers:
sudo a2enmod headers
sudo systemctl restart apache2
Add Elasticsearch repository:
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/elastic.gpg
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
Step 3: Install Zammad on Ubuntu
Install Repository GPG Key:
curl -fsSL https://dl.packager.io/srv/zammad/zammad/key|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/zammad.gpg
Add repository to Debian / Ubuntu system:
source /etc/os-release
echo "deb https://dl.packager.io/srv/deb/zammad/zammad/stable/ubuntu $VERSION_ID main" | sudo tee /etc/apt/sources.list.d/zammad.list
Now install Zammad on Ubuntu system:
sudo apt update && sudo apt install zammad
Accept installation to proceed:
The following additional packages will be installed:
elasticsearch-oss libevent-core-2.1-7 libevent-extra-2.1-7 libpq5
The following NEW packages will be installed:
elasticsearch-oss libevent-core-2.1-7 libevent-extra-2.1-7 libpq5 zammad
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 363 MB of archives.
After this operation, 860 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
If you have ufw firewall open http and https ports:
sudo ufw allow 80,443
sudo ufw reload
After you installed Elasticsearch and its attachment plugin:
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
Ensure elasticsearch is enabled by default and start it.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Start Zammad service and enable it to start at system boot:
sudo systemctl start zammad
sudo systemctl enable zammad
Set the Elasticsearch server address:
sudo zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
Build the search index:
sudo zammad run rake zammad:searchindex:rebuild
First, disable the Apache default virtual host file with the following command:
sudo a2dissite 000-default.conf
Restart apache2 web server:
sudo systemctl restart apache2
Confirm service is started without an error:
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-03-15 17:16:54 UTC; 4s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 2184 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 2201 (apache2)
Tasks: 55 (limit: 9513)
Memory: 6.1M
CGroup: /system.slice/apache2.service
├─2201 /usr/sbin/apache2 -k start
├─2202 /usr/sbin/apache2 -k start
└─2203 /usr/sbin/apache2 -k start
Mar 15 17:16:54 jammy systemd[1]: Starting The Apache HTTP Server...
Mar 15 17:16:54 jammy systemd[1]: Started The Apache HTTP Server.
If you encounter an error “apachectl[2095]: Invalid command ‘RequestHeader’, perhaps misspelled or defined by a module not included in the server configuration” enable apache headers:
sudo a2enmod headers
sudo systemctl restart apache2
Step 4: Access Zammad Web Interface
Open your web browser and access Zammad web interface on the URL.
http://your_server_ip_or_hostname
You should see the following screen. Select “Setup new system” to initiate configuration.

Create first admin account in the next screen.

Provide organization name and click “Next“.

You can optionally configure email communication channel in the next screen

Local MTA for sending emails from the server can be configured as well.

After a successful configuration of Zammad from the web interface you should see a page similar to below.

To secure Web server with SSL check the official Zammad web server configuration page.
Similar articles:
- How To Install osTicket on Ubuntu Linux
- Install Chatwoot on Ubuntu with Let’s Encrypt SSL
- Install Rocket.Chat on Ubuntu with Let’s Encrypt SSL
- Install Rocket.Chat Server on Debian | Ubuntu
Thank you! I tried several different installation guides, and this was the only one that worked. There was a step I had to do to install the public key, but that was an easy google of the error fix.
We’re happy to learn this worked for you.
Muchas gracias!! de varias guias, me paso igual que al Knuson, esta fue la unica que me función!!
Gracias y bienvenido siempre!