Zum Inhalt springen

Fortgeschrittene Installation von OTOBO mit Docker Compose

Fortgeschrittene OTOBO-Installation mit Docker Compose

Diese Anleitung behandelt die erweiterte Konfiguration des offiziellen otobo-docker-Stacks. Vorausgesetzt wird, dass Sie die grundlegende Docker-Compose-Installation abgeschlossen haben und HTTPS aktivieren, den Stack optimieren oder an Ihre Infrastruktur anpassen möchten.

[!NOTE] Alle Befehle unten verwenden docker compose (Compose v2). Auf älteren Systemen können Sie stattdessen docker-compose verwenden.

  • Eine funktionierende OTOBO-Installation mit dem offiziellen otobo-docker-Repository unter /opt/otobo-docker
  • SSH-Zugang zum Host
  • Für HTTPS: ein gültiges TLS-Zertifikat und der zugehörige private Schlüssel (z. B. von Let’s Encrypt oder Ihrer CA)

Der Compose-Stack startet fünf Dienste bei HTTP, oder sechs bei HTTPS:

DienstContainer (OTOBO 11)Aufgabe
webotobo-web-1OTOBO-Webserver (interner Port 5000)
daemonotobo-daemon-1Hintergrundaufgaben (Mail-Abruf, Eskalationen, Cron)
dbotobo-db-1MariaDB-Datenbank (interner Port 3306)
elasticotobo-elastic-1Elasticsearch (Ports 9200/9300)
redisotobo-redis-1Redis-Cache
nginx (nur HTTPS)otobo-nginx-1Nginx-Reverse-Proxy mit TLS

[!NOTE] Bei OTOBO-10.x-Installationen verwenden Containernamen Unterstriche statt Bindestriche (z. B. otobo_web_1).

Laufende Container prüfen:

Terminal-Fenster
cd /opt/otobo-docker
sudo docker compose ps

Docker-Volumes speichern Daten dauerhaft auf dem Host. Container können neu erstellt werden, ohne Anwendungsdaten zu verlieren:

VolumeMount-PunktVerwendet von
otobo_opt_otobo/opt/otoboweb, daemon
otobo_mariadb_data/var/lib/mysqldb
otobo_elasticsearch_data/usr/share/elasticsearch/dataelastic
otobo_redis_dataRedis-Datenverzeichnisredis
otobo_nginx_sslTLS-Zertifikat und Schlüsselnginx (HTTPS)

[!WARNING] Löschen Sie Volumes niemals ohne verifiziertes Backup. Siehe Backup & Restore.

Für Produktionsumgebungen sollten Sie OTOBO über HTTPS betreiben – mit dem im Stack enthaltenen Nginx-Container.

Terminal-Fenster
cd /opt/otobo-docker
sudo cp -p .docker_compose_env_https .env

Falls bereits eine .env-Datei aus einer HTTP-Installation existiert, sichern Sie diese zuerst oder übernehmen Sie Ihre bestehenden Einstellungen (insbesondere OTOBO_DB_ROOT_PASSWORD) in die neue Datei.

Bearbeiten Sie .env und setzen Sie die Pfade zu Zertifikat und privatem Schlüssel innerhalb des Nginx-Containers:

Terminal-Fenster
sudo nano .env
OTOBO_NGINX_SSL_CERTIFICATE=/etc/nginx/ssl/acme.crt
OTOBO_NGINX_SSL_CERTIFICATE_KEY=/etc/nginx/ssl/acme.key

Legen Sie die Zertifikatsdateien im Volume otobo_nginx_ssl ab oder mounten Sie sie vom Host. Der genaue Mount ist in docker-compose/otobo-override-https.yml definiert.

Terminal-Fenster
sudo docker compose up --detach

Mit aktiviertem HTTPS sollten sechs Container laufen (einschließlich nginx). Rufen Sie Installer oder Agent-Interface auf:

https://<ihr-server-fqdn>/otobo/

