Einmal bauen, jederzeit einsetzen

Zammad im Auto-Deploy-Modus: ein Community-Projekt zum Nachbauen

Jeder Systemadministrator kennt die Herausforderung manueller Deployments: Sie kosten Zeit und bergen Risiken. Trotzdem sind sie in vielen Teams noch Alltag. In diesem Beitrag zeigt Systemadministrator Michael Amponsah, wie er Zammad-Deployments automatisiert und ein Live-Monitoring mit GitHub Actions, Docker, Prometheus und Grafana aufgebaut hat.

Hippo in origami style

Darum geht‘s

  • Aufbau einer vollständig automatisierten Deployment-Pipeline
  • Die Architektur hinter dem Setup für Anwendung und Monitoring
  • Praxisnahe Vorteile: konsistente Updates und Betriebssicherheit
  • So lässt sich die Lösung in der eigenen Infrastruktur umsetzen

Warum eine CI/CD-Pipeline sinnvoll ist

In modernen IT-Umgebungen sind Geschwindigkeit und Zuverlässigkeit gleichermaßen wichtig. Ob kleines Team mit internen Tools oder großer Support-Betrieb mit tausenden von Tickets – Systeme müssen jederzeit verfügbar, sicher und aktuell sein. Manuelle Deployments bremsen diesen Anspruch jedoch oft aus. Jeder Update-Vorgang bedeutet: einloggen, Änderungen abrufen, Container neu starten und hoffen, dass alles sauber hochfährt. Diese Abläufe sind fehleranfällig und schwer skalierbar.

Genau hier setzt Automatisierung an. Eine gut durchdachte CI/CD-Pipeline ersetzt wiederkehrende Schritte, minimiert menschliche Fehler und sorgt für konsistente Updates. In Kombination mit Live-Monitoring entsteht volle Transparenz über die Infrastruktur: Probleme lassen sich erkennen und beheben, bevor sie Auswirkungen auf die Nutzer haben.

Gerade für Teams, die Zammad einsetzen, bedeutet dieser Ansatz weniger manuellen Wartungsaufwand und mehr Vertrauen in jede neue Version. Um zu zeigen, wie das in der Praxis aussieht, habe ich eine vollständige CI/CD- und Monitoring-Umgebung rund um Zammad aufgebaut.

Wie die Architektur von Zammad dies ermöglicht

Die moderne, offene Architektur von Zammad mit nativer Unterstützung für Docker Deployments und modularen Diensten wie PostgreSQL, Redis, Elasticsearch und NGINX bildet in Kombination mit einer robusten REST-API eine natürliche Grundlage für DevOps-Workflows.

Die gleichen Prinzipien, die Zammad leicht erweiterbar machen, machen es auch leicht zu automatisieren. Schon beim Aufbau der CI/CD-Pipeline, hatte ich das Gefühl, dass Zammad für diese Art der Integration entwickelt wurde.

Das Projektziel

Das Ziel war simpel, aber mit großer Wirkung:

  • Deployment automatisieren, sodass nach jedem Push zu GitHub Zammad automatisch neu bereitgestellt wird
  • Überwachung der Systemleistung in Echtzeit mit Prometheus und Grafana
  • Ausführen aller Vorgänge auf einem Remote-VPS über SSH, sodass keine manuellen Befehle erforderlich sind.

Das Ergebnis: Eine vollständig automatisierte Zammad-Umgebung, die sich überwachen, warten und produktiv einsetzen lässt.

Die Zwei-Schichten-Architektur

Das Setup ist um zwei komplementäre Stacks aufgebaut, die Hand in Hand arbeiten: einer führt die Anwendung selbst aus, der andere sorgt für vollständige Transparenz und Monitoring im Betrieb.

1. Zammad-Stack (Applikationsebene)

Dieser Stack enthält alle Services, die für den täglichen Betrieb von Zammad entscheidend sind. Hier laufen die zentralen Prozesse zur Ticketerstellung, Kommunikation und Datenverarbeitung zusammen.

Zammad (WebApp + Scheduler + WebSocket): Die Kernanwendung mit Benutzeroberfläche, Hintergrundprozessen und Live-Kommunikation.

PostgreSQL (Datenbank): Die zentrale Datenquelle für Tickets, Benutzerinformationen und Systemeinstellungen.

Redis (Cache): Sorgt für schnelle Zwischenspeicherung und verwaltet Sessions sowie transiente Job-Queues.

Elasticsearch (Indexierung): Ermöglicht blitzschnelle Volltextsuchen in Tickets und Artikeln.

NGINX (Reverse Proxy): Steuert den externen Zugriff, verschlüsselt den Datenverkehr und leitet Anfragen gezielt an die richtigen Zammad-Komponenten weiter.

2. Monitoring-Stack (Betriebsebene)

Dieser Stack ist ausschließlich für die Überwachung und Analyse zuständig. Er sammelt kontinuierlich Metriken vom Hostsystem, aus der Docker-Umgebung und aus der laufenden Zammad-Instanz.

Prometheus (Metrik-Erfassung): Ruft in regelmäßigen Intervallen System- und Containerdaten ab.

Grafana (Visualisierung): Wandelt Rohdaten in übersichtliche Dashboards um und liefert in Echtzeit Einblicke in Zustand und Leistung des Systems.

node_exporter (Host-Metriken): Erfasst systemnahe Kennzahlen wie CPU-Last, Netzwerkauslastung oder Festplattenverbrauch direkt vom Server.

cAdvisor (Container-Metriken): Überwacht die einzelnen Docker-Container und liefert präzise Werte zur Ressourcennutzung pro Service.

Beide Stacks sind über Docker-Compose-Dateien definiert, was das Setup leicht reproduzierbar macht – egal ob lokal, im Staging oder in der Produktivumgebung. Das schafft Konsistenz und eliminiert das klassische „funktioniert auf meinem Rechner“-Problem.

