Fortgeschrittene Installation von OTOBO 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 stattdessendocker-composeverwenden.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- 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 Docker-Stack im Überblick
Abschnitt betitelt „Der Docker-Stack im Überblick“Der Compose-Stack startet fünf Dienste bei HTTP, oder sechs bei HTTPS:
| Dienst | Container (OTOBO 11) | Aufgabe |
|---|---|---|
web | otobo-web-1 | OTOBO-Webserver (interner Port 5000) |
daemon | otobo-daemon-1 | Hintergrundaufgaben (Mail-Abruf, Eskalationen, Cron) |
db | otobo-db-1 | MariaDB-Datenbank (interner Port 3306) |
elastic | otobo-elastic-1 | Elasticsearch (Ports 9200/9300) |
redis | otobo-redis-1 | Redis-Cache |
nginx (nur HTTPS) | otobo-nginx-1 | Nginx-Reverse-Proxy mit TLS |
[!NOTE] Bei OTOBO-10.x-Installationen verwenden Containernamen Unterstriche statt Bindestriche (z. B.
otobo_web_1).
Laufende Container prüfen:
cd /opt/otobo-dockersudo docker compose psDocker-Volumes
Abschnitt betitelt „Docker-Volumes“Docker-Volumes speichern Daten dauerhaft auf dem Host. Container können neu erstellt werden, ohne Anwendungsdaten zu verlieren:
| Volume | Mount-Punkt | Verwendet von |
|---|---|---|
otobo_opt_otobo | /opt/otobo | web, daemon |
otobo_mariadb_data | /var/lib/mysql | db |
otobo_elasticsearch_data | /usr/share/elasticsearch/data | elastic |
otobo_redis_data | Redis-Datenverzeichnis | redis |
otobo_nginx_ssl | TLS-Zertifikat und Schlüssel | nginx (HTTPS) |
[!WARNING] Löschen Sie Volumes niemals ohne verifiziertes Backup. Siehe Backup & Restore.
HTTPS mit dem integrierten Nginx-Proxy aktivieren
Abschnitt betitelt „HTTPS mit dem integrierten Nginx-Proxy aktivieren“Für Produktionsumgebungen sollten Sie OTOBO über HTTPS betreiben – mit dem im Stack enthaltenen Nginx-Container.
Schritt 1: Auf die HTTPS-Umgebungsdatei umstellen
Abschnitt betitelt „Schritt 1: Auf die HTTPS-Umgebungsdatei umstellen“cd /opt/otobo-dockersudo cp -p .docker_compose_env_https .envFalls 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.
Schritt 2: TLS-Zertifikatspfade konfigurieren
Abschnitt betitelt „Schritt 2: TLS-Zertifikatspfade konfigurieren“Bearbeiten Sie .env und setzen Sie die Pfade zu Zertifikat und privatem Schlüssel innerhalb des Nginx-Containers:
sudo nano .envOTOBO_NGINX_SSL_CERTIFICATE=/etc/nginx/ssl/acme.crtOTOBO_NGINX_SSL_CERTIFICATE_KEY=/etc/nginx/ssl/acme.keyLegen 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.
Schritt 3: Stack starten oder neu starten
Abschnitt betitelt „Schritt 3: Stack starten oder neu starten“sudo docker compose up --detachMit aktiviertem HTTPS sollten sechs Container laufen (einschließlich nginx). Rufen Sie Installer oder Agent-Interface auf:
https://<ihr-server-fqdn>/otobo/Schritt 4: Web-Installer abschließen
Abschnitt betitelt „Schritt 4: Web-Installer abschließen“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).
Umgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“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.
Datenbank
Abschnitt betitelt „Datenbank“| Variable | Beschreibung |
|---|---|
OTOBO_DB_ROOT_PASSWORD | MariaDB-Root-Passwort. Erforderlich für den db-Dienst und den Web-Installer. |
Elasticsearch
Abschnitt betitelt „Elasticsearch“Elasticsearch benötigt in Produktion ausreichend Arbeitsspeicher. Host-Anforderungen finden Sie in der Elasticsearch-Docker-Produktionsanleitung.
| Variable | Beschreibung |
|---|---|
OTOBO_Elasticsearch_ES_JAVA_OPTS | JVM-Heap-Einstellungen, z. B. -Xms512m -Xmx512m. Für größere Installationen bis 4 GB erhöhen. |
Webserver und Nginx
Abschnitt betitelt „Webserver und Nginx“| Variable | Beschreibung |
|---|---|
OTOBO_WEB_HTTP_PORT | Externer HTTP-Port (Standard 80). Leitet bei aktiviertem Nginx auf HTTPS um. |
OTOBO_WEB_HTTPS_PORT | Externer HTTPS-Port (Standard 443). |
OTOBO_NGINX_SSL_CERTIFICATE | Pfad zum TLS-Zertifikat im Nginx-Container. |
OTOBO_NGINX_SSL_CERTIFICATE_KEY | Pfad zum privaten TLS-Schlüssel im Nginx-Container. |
OTOBO_NGINX_WEB_HOST | Interner HTTP-Host, den Nginx für den web-Dienst verwendet. |
OTOBO_NGINX_WEB_PORT | Interner HTTP-Port des web-Dienstes. |
Kerberos-SSO (optional)
Abschnitt betitelt „Kerberos-SSO (optional)“| Variable | Beschreibung |
|---|---|
OTOBO_NGINX_KERBEROS_KEYTAB | Kerberos-Keytab-Datei (Standard /etc/krb5.keytab). Muss vom Host gemountet werden. |
OTOBO_NGINX_KERBEROS_CONFIG | Kerberos-Konfigurationsdatei (Standard /etc/krb5.conf). |
OTOBO_NGINX_KERBEROS_REALM | Kerberos-Realm, verwendet in /etc/krb5.conf. |
OTOBO_NGINX_KERBEROS_KDC | KDC / Active-Directory-Controller. |
OTOBO_NGINX_KERBEROS_ADMIN_SERVER | Kerberos-Admin-Server. |
OTOBO_NGINX_KERBEROS_DEFAULT_DOMAIN | Standard-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.
Docker-Compose-Einstellungen
Abschnitt betitelt „Docker-Compose-Einstellungen“| Variable | Beschreibung |
|---|---|
COMPOSE_PROJECT_NAME | Präfix für Container- und Volume-Namen (Standard otobo). Ändern Sie dies, um mehrere OTOBO-Instanzen auf einem Host zu betreiben. |
COMPOSE_FILE | Doppelpunkt-getrennte Liste von Compose-Dateien, z. B. docker-compose/otobo-base.yml:docker-compose/otobo-override-https.yml. |
COMPOSE_PATH_SEPARATOR | Trennzeichen für COMPOSE_FILE (Standard : unter Linux). |
OTOBO_IMAGE_OTOBO | OTOBO-Web-/Daemon-Image-Tag überschreiben. |
OTOBO_IMAGE_OTOBO_ELASTICSEARCH | Elasticsearch-Image überschreiben. |
OTOBO_IMAGE_OTOBO_NGINX | Nginx-Image überschreiben. |
Benutzerdefinierte Nginx-Konfiguration
Abschnitt betitelt „Benutzerdefinierte Nginx-Konfiguration“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:
cd /opt/otobo-dockermkdir -p nginxsudo docker cp otobo-nginx-1:/etc/nginx/conf.d/otobo_nginx.conf nginx/otobo_nginx.confFügen Sie einen Volume-Mount in einer eigenen Override-Datei hinzu (bearbeiten Sie Dateien unter docker-compose/ nicht direkt — siehe unten):
services: nginx: volumes: - /opt/otobo-docker/nginx/otobo_nginx.conf:/etc/nginx/conf.d/otobo_nginx.conf:roBinden Sie die Datei über COMPOSE_FILE in .env ein und starten Sie neu:
sudo docker compose up --detachFür eine vollständig eigene Nginx-Konfiguration starten Sie mit .docker_compose_env_https_custom_nginx.
Nicht-Standard-Ports
Abschnitt betitelt „Nicht-Standard-Ports“Sind Port 80 oder 443 bereits belegt, setzen Sie alternative Ports in .env:
OTOBO_WEB_HTTP_PORT=8080OTOBO_WEB_HTTPS_PORT=8443Starten Sie den Stack nach der Portänderung neu.
Externe Datenbank verwenden
Abschnitt betitelt „Externe Datenbank verwenden“Standardmäßig starten alle fünf (bzw. sechs) Dienste gemeinsam. Läuft MariaDB außerhalb von Docker, starten Sie nur die benötigten Dienste:
sudo docker compose up --detach web nginx daemon redis elasticAlternativ erstellen Sie ein eigenes Compose-Override, das den db-Dienst entfernt oder deaktiviert, und verweisen OTOBO während der Installation auf Ihre externe Datenbank.
Eigene Compose-Overrides
Abschnitt betitelt „Eigene Compose-Overrides“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.ymlContainer neu erstellen:
sudo docker compose stopsudo docker compose up --detachDieses Muster funktioniert für jede Anpassung an Diensten oder Volumes.
OTOBO-Anwendung anpassen
Abschnitt betitelt „OTOBO-Anwendung anpassen“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:
sudo docker compose exec web bashcd /opt/otobocpanm -l local Some::ModuleexitUnter /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.
Lokale Docker-Images bauen
Abschnitt betitelt „Lokale Docker-Images bauen“[!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:
cd /optgit clone https://github.com/RotherOSS/otobo.gitcd otobogit checkout rel-11_0bin/docker/build_docker_images.shdocker image lsGebaute Images werden als local-<OTOBO_VERSION> getaggt. Referenzieren Sie sie in .env:
OTOBO_IMAGE_OTOBO=local-11.0.xOTOBO_IMAGE_OTOBO_ELASTICSEARCH=local-11.0.xOTOBO_IMAGE_OTOBO_NGINX=local-11.0.xAutomatische Installation (Entwicklung)
Abschnitt betitelt „Automatische Installation (Entwicklung)“Für Testumgebungen können Sie den Web-Installer überspringen und das eingebaute Setup-Skript verwenden:
[!WARNING]
docker compose down -vlöscht alle Volumes und Daten. Nur auf Wegwerf-Testsystemen verwenden.
cd /opt/otobo-dockersudo docker compose down -vsudo docker compose up --detachsudo docker compose stop daemonsudo 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 daemonNützliche Befehle
Abschnitt betitelt „Nützliche Befehle“Stack-Verwaltung
Abschnitt betitelt „Stack-Verwaltung“sudo docker compose ps # laufende Container anzeigensudo docker compose logs -f web # Webserver-Logs verfolgensudo docker compose logs -f elastic # Elasticsearch-Logs verfolgensudo docker compose restart # alle Dienste neu startensudo docker compose stop # alle Dienste stoppensudo docker compose config # zusammengeführte Konfiguration prüfenIm OTOBO-Container
Abschnitt betitelt „Im OTOBO-Container“sudo docker compose exec web bash # Shell im Web-Container öffnenSystemwartung
Abschnitt betitelt „Systemwartung“docker system prune -a # ungenutzte Images, Container und Netzwerke entfernen (vorsichtig verwenden)Weiterführende Themen
Abschnitt betitelt „Weiterführende Themen“- Backup & Restore — Datenbank und Docker-Volumes schützen
- OTOBO aktualisieren — sicher auf eine neue Version upgraden
- Performance-Optimierung — Elasticsearch und OTOBO für hohes Volumen optimieren
- Kerberos-SSO — Single Sign-On mit Active Directory
- Grundlegende Docker-Compose-Installation — zurück zur Standard-Installationsanleitung
Für professionelle Unterstützung bei der Installation oder Integration wenden Sie sich an Softoft.de.
Häufig gestellte Fragen
Wann brauche ich die fortgeschrittene Docker-Compose-Anleitung?
Nach der Basisinstallation, wenn Sie HTTPS, Nginx, eigene Overrides oder Feineinstellungen am Stack benötigen.
Enthält der otobo-docker-Stack einen Nginx-Reverse-Proxy?
Ja. Für HTTPS aktivieren Sie den integrierten Nginx-Container und setzen die TLS-Zertifikatspfade in der .env-Datei.
Bleiben OTOBO-Daten in Docker-Volumes erhalten?
Ja. Anwendungs-, Datenbank-, Elasticsearch- und Redis-Daten liegen in benannten Docker-Volumes und bleiben bei Container-Neustarts erhalten.