Bei einer Neuinstallation folgen Sie den Web-Installer-Schritten mit denselben Datenbankeinstellungen wie bei HTTP (db als Hostname, OTOBO_DB_ROOT_PASSWORD als Root-Passwort).

Die .env-Datei steuert den gesamten Stack. Die Beispieldateien .docker_compose_env_http und .docker_compose_env_https sind Ausgangspunkte; passen Sie die Werte nach Bedarf an.

VariableBeschreibung
OTOBO_DB_ROOT_PASSWORDMariaDB-Root-Passwort. Erforderlich für den db-Dienst und den Web-Installer.

Elasticsearch benötigt in Produktion ausreichend Arbeitsspeicher. Host-Anforderungen finden Sie in der Elasticsearch-Docker-Produktionsanleitung.

VariableBeschreibung
OTOBO_Elasticsearch_ES_JAVA_OPTSJVM-Heap-Einstellungen, z. B. -Xms512m -Xmx512m. Für größere Installationen bis 4 GB erhöhen.
VariableBeschreibung
OTOBO_WEB_HTTP_PORTExterner HTTP-Port (Standard 80). Leitet bei aktiviertem Nginx auf HTTPS um.
OTOBO_WEB_HTTPS_PORTExterner HTTPS-Port (Standard 443).
OTOBO_NGINX_SSL_CERTIFICATEPfad zum TLS-Zertifikat im Nginx-Container.
OTOBO_NGINX_SSL_CERTIFICATE_KEYPfad zum privaten TLS-Schlüssel im Nginx-Container.
OTOBO_NGINX_WEB_HOSTInterner HTTP-Host, den Nginx für den web-Dienst verwendet.
OTOBO_NGINX_WEB_PORTInterner HTTP-Port des web-Dienstes.
VariableBeschreibung
OTOBO_NGINX_KERBEROS_KEYTABKerberos-Keytab-Datei (Standard /etc/krb5.keytab). Muss vom Host gemountet werden.
OTOBO_NGINX_KERBEROS_CONFIGKerberos-Konfigurationsdatei (Standard /etc/krb5.conf).
OTOBO_NGINX_KERBEROS_REALMKerberos-Realm, verwendet in /etc/krb5.conf.
OTOBO_NGINX_KERBEROS_KDCKDC / Active-Directory-Controller.
OTOBO_NGINX_KERBEROS_ADMIN_SERVERKerberos-Admin-Server.
OTOBO_NGINX_KERBEROS_DEFAULT_DOMAINStandard-Domain für Kerberos.

Verwenden Sie .docker_compose_env_https_kerberos als Basis und folgen Sie der Kerberos-SSO-Anleitung für die Active-Directory-Einrichtung.

VariableBeschreibung
COMPOSE_PROJECT_NAMEPräfix für Container- und Volume-Namen (Standard otobo). Ändern Sie dies, um mehrere OTOBO-Instanzen auf einem Host zu betreiben.
COMPOSE_FILEDoppelpunkt-getrennte Liste von Compose-Dateien, z. B. docker-compose/otobo-base.yml:docker-compose/otobo-override-https.yml.
COMPOSE_PATH_SEPARATORTrennzeichen für COMPOSE_FILE (Standard : unter Linux).
OTOBO_IMAGE_OTOBOOTOBO-Web-/Daemon-Image-Tag überschreiben.
OTOBO_IMAGE_OTOBO_ELASTICSEARCHElasticsearch-Image überschreiben.
OTOBO_IMAGE_OTOBO_NGINXNginx-Image überschreiben.

Der nginx-Container verwendet eine OTOBO-spezifische Vorlage unter /etc/nginx/template/otobo_nginx.conf.template. Umgebungsvariablen werden beim Containerstart substituiert.

Für Änderungen, die über die .env-Datei hinausgehen, exportieren Sie die aktive Konfiguration und mounten Ihre eigene Datei:

Terminal-Fenster
cd /opt/otobo-docker
mkdir -p nginx
sudo docker cp otobo-nginx-1:/etc/nginx/conf.d/otobo_nginx.conf nginx/otobo_nginx.conf

