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 dockerStep 2: Create Docker Compose File
Create a directory for Zammad and switch into it:
mkdir zammad-dockercd zammad-dockerCreate 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: bridgeTip: 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 -dWait for a couple of minutes. Then, open your browser and navigate to:
http://your-server-ip:8080You 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 -dClean 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
- Official Docs: https://docs.zammad.org
- GitHub Repo: https://github.com/zammad/zammad-docker-compose
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.