• Academy
  • Website & Hosting
  • Marketing
  • Domains & E-Mails
  • Server
  • Online Shops
  • Digitales Büro
  • Managed Cloud
  • Academy
Wähle einen Artikel
Zammad Ticket System auf vServer/VPS installieren
Zammad Ticket System auf vServer/VPS installieren

0. Überblick

1. Zammad installieren

1.1 Einleitung

Zammad ist ein open-source Ticket System. Man hat die Möglichkeit es auf seinem eigenen Server zu hosten oder gegen eine Gebühr von Zammad hosten zu lassen. In dieser Anleitung zeige ich euch, wie ihr es sehr einfach selbst hosten könnt.

1.2 Infos zu yml Dateien

Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Ihr könnt den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator

1.3 Vorbereitung

Diese Anleitung basiert auf dem aktuellen Debian 10 Betriebssystem. Zammad werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates und eine schnelle Installation.

Um Zammad neben anderen Diensten auf unserem Server betreiben zu können, nutzen wir hier den Reverse Proxy Traefik. Die Anleitung dazu finden Sie hier: https://www.dogado.de/vps/vserver-anwendungsfaelle/traefik-reverseproxy-auf-vserver-installieren

1.3.1 Verzeichnis erstellen

Wir erstellen uns ein neues Verzeichnis, in welchem wir später alle Daten von Zammad abspeichen. Dazu geben wir folgendes in der Konsole ein:

mkdir -p /opt/containers/zammad/ 

Ihr könnt hier auch ein anderes Verzeichnis verwenden. Müsst dann aber die gesamte Anleitung entsprechend anpassen.

1.3.2 docker-compose.yml erstellen

Nun können wir mit der eigentlichen „Installation“ von Zammad beginnen. Dazu öffnet ihr folgende Datei:

nano /opt/containers/zammad/docker-compose.yml 

Nun kopiert ihr folgenden Code in die Datei. Dieser Code ist unser Bauplan für unseren Zammad Container.

version: '3' 

 

