No description
  • Shell 60.2%
  • Ruby 28.8%
  • Jinja 11%
Find a file
Kevin Heyer c3b906e437
Some checks failed
/ image (push) Failing after 14m57s
/ lint (push) Successful in 5m43s
Add Zammad app
Zammad from its packager.io APT source (iac-core/apt/zammad.sources),
PostgreSQL and Elasticsearch as modules, Redis from Debian, nginx on
port 80. The package is held; iac_version updates it ("upstream" type
apt). The first administrator admin is created with the generated
zammad_admin_password instead of the browser wizard. A drop-in sandboxes
the units zammad-*.service and runs them as zammad.

Needs iac-core with iac_apt_source, the module elasticsearch and the
upstream type apt (branch zammad, not in v2 yet).

Tested with iac-core branch zammad: lint.sh; dev-container.sh twice
(smoke green, second run changes only instance.json); login with the
access hint; update 7.2.1 -> 7.2.2; simulated first boot of an image
(empty database); image build step in a debootstrap chroot; services
under a 2.5 GiB memory limit. Not run: VM image build and boot test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 05:27:16 +02:00
.forgejo/workflows Add Zammad app 2026-10-15 05:27:16 +02:00
files Add Zammad app 2026-10-15 05:27:16 +02:00
handlers Add Zammad app 2026-10-15 05:27:16 +02:00
tasks Add Zammad app 2026-10-15 05:27:16 +02:00
templates Add Zammad app 2026-10-15 05:27:16 +02:00
tests Add Zammad app 2026-10-15 05:27:16 +02:00
.clinerules Add Zammad app 2026-10-15 05:27:16 +02:00
.cursorrules Add Zammad app 2026-10-15 05:27:16 +02:00
.windsurfrules Add Zammad app 2026-10-15 05:27:16 +02:00
AGENTS.md Add Zammad app 2026-10-15 05:27:16 +02:00
CHANGELOG.md Add Zammad app 2026-10-15 05:27:16 +02:00
CLAUDE.md Add Zammad app 2026-10-15 05:27:16 +02:00
GEMINI.md Add Zammad app 2026-10-15 05:27:16 +02:00
iac.json Add Zammad app 2026-10-15 05:27:16 +02:00
README.md Add Zammad app 2026-10-15 05:27:16 +02:00

iac-zammad

Zammad – Helpdesk und Ticketsystem – als LXC oder VM auf Proxmox VE, auf Debian 13. Teil von iac.

Installation (auf der Proxmox-Node)

bash -c "$(curl -fsSL https://iac.heyer.systems/zammad/ct.sh)"   # LXC
bash -c "$(curl -fsSL https://iac.heyer.systems/zammad/vm.sh)"   # VM

Ohne Dialog: IAC_NONINTERACTIVE=1 und var_*-Variablen – am einfachsten mit dem Generator auf https://iac.heyer.systems/apps/zammad/.

Standard: 2 CPU, 6 GiB RAM, 20 GiB Disk. Zammad, Elasticsearch und PostgreSQL laufen im selben Gast; mit weniger als 4 GiB RAM wird es eng.

Erster Login

http://<ip>/, Benutzer admin, das Passwort wird pro Instanz erzeugt – im Gast:

grep zammad_admin_password /etc/iac/settings.env

Der Setup-Assistent im Browser entfällt: Den Administrator legt die Installation an, solange die Ersteinrichtung noch nicht abgeschlossen ist. Ein später geändertes Passwort wird nie angefasst. Nach dem ersten Login in den Einstellungen festlegen:

  • System → Basis: FQDN und HTTP-Typ (https hinter einem Reverse-Proxy) – Zammad braucht sie für Links in E-Mails.
  • Kanäle → E-Mail: Postfach für eingehende und ausgehende E-Mails.
  • Benutzer admin: E-Mail-Adresse und ein eigenes Passwort.

Zammad sperrt ein Konto nach zu vielen fehlgeschlagenen Logins (Einstellung „Maximale Anzahl fehlgeschlagener Logins“).

Aufbau

Zammad Paket zammad aus dem APT-Repository von Zammad (packager.io, Schlüssel in iac-core gepinnt), mit eigenem Ruby in /opt/zammad. Dienste zammad-web-1 (Puma, 127.0.0.1:3000), zammad-websocket-1 (127.0.0.1:6042), zammad-worker-1, jeweils in einer systemd-Sandbox
Web nginx auf Port 80 (für alle erreichbar), /etc/nginx/sites-available/zammad.conf; eigene Ergänzungen in /etc/nginx/conf.d/*.conf. Kein TLS – dafür einen Reverse-Proxy davor setzen (z. B. iac-traefik); dessen X-Forwarded-Proto und X-Forwarded-For aus privaten Netzen werden übernommen
Datenbank PostgreSQL (Modul postgresql), Datenbank und Rolle zammad, Passwort zammad_db_password in /etc/iac/settings.env, Zugang in /opt/zammad/config/database.yml
Suche Elasticsearch 9 (Modul elasticsearch), nur localhost:9200, 1 GiB Heap
Redis redis-server aus Debian, nur localhost (das Paket von Zammad verlangt es; Valkey ersetzt es nicht)
Logs /var/log/zammad/, journalctl -u zammad-web-1

Anhänge liegen in der Datenbank (Zammad-Standard). Mit dem Modul backup werden die Datenbank gesichert (nächtlicher Dump) und /var/lib mit dem Suchindex; der Index lässt sich auch jederzeit neu aufbauen:

zammad run rake zammad:searchindex:rebuild

Update (im Gast)

update

Das Paket zammad ist per dpkg festgehalten: Das Debian-Upgrade von update lässt es aus, danach installiert iac die neueste Version aus dem Repository von Zammad. Die Migrationen der Datenbank führt das Paket dabei selbst aus. Elasticsearch bleibt beim Update in der Hauptversion 9.

Selbsttest (im Gast)

bash /var/lib/iac/src/core/bin/iac-smoke

Prüft neben den Diensten und Ports: Ersteinrichtung abgeschlossen, Migrationen vollständig, Redis und Elasticsearch erreichbar, Suchindex vorhanden, Puma, Websocket und Elasticsearch nur lokal.