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 23.x: alpine-23
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.