Fügen Sie einen Volume-Mount in einer eigenen Override-Datei hinzu (bearbeiten Sie Dateien unter docker-compose/ nicht direkt — siehe unten):

custom_nginx.yml
services:
nginx:
volumes:
- /opt/otobo-docker/nginx/otobo_nginx.conf:/etc/nginx/conf.d/otobo_nginx.conf:ro

Binden Sie die Datei über COMPOSE_FILE in .env ein und starten Sie neu:

Terminal-Fenster
sudo docker compose up --detach

Für eine vollständig eigene Nginx-Konfiguration starten Sie mit .docker_compose_env_https_custom_nginx.

Sind Port 80 oder 443 bereits belegt, setzen Sie alternative Ports in .env:

OTOBO_WEB_HTTP_PORT=8080
OTOBO_WEB_HTTPS_PORT=8443

Starten Sie den Stack nach der Portänderung neu.

Standardmäßig starten alle fünf (bzw. sechs) Dienste gemeinsam. Läuft MariaDB außerhalb von Docker, starten Sie nur die benötigten Dienste:

Terminal-Fenster
sudo docker compose up --detach web nginx daemon redis elastic

Alternativ erstellen Sie ein eigenes Compose-Override, das den db-Dienst entfernt oder deaktiviert, und verweisen OTOBO während der Installation auf Ihre externe Datenbank.

Bearbeiten Sie Dateien in docker-compose/ nicht direkt — sie werden beim Update des otobo-docker-Repositorys überschrieben. Legen Sie stattdessen eine eigene YAML-Datei an und referenzieren Sie sie in COMPOSE_FILE.

Beispiel: Datenbank über Port 3306 für externen Zugriff freigeben.

Erstellen Sie custom_db.yml:

services:
db:
ports:
- "0.0.0.0:3306:3306"

Tragen Sie sie in .env ein:

COMPOSE_FILE=docker-compose/otobo-base.yml:docker-compose/otobo-override-http.yml:custom_db.yml

Container neu erstellen:

Terminal-Fenster
sudo docker compose stop
sudo docker compose up --detach

Dieses Muster funktioniert für jede Anpassung an Diensten oder Volumes.

Die meisten Anwendungsänderungen gehören in das Volume otobo_opt_otobo (/opt/otobo im Container), nicht in ein modifiziertes Docker-Image.

Perl-Modul lokal installieren, ohne das Image neu zu bauen:

Terminal-Fenster
sudo docker compose exec web bash
cd /opt/otobo
cpanm -l local Some::Module
exit

Unter /opt/otobo/local installierte Module bleiben über Container-Neustarts hinweg erhalten.

Um Systempakete hinzuzufügen (z. B. zusätzliche Debian-Tools), bauen Sie ein eigenes Image aus einem Dockerfile basierend auf rotheross/otobo oder verwenden Sie docker commit in einer temporären Root-Session. Für Produktionsinstallationen ist das selten nötig.

[!NOTE] Das lokale Bauen von Images ist hauptsächlich für die OTOBO-Entwicklung oder bei gepatchten Basis-Images sinnvoll.

Dockerfiles befinden sich im OTOBO-Quellcode-Repository:

Terminal-Fenster
cd /opt
git clone https://github.com/RotherOSS/otobo.git
cd otobo
git checkout rel-11_0
bin/docker/build_docker_images.sh
docker image ls

Gebaute Images werden als local-<OTOBO_VERSION> getaggt. Referenzieren Sie sie in .env:

OTOBO_IMAGE_OTOBO=local-11.0.x
OTOBO_IMAGE_OTOBO_ELASTICSEARCH=local-11.0.x
OTOBO_IMAGE_OTOBO_NGINX=local-11.0.x

Für Testumgebungen können Sie den Web-Installer überspringen und das eingebaute Setup-Skript verwenden:

[!WARNING] docker compose down -v löscht alle Volumes und Daten. Nur auf Wegwerf-Testsystemen verwenden.

