Docker (empfohlen)

Einleitung

Die Anleitung wurde zuletzt auf Alma Linux 8 und 9 geprüft, Stand Ausgust 2023. Wir empfehlen die Verwendung von Linux für das Hostsystem.

Diese Anleitung behandelt die Installation und Konfiguration einer grundlegenden Relution Instanz, die in Docker-Containern ausgeführt wird.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass:

  • Der Host-Rechner sich mit dem Internet verbinden kann.
  • Sie root oder sudo Rechte haben.
  • Sie ein gültiges SSL Zertifikat für die URL haben.

Selbst signierte Zertifikate funktionieren nicht, da mobile Geräte ihnen nicht vertrauen. Sie können Ihr Root-Zertifikat manuell auf einem Gerät installieren, damit das Gerät Ihrem Zertifikat vertraut.

Da dies sehr viel Arbeit mit sich bringt, wird diese Vorgehensweise nicht empfohlen. Zertifikate von Let’s Encrypt → sind getestet und funktionieren. Beachten Sie, dass ältere Geräte möglicherweise nicht diesen Zertifikaten nicht vertrauen, da sie erst vor kurzem als Zertifizierungsstelle (CA) eingerichtet wurden.

Vorbereitung

Während dieser Installation müssen einige Dateien manuell bearbeitet werden. Wenn Sie mit vim vertraut sind, setzen Sie ihn als Standardeditor mit den Befehlen fest. Wenn Sie mit vim nicht vertraut sind, überspringen Sie diesen Abschnitt bitte und verwenden Sie weiterhin den Standardeditor.

sudo dnf install -y vim
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 100

Übersicht

Komponenten:

  1. Docker und docker-compose installieren.
  2. Konfigurieren der Container.
  3. nginx konfigurieren.

Docker und docker-compose installieren

Um Relution in einem Docker Container zu betreiben, müssen Sie vorher Docker und docker-compose installieren.

Docker installieren

Bitte folgen Sie für Alma Linux diesen Befehlen:

dnf install -y dnf-utils wget
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Stellen Sie sicher, dass Sie den Docker-Dienst nach der Installation starten und aktivieren, damit er nach einem Systemneustart verfügbar ist.

systemctl enable docker
systemctl start docker

Container konfigurieren

Erstellen Sie ein Verzeichnis für Relution-Konfigurationsdateien, z.b. für docker-compose.

mkdir -p /opt/relution

Konfigurationsdateien laden und bearbeiten

docker-compose.yml

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/docker-compose.yml \
    --directory-prefix=/opt/relution
vim /opt/relution/docker-compose.yml

Passen Sie die Datei an Ihre Umgebung an. Alle Werte, die ersetzt werden müssen haben Platzhalter in Form von ${Value}, zum Beispiel ${MYSQL_ROOT_PASSWORD}. Sie müssen mindestens die folgenden Werte ersetzen:

PlatzhalterBeschreibung

${MYSQL_ROOT_PASSWORD}

Root Passwort der MariaDB https://mdm.example.com

${MYSQL_PASSWORD}

Das Passwort des Relution Datenbank Benutzers

${EXTERNAL_HOSTNAME}

Der Externe Hostname unter dem Relution erreichbar sein wird

application.yml

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/application.yml \
    --directory-prefix=/opt/relution
vim /opt/relution/application.yml

Passen Sie die Datei an Ihre Umgebung an. Alle Werte, die ersetzt werden müssen haben Platzhalter in Form von %VALUE%, zum Beispiel %EXT_HOSTNAME%. Sie müssen mindestens die folgenden Werte ersetzen:

PlatzhalterBeschreibung

%EXT_HOSTNAME_URL%

Die externe Adresse des Relution Servers, z.B. https://mdm.example.com

%MYSQL_PASSWORD%

Das Passwort des Relution Datenbank Benutzers

%SMTP_HOSTNAME%

Der Hostname des SMTP Servers

%SMTP_PORT%

Der Port des SMTP Servers (default: 25)

%SMTP_USERNAME%

Der Benutzername des SMTP Servers

%SMTP_PASSWORD%

Das Passwort des SMTP Serverbenutzers

%SYSTEM_ADMIN_PASSWORD%

Das initiale Passwort des Systemadministrators

Ändern Sie dies nach dem ersten Login und entfernen Sie danach diese Zeile

%SYSTEM_ADMIN_EMAIL%

Die Mailadresse des Systemadministrators

Die Docker-Compose-Datei definiert drei Dienste: mariadb, relution und nginx.

Stellen Sie sicher, dass Sie die in dieser Datei definierten Passwörter durch sicherere Passwörter ersetzen. Sie können z. B. mit pwgen -snc 48 1 sichere Zufallspasswörter erzeugen.

