Zammad
Zammad is an open-source helpdesk and ticketing system for customer support and IT service teams. It consolidates email, chat, social, and phone channels into a shared inbox with ticketing, SLAs, knowledge base, and reporting. It runs as a self-hosted web application backed by PostgreSQL and Elasticsearch.
Software included
Section titled “Software included”| Component | Version |
|---|---|
| Zammad | 7.1.1 |
| PostgreSQL | 17-alpine |
| Redis | 7.2-alpine |
| Elasticsearch | 9.4.3 |
| Docker | Latest stable |
| Ubuntu | 24.04 LTS |
Getting started
Section titled “Getting started”1. Connect to your VM
Section titled “1. Connect to your VM”ssh ubuntu@<your-vm-ip>2. Wait for first-boot configuration
Section titled “2. Wait for first-boot configuration”On the first boot, a setup script generates the database password and starts the Zammad, PostgreSQL, Redis, and Elasticsearch containers. This can take 5 to 10 minutes. Track progress:
sudo journalctl -u zammad-first-boot.service -fThe login message (MOTD) confirms when Zammad is ready. You can also verify the stack directly:
cd /opt/zammad && docker compose ps3. Access the Zammad UI
Section titled “3. Access the Zammad UI”Open a browser and navigate to:
http://<your-vm-ip>:80804. Create the administrator account
Section titled “4. Create the administrator account”Complete the first-run setup wizard to create your administrator email address and password. The image does not create shared default administrator credentials.
Managing Zammad
Section titled “Managing Zammad”Zammad runs as a Docker Compose stack in /opt/zammad.
# Check statuscd /opt/zammad && docker compose ps
# Restartcd /opt/zammad && docker compose restart
# View logscd /opt/zammad && docker compose logs -f| Path | Purpose |
|---|---|
/opt/zammad/docker-compose.yml | Docker Compose configuration |
/opt/zammad/.env | Internal database password and hostname |
/opt/zammad/data/postgresql/ | PostgreSQL data |
/opt/zammad/data/elasticsearch/ | Elasticsearch data |
/opt/zammad/data/redis/ | Redis data |
/opt/zammad/data/zammad/ | Zammad attachments and persistent storage |
/root/.credentials/zammad.txt | Database credentials and access details |
Security
Section titled “Security”Zammad uses port 8080. UFW is enabled and allows SSH (port 22) plus port 8080 by default. PostgreSQL, Redis, and Elasticsearch remain on the internal Docker network and are not published on the VM’s network interface.
To restrict Zammad to a specific IP:
sudo ufw delete allow 8080/tcpsudo ufw allow from <trusted-ip> to any port 8080To access the UI without leaving port 8080 open, use an SSH tunnel:
# Run this on your local machinessh -L 8080:localhost:8080 ubuntu@<your-vm-ip>
# Then open in your browserhttp://localhost:8080For production use, place Zammad behind a reverse proxy so you can serve it over HTTPS with a trusted TLS certificate.