Install from package


Please ensure to meet Zammads Software requirements beforehand.
This page expects administrative permissions, this is why sudo is not used.


Additional software dependencies

In addition to already mentioned Package dependencies, some operating systems may require additional packages if not already installed.

$ apt install curl apt-transport-https gnupg

Setup Elasticsearch

Elasticsearch is a dependency of Zammad and needs to be provided before installing Zammad. Please take a look at the following page: Set up Elasticsearch.

Ensure correct locale

For Zammad to function correctly, your system has to use the correct locales.

List your current locale settings.

$ locale |grep "LANG="

If above does not return <lang_code>.utf8 you can correct this issue as follows.

$ apt install locales
$ locale-gen en_US.UTF-8
$ echo "LANG=en_US.UTF-8" > /etc/default/locale

Add Repository and install Zammad

Hint may not be accessible from IPv6-only environments, so make sure to consider this when performing the steps below.

Add Repository
Install Repository Key
$ curl -fsSL | \
  gpg --dearmor | tee /etc/apt/trusted.gpg.d/pkgr-zammad.gpg> /dev/null
Ubuntu 20.04
$ echo "deb [signed-by=/etc/apt/trusted.gpg.d/pkgr-zammad.gpg] 20.04 main"| \
   tee /etc/apt/sources.list.d/zammad.list > /dev/null
Ubuntu 22.04
$ echo "deb [signed-by=/etc/apt/trusted.gpg.d/pkgr-zammad.gpg] 22.04 main"| \
   tee /etc/apt/sources.list.d/zammad.list > /dev/null
Ubuntu 24.04
$ echo "deb [signed-by=/etc/apt/trusted.gpg.d/pkgr-zammad.gpg] 24.04 main"| \
   tee /etc/apt/sources.list.d/zammad.list > /dev/null
Install Zammad
$ apt update
$ apt install zammad

Firewall & SELinux

Some parts of these steps may not apply to you, feel free to skip them!


$ # Allow nginx or apache to access public files of Zammad and communicate
$ chcon -Rv --type=httpd_sys_content_t /opt/zammad/public/
$ setsebool httpd_can_network_connect on -P
$ semanage fcontext -a -t httpd_sys_content_t /opt/zammad/public/
$ restorecon -Rv /opt/zammad/public/
$ chmod -R a+r /opt/zammad/public/



Below only covers the distribution’s default firewall. It may not cover your case.

$ # Open Port 80 and 443 on your Firewall
$ ufw allow 80
$ ufw allow 443
$ ufw reload

Manage services of Zammad

In general Zammad uses three services - these can be (re)started & stopped with the 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

Next steps

With this Zammad technically is ready to go. However, you’ll need to follow the following further steps to access Zammads Web-UI and getting started with it.

If you expect usage with 5 agents or more you may also want to consider the following pages.