In this article we discuss the installation of Zammad Helpdesk on Debian 10 / Debian 9 Linux system. Zammad is a web based helpdesk and customer support system, released under GNU AGPLv3 open source license. With this tool it is easy and quicker to manage your customer communications via several channels such as twitter, telephone, chat, facebook, and e-mails.
Features of Zammad Helpdesk / Customer Support Tool
Here are some key features of Zammad Helpdesk system.
- Groups: Form groups to create separation within your teams and departments
- SSO: Zammad offers easy Single Sign-On with just one click thanks to the integration of architectures such as SAML or Shibboleth
- LDAP integration: Zammad offers you centralized user/rights management options using our secure LDAP integration
- External Authentication: Support for sign in through third parties such as Twitter, Facebook, LinkedIn, or Google via OAuth.
- Slack Integration: You can automatically receive a message in Slack when there is a new ticket
- 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
- 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
- Check all Zammad features
Follow the steps in this guide to install Zammad Helpdesk and customer support system on Debian 10 and Debian 9 Linux operating system.
The recommended server server requirements for this installation are:
- 2 CPU cores
- 4 GB of RAM (+4 GB if you want to run Elasticsearch on the same server)
For optimal performance, i.e up to 40 agents, below are the recommended hardware specifications.
- 4 CPU cores
- 6 GB of RAM (+6 GB if you want to run Elasticsearch on the same server)
Step 1: Update Debian System
Before you begin the installation ensure your Debian system is up-to-date
sudo apt update sudo apt -y full-upgrade
If you have kernel updates it is recommended to perform system restart
sudo systemctl reboot
Install tools required:
sudo apt install wget apt-transport-https gnupg2 libimlib2 libimlib2-dev -y
Once the system is rebooted add Elasticsearch repository:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 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 2: Install MariaDB and Apache Web Server
A database server and web server which will serve as proxy to Zammad is required. But first install the dependencies required on your system.
sudo apt install wget apt-transport-https gnupg2 libimlib2 libimlib2-dev
Set correct locale on the server
sudo apt install locales sudo locale-gen en_US.UTF-8 echo "LANG=en_US.UTF-8" | sudo tee /etc/default/locale
We’ll use MariaDB Database Server but you can also choose to use PostgreSQL
sudo apt install mariadb-server
Initiate database security 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!
Check and configure database server encoding if not set like below:
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf character-set-server = utf8mb4 collation-server = utf8mb4_general_ci
Restart mariadb database server after the configuration:
sudo systemctl restart mariadb
Install Apache web server which will proxy requests to Zammad service
sudo apt install apache2
Step 3: Install Zammad on Debian 10|9
Before adding Zammad repository the GPG key needs to be imported.
wget -qO- https://dl.packager.io/srv/zammad/zammad/key | sudo apt-key add -
Add repository to Debian:
echo "deb https://dl.packager.io/srv/deb/zammad/zammad/stable/debian 10 main" | sudo tee /etc/apt/sources.list.d/zammad.list
echo "deb https://dl.packager.io/srv/deb/zammad/zammad/stable/debian 9 main" | sudo tee /etc/apt/sources.list.d/zammad.list
With the repository added you can begin the installation of Zammad on Debian 10 / Debian 9 system:
sudo apt update sudo apt install zammad
Accept any installation prompts you get on the screen.
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
A database named zammad is created by the installer.
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | zammad | +--------------------+ 4 rows in set (0.000 sec)
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 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 Sun 2021-04-11 19:15:31 UTC; 23min ago Docs: https://httpd.apache.org/docs/2.4/ Process: 1226 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 1230 (apache2) Tasks: 55 (limit: 4915) Memory: 23.0M CGroup: /system.slice/apache2.service ├─1230 /usr/sbin/apache2 -k start ├─1231 /usr/sbin/apache2 -k start └─1232 /usr/sbin/apache2 -k start Apr 11 19:15:31 debian10 systemd: Starting The Apache HTTP Server... Apr 11 19:15:31 debian10 systemd: Started The Apache HTTP Server.
I got an error “apachectl: Invalid command ‘RequestHeader’, perhaps misspelled or defined by a module not included in the server configuration“. I had to uncomment the line:
$ sudo vim /etc/apache2/sites-enabled/zammad.conf # Line 36 #RequestHeader unset X-Forwarded-User
Then restarted apache2
sudo systemctl restart apache2
Step 4: Access Zammad Web Interface
Open your web browser and access Zammad web interface on the URL.
You should see the following screen. Select “Setup new system” to initiate configuration.
Create the first admin user account for Zammad.
Input organization name
Setup Email comments channel – this is an optional configuration that can be done after the installation.
Configure notification email sending Local MTA.
Complete installation of Zammad Helpdesk on Debian 10 / Debian 9 Linux system.