Wenn Sie den Passwort-Platzhalter auf einem Datenbank Container ersetzen z. B. %MYSQL_PASSWORD%, stellen Sie sicher, dass Sie das gleiche Kennwort auch in der application.yml verwenden.

Wenn Sie einen Docker-Container herunterfahren, gehen Daten innerhalb des Containers potentiell verloren. Das bedeutet, dass Daten, die persistiert werden müssen, außerhalb außerhalb des Containers gespeichert werden (z. B. auf einem gemounteten Volume).

Die Standard Konfiguration bildet die Datenverzeichnisse von MariaDB auf dem Host System ab. Relution speichert alle seine Daten in der Datenbank, so dass keine zusätzliche Konfiguration erforderlich ist.

Konfiguration von nginx

Laden Sie die nginx-Konfigurationsdatei herunter. Bearbeiten Sie sie und passen Sie bei Bedarf die Datei an Ihre Umgebung an.

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/relution-nginx.conf \
    --directory-prefix=/opt/relution

Für erhöhte Sicherheit sollten Sie SSL-Stapling aktivieren und bessere DH-Parameter verwenden. Stellen Sie die Dateien bei Bedarf bereit und aktivieren Sie dann die Optionen ssl_dhparam und ssl_stapling in der relution-nginx.conf.

Schlüssel generieren

openssl dhparam -out /opt/relution/dhparams.pem 4096

relution-nginx.conf

ssl_dhparam /etc/nginx/dhparams.pem;

Die Datei relution-nginx.conf wird in den Docker-Container als Volume über die Datei docker-compose.yml wie folgt eingebunden:

volumes:
  - "/opt/relution/relution-nginx.conf:/etc/nginx/conf.d/relution-nginx.conf"
  - "/opt/relution/server.pem:/etc/nginx/server.pem"
  - "/opt/relution/server.key:/etc/nginx/server.key"
  - "/opt/relution/dhparams.pem:/etc/nginx/dhparams.pem"

Die Konfiguration erwartet, dass sich Ihr SSL-Zertifikat und Ihr Schlüssel in /opt/relution/server.pem und /opt/relution/server.key befinden. Wenn sich diese Dateien an einem anderen Ort befinden oder einen anderen Namen haben, passen Sie die Volumes des nginx-Containers entsprechend an.

SSL Zertifikat umwandeln →

img

Konfiguration von MariaDB

Laden Sie die MariaDB-Konfigurationsdatei herunter.

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/relution.cnf \
    --directory-prefix=/opt/relution

Diese Datei konfiguriert MariaDB für die Verwendung von utf8mb4, das für die Unterstützung von Emojis und anderen Unicode-Zeichen erforderlich ist. Ohne diese Konfiguration schlägt der Import von Apps, die diese Zeichen in ihrem App-Namen oder ihrer Beschreibung verwenden, fehl.

HINWEIS: Die Datei relution.cnf wird in den Docker-Container als Volume in der Datei docker-compose.yml wie folgt eingebunden:

volumes:
  - "mariadb:/var/lib/mysql"
  - "/opt/relution/relution.cnf:/etc/mysql/conf.d/relution.cnf"

Wenn Sie diese Datei an einen anderen Ort verschieben möchten, müssen Sie die volumes des mariadb-Containers entsprechend aktualisieren.

Relution starten

Um die Docker-Container zu starten, die in der yaml-Datei definiert sind verwenden Sie folgende Befehle

cd /opt/relution/
docker-compose up -d

Dadurch wird das Docker-Image jedes Dienstes heruntergeladen, der in der Datei Datei docker-compose.yml definierte wurde. Die Images werden auf dem lokalen Rechner zwischengespeichert, sodass zukünftige Starts schneller möglich sind.

Es dauert einige Zeit, bis die Dienste gestartet werden, sobald die Downloads abgeschlossen sind. Um das Log-Output eines bestimmten Containers zu sehen, verwenden Sie den folgenden Befehl:

docker logs -f <container_name>

Verwenden Sie zum Beispiel docker logs -f docker_relution, um die Logausgabe von Relution einzusehen.

Zum Herunterfahren und Entfernen der Container verwenden Sie den folgenden Befehl:

cd /opt/relution/
docker-compose down

Dadurch werden die heruntergeladenen Images nicht entfernt.

Relution Updaten

cd /opt/relution/
docker-compose pull
docker-compose up -d

Dadurch wird das neueste Docker-Image für jeden Container heruntergeladen, bevor die Container neu gestartet werden. Der Relution-Dienst wird nicht verfügbar sein, bis der Neustart der Container abgeschlossen ist.