Terminal-Fenster
cd /opt/otobo-docker
sudo docker compose down -v
sudo docker compose up --detach
sudo docker compose stop daemon
sudo docker compose exec web bash -c \
"rm -f Kernel/Config/Files/ZZZAAuto.pm ; bin/docker/quick_setup.pl --db-password otobo_root"
sudo docker compose start daemon
Terminal-Fenster
sudo docker compose ps # laufende Container anzeigen
sudo docker compose logs -f web # Webserver-Logs verfolgen
sudo docker compose logs -f elastic # Elasticsearch-Logs verfolgen
sudo docker compose restart # alle Dienste neu starten
sudo docker compose stop # alle Dienste stoppen
sudo docker compose config # zusammengeführte Konfiguration prüfen
Terminal-Fenster
sudo docker compose exec web bash # Shell im Web-Container öffnen
Terminal-Fenster
docker system prune -a # ungenutzte Images, Container und Netzwerke entfernen (vorsichtig verwenden)

Für professionelle Unterstützung bei der Installation oder Integration wenden Sie sich an Softoft.de.

OTOBO professionell installieren lassen

Sparen Sie Zeit und Risiken: Softoft übernimmt die schlüsselfertige Installation, Docker-Setup, Härtung und Konfiguration für Ihre Produktivumgebung.

Häufig gestellte Fragen

Wann brauche ich die fortgeschrittene Docker-Compose-Anleitung?

Die fortgeschrittene Docker-Compose-Anleitung ist notwendig, sobald Sie über die grundlegende Installation von OTOBO hinausgehen und spezifische Anpassungen oder Optimierungen für eine Produktionsumgebung vornehmen möchten. Dies umfasst insbesondere die Aktivierung von HTTPS für eine sichere Kommunikation, die Nutzung des integrierten Nginx-Reverse-Proxys, die Implementierung eigener Overrides oder die Feineinstellung des gesamten Docker-Stacks. Typische Szenarien sind die Konfiguration von TLS-Zertifikaten, die Anpassung von Datenbank- oder Elasticsearch-Einstellungen für höhere Leistung oder die Integration von Authentifizierungsmethoden wie Kerberos-SSO. Die Anleitung hilft Ihnen, den Stack an Ihre spezifischen Infrastrukturanforderungen anzupassen und die Stabilität sowie Sicherheit Ihrer OTOBO-Instanz zu gewährleisten.Quellen:- Fortgeschrittene Installation von OTOBO mit Docker Compose- Grundlegende Docker-Compose-Installation

Enthält der otobo-docker-Stack einen Nginx-Reverse-Proxy?

Ja, der offizielle otobo-docker-Stack enthält einen integrierten Nginx-Reverse-Proxy-Container, der speziell für die sichere Bereitstellung von OTOBO über HTTPS konzipiert ist. Dieser Nginx-Dienst (otobo-nginx-1) ist standardmäßig aktiviert, wenn Sie die HTTPS-Umgebungskonfiguration (.docker_compose_env_https) verwenden. Seine Hauptaufgabe ist es, den Datenverkehr zum OTOBO-Webserver (otobo-web-1) abzufangen, TLS/SSL-Verschlüsselung zu handhaben und Anfragen sicher weiterzuleiten. Um ihn zu nutzen, müssen Sie lediglich die .env-Datei auf die HTTPS-Variante umstellen und die Pfade zu Ihrem TLS-Zertifikat und dem privaten Schlüssel innerhalb des Nginx-Containers konfigurieren. Dies ist ein entscheidender Schritt für jede OTOBO-Produktionsumgebung, um die Vertraulichkeit und Integrität der Daten zu gewährleisten.Quellen:- Fortgeschrittene Installation von OTOBO mit Docker Compose- OTOBO Documentation

Bleiben OTOBO-Daten in Docker-Volumes erhalten?

