Einrichtung von Docker-Containern
Der i-net HelpDesk kann in einem Docker Container verwendet werden. Es gibt einen vorgefertigten Container, der auf einer alpine-Version auf Docker Hub basiert. Der Container bringt nur die Anwendung und die Tools mit, die zum Ausführen der Anwendung benötigt werden.
Hinweis: Der Container stellt keine Standardbenutzer zur Verfügung. Sie müssen sich via Registrieren zunächst anmelden. Siehe unten für fortgeschrittene Anwendungsfälle.
Schnellstart
Führen Sie den folgenden Befehl aus, um einen i-net HelpDesk Docker Container zu starten:
docker run -d -p 8002:8002 --name helpdesk inetsoftware/i-net-helpdesk
Hinweis: Für den Betrieb von i-net HelpDesk ist eine Datenbank erforderlich. Sie können MySQL/MariaDB, Oracle oder MSSQL verwenden. Ein Beispiel für die Verwendung von MySQL in einem parallelen Container finden Sie unten.
Verfügbare Tags
-
i-net HelpDesk 26.4: latest, alpine-26, alpine-26.4 (latest kann die nächste Hauptversion sein, wodurch ein neuer Lizenzschlüssel erforderlich sein kann)
-
i-net HelpDesk 25.10: alpine-25.10
-
i-net HelpDesk 25.x: alpine-25
-
i-net HelpDesk 24.x: alpine-24
-
i-net HelpDesk 23.x: alpine-23
-
i-net HelpDesk 22.10: alpine-22.10 (letzte unterstützte Version)
Erstellen einer voreingestellten Konfiguration
Der i-net HelpDesk Docker Container sollte entweder über eine Konfigurations-Eigenschaftsdatei oder über Umgebungsvariablen vorkonfiguriert werden. In beiden Fällen sollte zunächst eine lokale Installation mit der spezifischen Konfiguration erstellt werden. Mit Hilfe des Maintenance-Moduls kann ein Backup der Konfiguration erstellt werden und die darin enthaltene Configuration-Properties-Datei kann als Grundlage verwendet werden.
Hinweis: Um den Container beim Start vollständig einzurichten, müssen mindestens die folgenden Eigenschaften angegeben werden: CONF_listener__port und CONF_licensekey
Hinweis: In privaten Cloud-Umgebungen müssen Sie auch die Eigenschaft CONF_serverURL festlegen. Es wird empfohlen, diese Eigenschaft auch in anderen Umgebungen zu setzen.
Hinzufügen der Konfiguration
Eine Konfigurationsdatei kann mit Hilfe eines Volumes oder einer anderen Methode hinzugefügt werden, die dem Container eine bestimmte Konfiguration hinzufügt. Es kann die Standardkonfigurationsdatei verwendet werden oder eine andere über eine Umgebungsvariable gesetzt werden. Siehe Umgebungseigenschaften-Matrix.
Einrichten der Konfiguration mit Umgebungsvariablen
Um die Namen der Umgebungsvariablen zu erstellen, verwenden Sie die folgende Regel:
-
Präfix
CONF__für die Eigenschaft -
Ersetzen Sie jeden
.(Punkt) durch__(zwei Unterstriche)
Um die Konfiguration reproduzierbar und aktualisierbar zu machen, sollten Sie eine docker-compose.yml-Datei verwenden.
Beispiel
version: '2.1' services: helpdesk: image: 'inetsoftware/i-net-helpdesk:latest' restart: 'always' ports: - 8002:8002 environment: - DEFAULT_PROPFILE=/tmp/defaultConfiguration.properties - DEFAULT_CONFIG=User/Default # Setzen Sie die extern sichtbare Server-Url (entfernen Sie den Kommentar und fuegen Sie die korrekte Url ein) #- CONF_serverURL=https://hostname.company.com:8002/ # Setzen Sie den Lizenzschluessel (entfernen Sie den Kommentar und geben Sie den vollstaendigen Lizenzschluessel ein) #- CONF_licensekey=... # Fuehren Sie die Anwendung auf einem vorher festgelegten Port aus, um die Zuordnung zu erleichtern. - CONF_listener__port=8002 # Anpassen einer Option, z. B. der Themenfarben - CONF_theme__themecolors={"@base-color":"#123456","@primary-color":"#428bca"} # Aktivieren der Protokollierung, Weiterleitung des Protokolls an die Container-Log-Datei - CONF_log__engine=true - CONF_log__file=/dev/stdout # Standort fuer automatische Backups - CONF_BackupLocation=/home/helpdesk/.i-net software/helpdesk_User_Default/backup
Verwendung von Docker-Secrets
Für sensible Konfigurationswerte wie Lizenzschlüssel bieten Docker Secrets eine sicherere Alternative zu Umgebungsvariablen. Secrets werden automatisch aus dem Verzeichnis /run/secrets/ geladen und als Umgebungsvariablen verfügbar gemacht.
Hinweis: Der Container lädt automatisch alle Dateien aus /run/secrets/. Für Dateien, die mit conf_ beginnen (Groß-/Kleinschreibung wird ignoriert), bleibt das Präfix CONF_ großgeschrieben und der Rest wird in Kleinbuchstaben umgewandelt. Zum Beispiel:
-
Eine Secret-Datei namens
conf_licensekeywird als UmgebungsvariableCONF_licensekeyverfügbar sein -
Eine Secret-Datei namens
conf_listener__portwird zuCONF_listener__port -
Für andere Secret-Dateien wird der gesamte Dateiname großgeschrieben
Wichtig: Für Konfigurationsschlüssel mit gemischter Groß-/Kleinschreibung (wie serverURL) müssen Sie eine explizite Zuordnung verwenden, da das automatische Laden alles nach CONF_ in Kleinbuchstaben umwandelt. Zum Beispiel:
-
Der Konfigurationsschlüssel
serverURLerfordert die UmgebungsvariableCONF_serverURL(mit großgeschriebenem URL) -
Das automatische Laden von
conf_serverurlwürdeCONF_serverurl(alles klein) erstellen, was falsch ist -
Verwenden Sie eine explizite Zuordnung: Setzen Sie die Umgebungsvariable
SECRET_CONF_serverURL, um von/run/secrets/conf_serverurlzu laden und alsCONF_serverURLzu exportieren
Wichtig: Der Container läuft als Nicht-Root-Benutzer (typischerweise UID 1000/GID 1000). Secret-Dateien müssen von der Gruppe des Containers lesbar sein. Stellen Sie beim Erstellen von Secret-Dateien auf dem Docker-Host sicher, dass sie die richtigen Berechtigungen haben. Wenn der Container einen Berechtigungsfehler anzeigt, wird die tatsächliche GID angezeigt, die Lesezugriff benötigt.
Um Docker-Secret zu verwenden, müssen Sie:
-
Erstellen Sie die Secret-Datei auf Ihrem Docker-Host (z. B.
/etc/docker/secrets/conf_licensekey) -
Setzen Sie die richtigen Berechtigungen, damit die Datei von der Gruppe des Containers gelesen werden kann (typischerweise GID 1000)
-
Konfigurieren Sie das Secret in Ihrer
docker-compose.yml-Datei
Beispiel: Einfaches Secret (alles Kleinbuchstaben)
Für Konfigurationsschlüssel, die nur Kleinbuchstaben enthalten (wie licensekey), können Sie das automatische Laden verwenden:
version: '2.1' services: helpdesk: image: 'inetsoftware/i-net-helpdesk:latest' restart: 'always' ports: - 8002:8002 secrets: - conf_licensekey environment: - DEFAULT_PROPFILE=/tmp/defaultConfiguration.properties - DEFAULT_CONFIG=User/Default - CONF_listener__port=8002 # Der Lizenzschluesel wird automatisch aus /run/secrets/conf_licensekey geladen # und als Umgebungsvariable CONF_licensekey verfuegbar secrets: conf_licensekey: file: /etc/docker/secrets/conf_licensekey
Beispiel: Secret mit gemischter Groß-/Kleinschreibung (erfordert explizite Zuordnung)
Für Konfigurationsschlüssel mit gemischter Groß-/Kleinschreibung (wie serverURL) müssen Sie eine explizite Zuordnung verwenden:
version: '2.1' services: helpdesk: image: 'inetsoftware/i-net-helpdesk:latest' restart: 'always' ports: - 8002:8002 secrets: - conf_serverurl environment: - DEFAULT_PROPFILE=/tmp/defaultConfiguration.properties - DEFAULT_CONFIG=User/Default - CONF_listener__port=8002 # Explizite Zuordnung fuer gemischte Gross-/Kleinschreibung: SECRET_CONF_serverURL laedt aus /run/secrets/conf_serverurl # und exportiert als CONF_serverURL (behaelt die gemischte Gross-/Kleinschreibung bei) - SECRET_CONF_serverURL secrets: conf_serverurl: file: /etc/docker/secrets/conf_serverurl
Hinweis: Stellen Sie sicher, dass Sie die richtigen Berechtigungen für die Secret-Dateien auf dem Docker-Host setzen. Der Container läuft als Nicht-Root-Benutzer (typischerweise GID 1000), daher müssen die Secrets von dieser Gruppe lesbar sein. Um die tatsächliche GID zu finden, überprüfen Sie die Container-Logs, wenn ein Berechtigungsfehler vorliegt - sie zeigen die erforderliche GID an. Alternativ können Sie überprüfen mit:
# Finden Sie die GID des Containers (ersetzen Sie 'helpdesk' durch Ihren Containernamen) docker exec helpdesk id -g
Dann setzen Sie die Berechtigungen entsprechend (ersetzen Sie 1000 durch die tatsächliche GID, falls unterschiedlich):
CONTAINER_GID=1000 # Verwenden Sie die GID aus dem obigen Befehl, falls unterschiedlich mkdir -p /etc/docker/secrets chmod 750 /etc/docker/secrets chgrp $CONTAINER_GID /etc/docker/secrets echo "ihr-lizenzschluessel-hier" | tee /etc/docker/secrets/conf_licensekey echo "https://hostname.company.com:8002/" | tee /etc/docker/secrets/conf_serverurl chmod 640 /etc/docker/secrets/conf_licensekey chmod 640 /etc/docker/secrets/conf_serverurl chgrp $CONTAINER_GID /etc/docker/secrets/conf_licensekey chgrp $CONTAINER_GID /etc/docker/secrets/conf_serverurl
Hinweis: Bei Verwendung von Docker Swarm Secrets (nicht dateibasierte Secrets) werden die Berechtigungen automatisch von Docker verwaltet. Wenn Sie jedoch dateibasierte Secrets in docker-compose verwenden, müssen Sie die Berechtigungen manuell wie oben gezeigt setzen.
Erweiterter Anwendungsfall
Wenn es spezifischere Anforderungen gibt, wie z.B. eine vorausgefüllte Benutzerdatenbank, sollte ein benutzerdefinierter Container erstellt werden
Beispiel: Interner Zugriff mit öffentlichem Konto
Mit dem folgenden Compose-Beispiel können Sie einen Server erstellen, der ohne jegliche Berechtigungseinschränkungen gestartet wird und ohne weitere Authentifizierung über den öffentlichen URL-Kontext verwendet werden kann.
version: '2.1' services: helpdesk: image: 'inetsoftware/i-net-helpdesk:latest' restart: 'always' ports: - 8002:8002 environment: - DEFAULT_CONFIG=User/Default # Setzen Sie den Lizenzschluessel (entfernen Sie den Kommentar und geben Sie den vollstaendigen Lizenzschluessel ein) #- CONF_licensekey=... # Fuehren Sie die Anwendung auf einem vorher festgelegten Port aus, um die Zuordnung zu erleichtern. - CONF_listener__port=8002 # Nur das Gastkonto ist aktiv. - CONF_authentication__settings=[{"provider":"guest"}]
Beispiel: Hinzufügen der PAM-Authentifizierung und eines Standardbenutzers
Das folgende Dockerfile wird einen Benutzer admin mit dem Passwort password in einem neuen Container anlegen.
FROM inetsoftware/i-net-helpdesk
# Fuer die Installation zum Benutzer root wechseln
USER root
# Tools
RUN apk add --update linux-pam
# pam-Berechtigungen fuer alle erteilen
# Benutzer erstellen, mit dem wir uns anmelden koennen
RUN chmod +r /etc/shadow \
&& adduser -D -g "User" admin \
&& echo admin:password | chpasswd \
&& ln -s "/etc/pam.d/base-password" "/etc/pam.d/helpdesk"
# Die System-Anmeldung aktivieren. Per Default ist das PAM Plugin deaktiviert.
ENV CONF_authentication__settings="[{'provider':'system'},{'provider':'product','userCanRegister':'true'}]"
ENV CONF_plugins__activated="{}"
# Zurueck zum Produktbenutzer wechseln
USER helpdesk
Einhängen / Wiederverwendung einer gegebenen Konfiguration
Umgebungseigenschaften-Matrix
Docker Compose Beispiel
Um einen Docker-Container mit einer MySQL-Datenbank unter Verwendung von Docker Compose zu bündeln, kann das folgende Skript docker-compose.yml als Ausgangspunkt verwendet werden:
version: '2.1' services: helpdesk: image: 'inetsoftware/i-net-helpdesk:latest' restart: 'always' ports: - 8002:8002 links: # Verbinden Sie sich mit der vorbereiteten MySQL-Datenbank - 'mysql' command: # Mit dem folgenden wait-for.sh-Befehl kann der Dienst darauf warten, dass ein externer Dienst verfuegbar wird - sh - wait-for.sh - mysql:3306 - -- # Nachdem der MySQL Server gestartet wurde, starten Sie den eigentlichen i-net HelpDesk Server - sh - ./startServer.sh - -Dclearreports.config=User/Default - -Dsetupautoexecution=true environment: - DEFAULT_CONFIG=User/Default # Setzen Sie die extern sichtbare Server-Url (entfernen Sie den Kommentar und fuegen Sie die korrekte Url ein) #- CONF_serverURL=https://hostname.company.com:9443/ # Setzen Sie den Lizenzschluessel (entfernen Sie den Kommentar und geben Sie den vollstaendigen Lizenzschluessel ein) #- CONF_licensekey=... # Fuehren Sie die Anwendung auf einem vorher festgelegten Port aus, um die Zuordnung zu erleichtern. - CONF_listener__port=8002 # Einrichten der Verbindung zur MySQL-Datenbank - CONF_dbsConfigs=[{"status":"Unknown","dbName":"HDS","url":"jdbc:mysql://mysql:3306/inetHDOfficial?useSSL=false&allowPublicKeyRetrieval=true","user":"root","encodedPassword":"AU1KQVA=","host":"mysql","port":"3306","sid":"","catalog":"inetHDOfficial","driver":"mysql"}] mysql: image: 'mysql:8' restart: 'always' environment: - MYSQL_ROOT_PASSWORD=inet - MYSQL_DATABASE=inetHDOfficial - MYSQL_USER=inetHDOfficial - MYSQL_PASSWORD=inet volumes: - "/var/lib/mysql"
Hinweis: Abhängig von der jeweiligen Umgebung müssen möglicherweise noch weitere Optionen eingestellt werden. Bitte werfen Sie einen Blick auf die Umgebungseigenschaften-Matrix.
Euro-Office mit Docker
Stand: Juli 2026
Diese Seite beschreibt den empfohlenen Setup-Pfad für die Euro-Office-Integration: einen Euro-Office-Dokumentserver per Docker und die Anbindung an i-net HelpDesk.
ONLYOFFICE kann ebenfalls verwendet werden, ist in dieser Dokumentation aber der Kompatibilitäts- und Fallback-Pfad, nicht der primäre Referenzaufbau.
Empfohlener Standardpfad
Für neue Installationen wird dieser Aufbau empfohlen:
-
HelpDesk läuft in einem Container.
-
Der Euro-Office-Dokumentserver läuft in einem separaten Container.
-
Beide Container befinden sich im selben Docker-Netzwerk.
-
Der Browser greift über die öffentliche Dokumentserver-URL auf den Editor zu.
-
Die Server-zu-Server-Kommunikation verwendet interne Container-Adressen.
Full Stack mit HelpDesk
Das folgende Docker-Compose-Beispiel startet HelpDesk, MariaDB und den Euro-Office-Dokumentserver gemeinsam in einem geteilten Netzwerk:
services: helpdesk: image: your-helpdesk-image:latest container_name: helpdesk restart: always ports: - "9000:9000" environment: - CONF_eurooffice__documentserver__url=https://documentserver.example.com - CONF_eurooffice__documentserver__internal_url=http://documentserver - CONF_eurooffice__helpdesk__internal_url=http://helpdesk:9000 - CONF_eurooffice__documentserver__jwt_secret=your-shared-jwt-secret - CONF_eurooffice__session_secret=your-session-signing-secret depends_on: - mariadb - documentserver mariadb: image: mariadb:10.11 container_name: helpdesk-mariadb restart: always environment: - MARIADB_ROOT_PASSWORD=root-password - MARIADB_DATABASE=helpdesk volumes: - mariadb_data:/var/lib/mysql documentserver: image: ghcr.io/euro-office/documentserver:latest container_name: documentserver restart: always environment: - JWT_ENABLED=true - JWT_SECRET=your-shared-jwt-secret - JWT_HEADER=Authorization - ALLOW_PRIVATE_IP_ADDRESS=true - ALLOW_META_IP_ADDRESS=false - PLUGINS_ENABLED=false volumes: - documentserver_data:/var/www/onlyoffice/Data - documentserver_logs:/var/log/onlyoffice volumes: mariadb_data: documentserver_data: documentserver_logs:
Standalone Dokumentserver
Wenn bereits eine HelpDesk-Installation vorhanden ist und nur der Dokumentserver ergänzt werden soll, kann dieses minimale Setup verwendet werden:
services: documentserver: image: ghcr.io/euro-office/documentserver:latest container_name: documentserver restart: always ports: - "8080:80" environment: - JWT_ENABLED=true - JWT_SECRET=your-shared-jwt-secret - JWT_HEADER=Authorization - ALLOW_PRIVATE_IP_ADDRESS=true - ALLOW_META_IP_ADDRESS=false - PLUGINS_ENABLED=false volumes: - documentserver_data:/var/www/onlyoffice/Data - documentserver_logs:/var/log/onlyoffice volumes: documentserver_data: documentserver_logs:
Starten des Containers:
docker compose up -d
Der Dokumentserver benötigt beim ersten Start etwas Zeit. Prüfen Sie den Health-Endpunkt:
curl http://localhost:8080/healthcheck
Die Antwort sollte true sein, sobald der Server bereit ist.
HelpDesk-Konfiguration
Für den empfohlenen Docker-Standardpfad sind in HelpDesk typischerweise diese Werte relevant:
-
Document server URL: öffentliche Dokumentserver-URL für den Browserzugriff, z. B.
https://documentserver.example.com -
Document server JWT secret: gemeinsames JWT-Secret
-
Session signing secret: eigenes HelpDesk-Secret für Sitzungstokens
-
Internal document server URL: im Docker-Standardfall
http://documentserver -
Internal HelpDesk URL: im Docker-Standardfall
http://helpdesk:9000
Weitere Details zu den Feldern stehen auf der Seite Konfiguration.
HelpDesk-Umgebungsvariablen
Um das Euro-Office-Plugin im HelpDesk-Container zu konfigurieren, verwenden Sie Umgebungsvariablen mit dem Präfix CONF_eurooffice__.
| Variable | Beschreibung | Beispiel |
|---|---|---|
CONF_eurooffice__documentserver__url |
Öffentliche Dokumentserver-URL für Browser | https://documentserver.example.com |
CONF_eurooffice__documentserver__internal_url |
Interne URL für serverseitige Downloads von HelpDesk zum Dokumentserver | http://documentserver |
CONF_eurooffice__helpdesk__internal_url |
Interne URL für Downloads und Callbacks vom Dokumentserver zu HelpDesk | http://helpdesk:9000 |
CONF_eurooffice__documentserver__jwt_secret |
Gemeinsames JWT-Secret | (gemeinsames Secret) |
CONF_eurooffice__session_secret |
Secret zum Signieren der HelpDesk-Sitzungstokens | (festes Secret) |
Umgebungsvariablen des Dokumentservers
| Variable | Beschreibung | Standard |
|---|---|---|
JWT_ENABLED |
Aktiviert die JWT-Authentifizierung für Callbacks und Editor-Konfigurationen | false |
JWT_SECRET |
Gemeinsames Secret für die JWT-Token-Signierung | (leer, JWT deaktiviert) |
JWT_HEADER |
HTTP-Header-Name für die JWT-Übertragung in Callbacks | Authorization |
ALLOW_PRIVATE_IP_ADDRESS |
Erlaubt Anfragen an private IP-Adressen | true |
ALLOW_META_IP_ADDRESS |
Erlaubt META-IP-Adressenzugriffe | false |
PLUGINS_ENABLED |
Aktiviert Dokumentserver-Plugins | false |
SECURE_LINK_SECRET |
Secret für sichere Dokument-Links | (leer, deaktiviert) |
URL_EXTENSION |
URL-Erweiterungsmuster für eingehende Anfragen | / |
TZ |
Zeitzone für den Container | Systemstandard |
Netzwerk und Erreichbarkeit
Der Dokumentserver muss aus drei Richtungen sauber erreichbar sein:
-
Browser zum Dokumentserver: Der Browser lädt Editor, JavaScript, CSS und WebSocket-Verbindungen über die öffentliche Dokumentserver-URL.
-
Dokumentserver zu HelpDesk: Der Dokumentserver sendet Callbacks und lädt Dokumentinhalte von HelpDesk herunter.
-
HelpDesk zum Dokumentserver: HelpDesk lädt während der Callback-Verarbeitung die bearbeitete Datei vom Dokumentserver herunter.
Im Docker-Standardfall ergibt sich daraus typischerweise:
Browser Docker Docker
GET editor JS/API ────> documentserver:80
GET /office-editor ────> helpdesk:9000
HelpDesk (intern) ───> documentserver:80 (serverseitige Datei-Downloads)
Dokumentserver ───> helpdesk:9000 (Callbacks, Inhaltsdownloads)
Wenn der Dokumentserver auf einem anderen Host oder Netzwerk läuft, müssen die internen Docker-Service-Namen durch reale Hostnamen oder IP-Adressen ersetzt werden.
Beispiel:
CONF_eurooffice__documentserver__internal_url=http://192.168.1.100 CONF_eurooffice__helpdesk__internal_url=http://192.168.1.200:9000
Wenn HelpDesk nativ auf demselben Host wie der Docker-Dokumentserver läuft, kann http://host.docker.internal:9000 als interne HelpDesk-URL verwendet werden. Damit kann der Dokumentserver ein nicht containerisiertes HelpDesk erreichen.
JWT-Authentifizierung
Die JWT-Authentifizierung schützt die Kommunikation zwischen HelpDesk und Dokumentserver:
-
Editor-Konfiguration: HelpDesk signiert die Editor-Konfiguration mit dem gemeinsamen JWT-Secret.
-
Callbacks: Der Dokumentserver sendet ein signiertes JWT-Token mit den Speicherbenachrichtigungen an HelpDesk.
-
Algorithmus: HS256 (HMAC mit SHA-256)
-
Verifikation: Die Signatur wird serverseitig geprüft.
Für produktive Umgebungen sollte JWT aktiviert sein.
Kompatibler ONLYOFFICE-Server
Wenn statt Euro-Office ein kompatibler ONLYOFFICE-Server verwendet werden soll, kann derselbe grundsätzliche Aufbau verwendet werden. Der Unterschied liegt hauptsächlich im verwendeten Docker-Image.
Dafür ersetzen Sie im Compose-Beispiel:
image: ghcr.io/euro-office/documentserver:latest
mit:
image: onlyoffice/documentserver:latest
Weitere ONLYOFFICE-spezifische Hinweise finden Sie unter ONLYOFFICE unter Windows.