Die Automatisierungsschleife: So funktioniert’s

Die eigentliche Magie passiert durch nur wenige Zeilen in einem GitHub-Actions-Workflow:

1. Ein Push auf GitHub triggert automatisch einen GitHub Actions Workflow.
2. Der Workflow stellt per SSH (Zugang über GitHub-Secrets) eine sichere Verbindung zum VPS her.
3. Nach erfolgreicher Verbindung führt er einen klar definierten Befehlsablauf aus:

git pull origin main
docker compose -f docker-compose.yml -f monitoring/docker-compose.monitoring.yml pull
docker compose -f docker-compose.yml -f monitoring/docker-compose.monitoring.yml up -d

4. Prometheus beginnt sofort mit dem Erfassen von Metriken aus den laufenden Containern.
5. Grafana visualisiert in Echtzeit den Zustand des Systems – von Container Health über CPU bis Speicher und Netzwerknutzung.

Ergebnisse: Zuverlässigkeit und Seelenfrieden

In produktiven IT-Umgebungen bedeutet Automatisierung vor allem eines: Konsistenz und Verlässlichkeit. Durch die Ablösung manueller Schritte per CI/CD-Pipeline lassen sich Fehlerquellen minimieren – und gleichzeitig operative Vorteile nutzen, die Zammad dank seiner Architektur ideal unterstützt:

  • Nahezu ausfallfreie Updates: Durch den Einsatz von Docker Compose können neue Container im Hintergrund gestartet werden, bevor die alten gestoppt werden. Updates lassen sich so sicher und schnell einspielen ohne Unterbrechung für Agents oder Endnutzer.
  • 100 % reproduzierbare Deployments: Der gesamte Deployment-Prozess ist als Code über Docker Compose und GitHub Actions definiert. Das garantiert, dass Zammad in jeder Umgebung (Development, Staging, Produktion) identisch eingerichtet und gestartet wird.
  • Schnellere Wertschöpfung: Auch kleine Updates oder kritische Bugfixes lassen sich in wenigen Minuten nach dem Push auf GitHub live bringen. Die hohe Geschwindigkeit sorgt dafür, dass neue Features schneller verfügbar sind und Sicherheitsprobleme sofort behoben werden können.
  • Volle Systemtransparenz: Dank der Integration von Prometheus und Grafana wird aus reaktiver Wartung ein proaktiver Betrieb. Engpässe oder Anomalien lassen sich frühzeitig erkennen und gezielt adressieren.
  • Reduzierte Troubleshooting-Zeit: Wenn es doch zu Problemen kommt, liefert Grafana die nötigen historischen Metriken und macht es einfach, Leistungseinbrüche mit bestimmten Deployments oder erhöhtem Nutzeraufkommen in Verbindung zu bringen.

Der nächste Schritt: Skalieren und optimieren

Das Schöne an einer modernen, offenen Architektur ist, dass die Erweiterungsmöglichkeiten endlos sind. Mit einer vollständig automatisierten und transparent überwachten Umgebung als Basis lassen sich gezielt nächste Schritte angehen, um die Supportabläufe auf die nächste Stufe zu bringen:

Alerting integrieren
Prometheus oder Grafana mit einem Slack-Channel verbinden, um bei kritischen Vorfällen sofort benachrichtigt zu werden – z. B. wenn ein Elasticsearch-Container ausfällt oder der Arbeitsspeicher kritisch ansteigt.
Zammad-spezifische Metriken erfassen
Nicht nur Systemzustand überwachen, sondern auch betriebsrelevante Kennzahlen über die Zammad-API abrufen – etwa Ticketaufkommen, durchschnittliche Antwortzeiten oder parallele Nutzerlast.
Automatische Rollbacks ermöglichen
Im GitHub-Actions-Workflow Logik ergänzen, die bei fehlgeschlagenen Deployments automatisch auf ein zuvor funktionierendes Container-Image zurückfällt.
Horizontal skalieren
Das ultimative Ziel. Den Betrieb von einem einzelnen VPS in ein Kubernetes-Cluster überführen – für echte Hochverfügbarkeit und maximale Skalierbarkeit.

Ausprobieren lohnt sich!

Sie können das vollständige Projekt-Repository erkunden und diese Pipeline auf Ihrem eigenen Server einrichten. Es enthält die Docker Compose-Dateien, die Prometheus-Konfiguration und den GitHub Actions Workflow, den Sie zum Einstieg benötigen.

Erfahren Sie mehr über das gesamte Projekt zum auto-deploy Zammad

  1. Warum eine CI/CD-Pipeline sinnvoll ist
  2. Wie die Architektur von Zammad dies ermöglicht
  3. Das Projektziel
  4. Die Zwei-Schichten-Architektur
  5. Die Automatisierungsschleife: So funktioniert’s
  6. Ergebnisse: Zuverlässigkeit und Seelenfrieden
  7. Der nächste Schritt: Skalieren und optimieren
  8. Ausprobieren lohnt sich!
  9. Über den Autor

Über den Autor

Michael Amponsah ist ein versierter IT-Spezialist mit mehr als sechs Jahren Erfahrung in den Bereichen Systemadministration, Cloud-Infrastruktur und Automatisierung. Er ist leidenschaftlich daran interessiert, Open-Source-Tools in reale Produktionsumgebungen zu integrieren, um so die Effizienz und Zuverlässigkeit zu steigern.

Mehr über seine Projekte und Arbeit finden Sie auf seinem LinkedIn-Profil: https://www.linkedin.com/in/michael-a-4b98329a

Signup
Freuen Ihre Kunden sich schon auf die Service-Hotline?
Kostenlos testen!