Install IT Ticketing Application Zammad on Ubuntu

Install IT Ticketing Application Zammad on Ubuntu

If you’re looking for a powerful open-source helpdesk and ticketing system, Zammad is a great choice. It offers features like multi-channel support (email, social media, chat), role-based permissions, full-text search, and an intuitive web interface.

In this blog, we’ll walk through the steps to install Zammad using Docker and Docker Compose, making deployment clean, quick, and containerized.


Prerequisites

Before we start, ensure you have the following:

  • A Linux server (Ubuntu 20.04+, Debian, or similar)
  • Docker and Docker Compose installed
  • A domain name (optional but recommended for production use)
  • Basic knowledge of Docker and terminal commands

Step 1: Install Docker & Docker Compose

If you haven’t already installed Docker and Docker Compose:

# Update systemsudo apt update && sudo apt upgrade -y# Install Dockercurl -fsSL https://get.docker.com | sh# Install Docker Compose (v2)sudo apt install docker-compose -y# Enable and start Dockersudo systemctl enable dockersudo systemctl start docker

Step 2: Create Docker Compose File

Create a directory for Zammad and switch into it:

mkdir zammad-dockercd zammad-docker

Create a file named docker-compose.yml:

version: '3.7'services:  zammad:    image: zammad/zammad-docker-compose:zammad-6.3.0    container_name: zammad-app    restart: always    environment:      - RAILS_ENV=production    ports:      - "8080:3000"  # Access Zammad at http://your-ip:8080    depends_on:      - elasticsearch      - postgres    networks:      - zammad-network    volumes:      - zammad-data:/opt/zammad  elasticsearch:    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.10    container_name: zammad-elasticsearch    environment:      - discovery.type=single-node      - bootstrap.memory_lock=true      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    ulimits:      memlock:        soft: -1        hard: -1    restart: always    networks:      - zammad-network    volumes:      - esdata:/usr/share/elasticsearch/data  postgres:    image: postgres:13    container_name: zammad-postgres    restart: always    environment:      POSTGRES_USER: zammad      POSTGRES_PASSWORD: zammad      POSTGRES_DB: zammad_production    networks:      - zammad-network    volumes:      - pgdata:/var/lib/postgresql/datavolumes:  zammad-data:  esdata:  pgdata:networks:  zammad-network:    driver: bridge
Tip: Replace the image tag with the latest from the Zammad Docker repo as needed.

Step 3: Launch Zammad

Now, run the containers:

docker-compose up -d

Wait for a couple of minutes. Then, open your browser and navigate to:

http://your-server-ip:8080

You should be greeted with the Zammad setup wizard. 🎉


Optional: Secure with HTTPS

To run Zammad in production, you should use a reverse proxy with HTTPS support, like Nginx and Let’s Encrypt.

You can set this up manually or with tools like NGINX Proxy Manager or Caddy.


Useful Docker Commands

Here are some commands for managing your setup:

# Check logsdocker-compose logs -f# Restart Zammad onlydocker-compose restart zammad# Stop all containersdocker-compose down# Bring them back updocker-compose up -d

Clean Up

To completely remove the containers and their data:

docker-compose down -v
⚠️ This will delete all ticketing data.

Final Thoughts

Zammad is a feature-rich, modern helpdesk solution that you can easily deploy with Docker. Whether you’re running internal IT support or managing external customer service, Zammad scales well and has a vibrant community.

If you’d like to integrate email, Slack, LDAP, or third-party APIs, Zammad has plugins and webhooks ready to go.


Resources

To install via Portainer using Git

https://docs.zammad.org/en/latest/install/docker-compose.html


Thank you so much for taking the time to read my blog post! Your support and engagement truly mean a lot and inspire me to keep creating and sharing more valuable content. If you enjoyed this post, I’d love to hear your thoughts—feel free to leave a comment in the box below and join the conversation. And if you’d like to stay updated with the latest posts, tips, and insights, don’t forget to subscribe to my newsletter. By joining, you’ll be the first to know when new content is published, so you never miss an update.