- Shell 60.2%
- Ruby 28.8%
- Jinja 11%
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>
|
||
|---|---|---|
| .forgejo/workflows | ||
| files | ||
| handlers | ||
| tasks | ||
| templates | ||
| tests | ||
| .clinerules | ||
| .cursorrules | ||
| .windsurfrules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| iac.json | ||
| README.md | ||
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 (
httpshinter 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.