services: 

 

  zammad-backup: 

    command: ["zammad-backup"] 

    depends_on: 

      - zammad-railsserver 

      - zammad-postgresql 

    entrypoint: /usr/local/bin/backup.sh 

    environment: 

      - BACKUP_SLEEP=86400 

      - HOLD_DAYS=10 

      - POSTGRESQL_USER=${POSTGRES_USER} 

      - POSTGRESQL_PASSWORD=${POSTGRES_PASS} 

    image: ${IMAGE_REPO}:zammad-postgresql${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - zammad-backup:/var/tmp/zammad 

      - zammad-data:/opt/zammad 

 

  zammad-elasticsearch: 

    environment: 

      - discovery.type=single-node 

    image: ${IMAGE_REPO}:zammad-elasticsearch${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - elasticsearch-data:/usr/share/elasticsearch/data 

 

  zammad-init: 

    command: ["zammad-init"] 

    depends_on: 

      - zammad-postgresql 

    environment: 

      - MEMCACHE_SERVERS=${MEMCACHE_SERVERS} 

      - POSTGRESQL_USER=${POSTGRES_USER} 

      - POSTGRESQL_PASS=${POSTGRES_PASS} 

      - REDIS_URL=${REDIS_URL} 

    image: ${IMAGE_REPO}:zammad${VERSION} 

    restart: on-failure 

    volumes: 

      - zammad-data:/opt/zammad 

 

  zammad-memcached: 

    command: memcached -m 256M 

    image: memcached:1.6.10-alpine 

    restart: ${RESTART} 

 

  zammad-nginx: 

    command: ["zammad-nginx"] 

    depends_on: 

      - zammad-railsserver 

    image: ${IMAGE_REPO}:zammad${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - zammad-data:/opt/zammad 

    labels: 

      - "traefik.enable=true" 

      - "traefik.http.routers.zammad.entrypoints=http" 

      - "traefik.http.routers.zammad.rule=Host(`zammad.euredomain.de`)" 

      - "traefik.http.middlewares.zammad-https-redirect.redirectscheme.scheme=https" 

      - "traefik.http.routers.zammad.middlewares=zammad-https-redirect" 

      - "traefik.http.routers.zammad-secure.entrypoints=https" 

      - "traefik.http.routers.zammad-secure.rule=Host(`zammad.euredomain.de`)" 

      - "traefik.http.routers.zammad-secure.tls=true" 

      - "traefik.http.routers.zammad-secure.tls.certresolver=http" 

      - "traefik.http.routers.zammad-secure.service=zammad" 

      - "traefik.http.services.zammad.loadbalancer.server.port=8080" 

      - "traefik.docker.network=proxy" 

      - "traefik.http.routers.zammad-secure.middlewares=secHeaders@file" 

    networks: 

      - proxy 

      - default 

 

  zammad-postgresql: 

    environment: 

      - POSTGRES_USER=${POSTGRES_USER} 

      - POSTGRES_PASSWORD=${POSTGRES_PASS} 

    image: ${IMAGE_REPO}:zammad-postgresql${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - postgresql-data:/var/lib/postgresql/data 

 

  zammad-railsserver: 

    command: ["zammad-railsserver"] 

    depends_on: 

      - zammad-memcached 

      - zammad-postgresql 

      - zammad-redis 

    environment: 

      - MEMCACHE_SERVERS=${MEMCACHE_SERVERS} 

      - REDIS_URL=${REDIS_URL} 

    image: ${IMAGE_REPO}:zammad${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - zammad-data:/opt/zammad 

 

  zammad-redis: 

    image: redis:6.2.5-alpine 

    restart: ${RESTART} 

 

  zammad-scheduler: 

    command: ["zammad-scheduler"] 

    depends_on: 

      - zammad-memcached 

      - zammad-railsserver 

      - zammad-redis 

    environment: 

      - MEMCACHE_SERVERS=${MEMCACHE_SERVERS} 

      - REDIS_URL=${REDIS_URL} 

    image: ${IMAGE_REPO}:zammad${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - zammad-data:/opt/zammad 

 

  zammad-websocket: 

    command: ["zammad-websocket"] 

    depends_on: 

      - zammad-memcached 

      - zammad-railsserver 

      - zammad-redis 

    environment: 

      - MEMCACHE_SERVERS=${MEMCACHE_SERVERS} 

      - REDIS_URL=${REDIS_URL} 

    image: ${IMAGE_REPO}:zammad${VERSION} 

    restart: ${RESTART} 

    volumes: 

      - zammad-data:/opt/zammad 

 

volumes: 

  elasticsearch-data: 

    driver: local 

  postgresql-data: 

    driver: local 

  zammad-backup: 

    driver: local 

  zammad-data: 

    driver: local 

 

 

networks: 

  proxy: 

    external: true 

Nun müssen wir noch einiges anpassen.

1.3.3 Hostname anpassen

Nun müsst ihr noch den Hostnamen anpassen, über welchen später Zammad erreichbar sein soll.

Diese beiden Zeilen müsst ihr anpassen.

    - "traefik.http.routers.zammad.rule=Host(`zammad.euredomain.de `)" 

    - "traefik.http.routers.zammad-secure.rule=Host(`zammad.euredomain.de`)" 

In meinem Fall also:

    - "traefik.http.routers.zammad.rule=Host(`zammad.testbereich.net`)" 

    - "traefik.http.routers.zammad-secure.rule=Host(`zammad.testbereich.net`)" 

Wenn ihr Zammad direkt auf eurer „Hauptdomain“ betreiben wollt, dann ändert ihr es folgendermaßen ab:

"traefik.http.routers.zammad.rule=Host(`www.euredomain.de`,`euredomain.de`)" 

"traefik.http.routers.zammad-secure.rule=Host(`www.euredomain.de`,`euredomain.de`)" 

1.3.4 env Datei anlegen

Nun müssten wir noch einige Einstellungen festlegen. Dazu brauchen wir eine weitere Datei. Gebt nun folgendes ein:

nano /opt/containers/zammad/.env 

Nun kopiert ihr den Code in die Datei:

IMAGE_REPO=zammad/zammad-docker-compose 

MEMCACHE_SERVERS=zammad-memcached:11211 

POSTGRES_PASS=zammad 

POSTGRES_USER=zammad 

REDIS_URL=redis://zammad-redis:6379 

RESTART= unless-stopped 

VERSION=-5.0.2-1 

In der Datei könnt ihr auch noch den Postgress Benutzer / Passwort anpassen. Momentan ist beides „zammad“. Ändert hier einfach die Werte ab.

2. Zammad starten

Gebt nun folgendes ein, um euren Zammad Container zu starten:

docker compose -f /opt/containers/zammad/docker-compose.yml up -d 

Beim ersten Start des Containers wird Zammad initialisiert. Dies bedeutet, dass die Datenbank eingerichtet, eure Einstellungen übernommen werden und vieles mehr. Daher dauert es einige Minuten, bis der Container dann über die Webseite erreichbar ist. Bei mir hat es ca. 4 Minuten gedauert. Auf eurer Webseite (z.B. zammad.euredomain.de) solltet ihr dann folgendes sehen:
 

2.1 Zammad einrichten

Klickt dazu auf „Neues System aufsetzen“.

Nun gebt ihr die Daten des Administrators ein:

Anschließend gebt ihr noch den Namen eueres Unternehmens an und könnt ein Logo hochladen. Die „System URL“ sollte dieselbe sein, welche ihr hier im Schritt 1.3.3 vergeben habt.

Nun könnt ihr noch euren E-Mail-Server einbinden. Klickt dazu auf den „Pfeil“ und wählt „SMTP“ aus.


Nun gebt ihr die Daten eures E-Mail Servers an. Diese könnt ihr beispielsweise bei gmail.com, web.de nachlesen.

Nun seid ihr fertig mit der Einrichtung. Nun seht ihr zum ersten Mal das Zammad Dashboard.

2.2 neue Benutzer anlegen

Nun könnt ihr noch weitere Benutzer anlegen. Klickt dazu auf das „Zahnrad“ im unteren linken Bereich.

Nun erscheinen die Optionen und der Bereich „Benutzer“ ist direkt ausgewählt.

Als erstes entfernen wir den bereits angelegten Benutzer „Nicole“. Klickt dazu auf die „3 Punkte“ hinter „Nicole“.

Wählt nun „löschen“ aus.

Nun müsst ihr noch die Löschung bestätigen. Gebt dazu in das untere Feld „LÖSCHEN“ ein.

Anschließend legen wir einen neuen Benutzer an. Klickt dazu auf „Neuer Benutzer“ im oberen Bereich.

Gebt nun alle Daten des Nutzers ein. Ihr könnt hier noch wählen, um es sich um einen „Admin“, „Agent“ oder „Kunden“ handelt.

2.3 Weiter Kanäle hinzufügen

Ihr könnt unter Zammad leicht weitere Kommunikationskanäle wie Google, Twitter oder Facebook hinzufügen. Klickt dazu auf das „Zahnrad“ im unteren Bereich.

Hier seht ihr im linken Bereich die Überschrift „Kanäle“. Dort könnt ihr die einzelnen Dienste in Zammad einbinden.

Weitere passende Themen