Ja, alle kritischen OTOBO-Daten bleiben dauerhaft in benannten Docker-Volumes auf dem Host-System erhalten. Dies ist ein zentrales Konzept von Docker, um die Persistenz von Daten unabhängig von der Lebensdauer der Container zu gewährleisten. Selbst wenn Sie Container neu erstellen, aktualisieren oder löschen, bleiben die in den Volumes gespeicherten Daten unberührt. Der otobo-docker-Stack verwendet mehrere spezifische Volumes für verschiedene Datenarten:- otobo_opt_otobo: Speichert Anwendungsdaten von OTOBO.- otobo_mariadb_data: Enthält die MariaDB-Datenbankdateien.- otobo_elasticsearch_data: Speichert die Daten des Elasticsearch-Indexes.- otobo_redis_data: Beherbergt die Redis-Cache-Daten.- otobo_nginx_ssl: Dient zur Speicherung von TLS-Zertifikaten und -Schlüsseln für Nginx.Es ist jedoch äußerst wichtig, diese Volumes niemals ohne ein verifiziertes Backup zu löschen, da dies zu irreversiblem Datenverlust führen würde. Regelmäßige Backups sind unerlässlich.Quellen:- Fortgeschrittene Installation von OTOBO mit Docker Compose- Backup & Restore

Welche Voraussetzungen sind für die fortgeschrittene Docker-Compose-Installation erforderlich?

Für die fortgeschrittene Installation und Konfiguration von OTOBO mit Docker Compose sind mehrere Voraussetzungen zu erfüllen, die über die grundlegende Einrichtung hinausgehen. Zunächst benötigen Sie eine funktionierende OTOBO-Installation mit dem offiziellen otobo-docker-Repository, idealerweise unter dem Pfad /opt/otobo-docker, wie in der Basisinstallation beschrieben. Zweitens ist SSH-Zugang zum Host erforderlich, um Befehle auszuführen, Konfigurationsdateien zu bearbeiten und den Docker-Stack zu verwalten. Drittens, und das ist besonders wichtig für Produktionsumgebungen, benötigen Sie für die Aktivierung von HTTPS ein gültiges TLS-Zertifikat und den zugehörigen privaten Schlüssel. Diese Zertifikate können von einer vertrauenswürdigen Zertifizierungsstelle (CA) stammen oder beispielsweise über Let's Encrypt bezogen werden. Diese Dateien müssen dann im otobo_nginx_ssl-Volume oder über Host-Mounts für den Nginx-Container zugänglich gemacht werden.Quellen:- Fortgeschrittene Installation von OTOBO mit Docker Compose- Grundlegende Docker-Compose-Installation

Was sollte ich über Umgebungsvariablen in der `.env`-Datei wissen?

Die .env-Datei ist das zentrale Steuerelement für den gesamten OTOBO-Docker-Stack und enthält alle wichtigen Umgebungsvariablen, die das Verhalten der Dienste definieren. Es ist entscheidend zu verstehen, dass die Beispieldateien wie .docker_compose_env_http und .docker_compose_env_https lediglich Ausgangspunkte sind. Sie sollten eine dieser Dateien als Basis für Ihre eigene .env verwenden und die Werte unbedingt an Ihre spezifischen Anforderungen anpassen. Wichtige Variablen umfassen das MariaDB-Root-Passwort (OTOBO_DB_ROOT_PASSWORD), JVM-Heap-Einstellungen für Elasticsearch (OTOBO_Elasticsearch_ES_JAVA_OPTS), externe Ports für HTTP/HTTPS (OTOBO_WEB_HTTP_PORT, OTOBO_WEB_HTTPS_PORT) sowie Pfade zu TLS-Zertifikaten für Nginx. Auch Kerberos-SSO-Einstellungen und Docker-Compose-spezifische Variablen wie COMPOSE_PROJECT_NAME zur Benennung der Container können hier konfiguriert werden. Eine sorgfältige Anpassung dieser Variablen ist für die Sicherheit, Leistung und korrekte Funktion Ihrer OTOBO-Instanz unerlässlich.Quellen:- Fortgeschrittene Installation von OTOBO mit Docker Compose- RotherOSS/otobo-docker GitHub Repository