Install with Docker Compose

Warning

We currently do not support Docker environments in productive use. It’s no problem if you run Zammad on docker, however, support is only provided for Zammad as application!

Docker Compose environments require deeper system know how. If you’re not too familiar with Docker and the way it works, you may want to stick with the package installation instead.

Docker is a container-based software framework for automating deployment of applications. Compose is a tool for defining and running multi-container Docker applications.

Zammads docker images are hosted on Dockerhub.

Hint

By default, docker compose will use a fixed Zammad version like 6.2.0-1, which refers to a specific commit. In this scenario, you are responsible to apply updates by updating the version on your own.

Alternatively, you can also use floating versions that will give you automatic updates via docker compose pull:

# VERSION=6.2     # all patchlevel updates
# VERSION=6       # including minor updates
# VERSION=latest  # all updates of stable versions, including major
# VERSION=develop # bleeding-edge development version (not recommended for production use)

Before you start, make sure to have at least 4 GB of RAM to run the containers.

Install Docker Environment

This documentation expects you already have a working Docker Compose environment. You can find the required documentations for these steps below:

Getting started with zammad-docker-compose

Step 1: Clone GitHub repo

Warning

If you’re updating Zammad, below commands will cause values set in .env and docker-compose.override.yml to be lost. You’re expected to check if the docker-compose.yml has changed and if so to adjust it accordingly.

$ git clone https://github.com/zammad/zammad-docker-compose.git
$ cd zammad-docker-compose

Hint

If cloning is too much of a hassle, you can also download the files from https://github.com/zammad/zammad-docker-compose/releases. This will make sure file permissions are preserved.

Step 2: Setting vm.max_map_count for Elasticsearch

Even with running Elasticsearch in a container, you’re required to adjust your host’s settings to ensure a clean runtime.

$ sysctl -w vm.max_map_count=262144

Step 3: Adjust Environment as needed

In some cases our default environment is not what a docker-compose user is looking for. To remove complexity from this page, we outsourced information on this topic.

See Docker Compose Environment Variables

Step 4: Start Zammad using DockerHub images

Warning

Before starting your containers ensure to not use default login data for your Zammad database! See Step 3!

$ docker compose up -d

Hint

🔧 How to run rails/rake commands in containers

The docker entrypoint script sets up environment variables required by Zammad to function properly. That is why calling rails / rake on the console should be done via one of the following methods:

$ docker compose run --rm zammad-railsserver rails r '...your rails command here...'

This will run the command via the docker entrypoint and is recommended.

Alternatively, you can run the rails console interactively by running:

$ docker compose run --rm zammad-railsserver rails c

In case you require the use of docker exec, you can use the following command:

$ docker exec zammad-docker-compose-zammad-railsserver-1 /docker-entrypoint.sh rails r '...your rails command here...'

This will manually invoke the docker entrypoint and pass the desired command to it for execution in the proper environment.

If you need to retrieve information from the rails server, you can place for example pp (pretty print) in front of your rails command. This leads to an output in your terminal.

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.