Docker (empfohlen)

Relution Installation mit Docker auf Linux Host

Einleitung

Die Anleitung wurde zuletzt auf Rocky / Alma Linux 8, 9 und 10 geprüft
(Stand Dez. 2025). 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 folgende Punkte erfüllt sind:

  • Der Host-Rechner sich mit dem Internet verbinden kann.
  • Über root oder sudo Rechte verfügen.
  • Optional: Ein gültiges SSL Zertifikat für die URL.

Wichtig: Selbst signierte Zertifikate funktionieren nicht, da mobile Geräte ihnen nicht vertrauen. Sie können Ihr Root-Zertifikat manuell auf einem Gerät installieren, aber diese Vorgehensweise ist aufgrund des hohen Aufwands nicht empfohlen. Zertifikate von Let’s Encrypt → sind getestet und funktionieren.


Vorbereitung

Wenn Sie mit vim vertraut sind, können Sie ihn als Standardeditor festlegen. Überspringen Sie diesen Abschnitt, wenn Sie den Standardeditor verwenden möchten.

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

Übersicht

Die Installation gliedert sich in folgende Hauptschritte:

  1. Docker und Docker Compose installieren.
  2. Container konfigurieren.
  3. Traefik oder 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 / Rocky 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

compose.yaml

Laden Sie die Datei herunter:

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

Bearbeiten Sie die Datei:

vim /opt/relution/compose.yaml

Passen Sie die Datei an Ihre Umgebung an. Sie müssen mindestens den folgenden Platzhalter ersetzen:

PlatzhalterBeschreibung
%POSTGRES_PASSWORD%Das Passwort des Relution Datenbank Benutzer

application.yml

Laden Sie die Datei herunter:

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

Bearbeiten Sie die Datei:

vim /opt/relution/application.yml

Passen Sie die Datei an Ihre Umgebung an. Sie müssen die folgenden Platzhalter ersetzen:

PlatzhalterBeschreibung
%EXT_HOSTNAME_URL%Die externe Adresse des Relution-Servers, z.B. https://mdm.example.com
%POSTGRES_PASSWORD%Das Passwort des Relution-Datenbank-Benutzers
%SYSTEM_ADMIN_PASSWORD%Das initiale Passwort des Systemadministrator. Ändern Sie dies nach dem ersten Login und entfernen Sie danach diese Zeile.
%SYSTEM_ADMIN_EMAIL%Die Mailadresse des Systemadministrators

Hinweis zu Passwörtern: Die Compose-Datei definiert drei Dienste: database, relution und traefik. Verwenden Sie für die Passwörter sichere Zufallspasswörter (z. B. mit pwgen -snc 48 1). Wenn Sie den Passwort-Platzhalter in einem Container (z. B. %POSTGRES_PASSWORD%) ersetzen, stellen Sie sicher, dass Sie das gleiche Kennwort auch in der application.yml verwenden.

Datenpersistenz: Die Standard Konfiguration bildet die Datenverzeichnisse von PostgreSQL auf das Host System ab. Relution speichert alle seine Daten in der Datenbank, so dass keine zusätzliche Konfiguration erforderlich ist. Stellen Sie sicher, dass Sie PostgreSQL in Ihre Backup-Strategie einbeziehen.


Konfiguration von Traefik (Reverse Proxy)

Traefik wird als Reverse Proxy verwendet, um den Zugriff auf Relution zu ermöglichen und gleichzeitig SSL/TLS-Verschlüsselung bereitzustellen. Ohne Traefik oder einen ähnlichen Proxy ist der Zugriff auf Relution nur lokal über localhost möglich.

Automatische Zertifikatserstellung (Let’s Encrypt)

Laden Sie die Traefik-Konfigurationsdatei herunter und passen Sie sie an Ihre Umgebung an:

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

In der Datei /opt/relution/configs/traefik/relution.yaml muss der Platzhalter external.url durch die tatsächliche externe URL ersetzt werden:

vim /opt/relution/configs/traefik/relution.yaml
http:
  routers:
    relution:
      rule: Host(`external.url`) # Platzhalter ersetzen

Hinweis: Die Angabe der External URL erfolgt hier, anders als in der application.yml, ohne vorangeführtem https://.

Anderweitig bezogene Zertifikate (Statisch)

Laden Sie die Konfigurationsdatei für statische Zertifikate herunter:

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

In der Datei /opt/relution/configs/traefik/relution.yaml muss der Platzhalter external.url durch die tatsächliche externe URL ersetzt werden:

vim /opt/relution/configs/traefik/relution.yaml
http:
  routers:
    relution:
      rule: Host(`external.url`) # Platzhalter ersetzen

Die Zertifikatskette und der entsprechende private Schlüssel müssen unter server.pem und server.key im Verzeichnis /opt/relution/certs/static abgelegt werden.

Zudem muss der traefik: Block in der compose.yml angepasst werden:

...
  traefik:
   ...
    command:
      - --providers.file.directory=/opt/traefik/
      - --entryPoints.web.address=:80
      - --entryPoints.web.http.redirections.entryPoint.to=websecure
      - --entryPoints.web.http.redirections.entryPoint.scheme=https
      - --entryPoints.websecure.address=:443
    ...
    volumes:
      - ./configs/traefik:/opt/traefik
      - ./certs/static:/opt/certs
...

Konfiguration von nginx alternativ zu Traefik (Reverse Proxy)

Nginx wird als Reverse Proxy verwendet, um den Zugriff auf Relution zu ermöglichen und gleichzeitig SSL/TLS-Verschlüsselung bereitzustellen. Ohne Nginx oder einen ähnlichen Proxy ist der Zugriff auf Relution nur lokal über localhost möglich.

Laden Sie die nginx-Konfigurationsdatei herunter:

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

Ersetzen Sie den traefik: Block in der compose.yaml durch diesen nginx: Block:

  nginx:
    image: nginx:stable
    restart: unless-stopped
    container_name: nginx
    depends_on:
      - relution
    environment:
      TZ: "Europe/Berlin"
      NGINX_HOST: "%EXT_HOSTNAME%"
    ports:
      - "80:80"
      - "443:443"
    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"

Für erhöhte Sicherheit wird die Verwendung besserer DH-Parameter empfohlen.

  1. Schlüssel generieren:

    openssl dhparam -out /opt/relution/dhparams.pem 4096
    
  2. relution-nginx.conf anpassen: Fügen Sie die Zeile hinzu (und aktivieren Sie ggf. ssl_stapling):

    ssl_dhparam /etc/nginx/dhparams.pem;
    
  3. compose.yaml Volumes erweitern: Passen Sie die Volumes des nginx-Containers an, um die DH-Parameter einzubinden:

    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" # Hinzugefügt
    

Die Konfiguration erwartet, dass sich Ihr SSL-Zertifikat und Ihr Schlüssel in /opt/relution/server.pem und /opt/relution/server.key befinden. Andernfalls passen Sie die Volumes des nginx-Containers an.

SSL Zertifikat umwandeln →


Relution starten

Wechseln Sie in das Relution-Verzeichnis und starten Sie die Docker-Container:

cd /opt/relution/
docker compose up -d

Dadurch werden die Images heruntergeladen und die Dienste gestartet. Es kann einige Zeit dauern, bis die Dienste verfügbar sind.

Um die Log-Ausgabe eines bestimmten Containers zu sehen (z.B. Relution):

docker logs -f <container_name> # Beispiel: docker logs -f relution

Herunterfahren

Zum Herunterfahren und Entfernen der Container (die Images bleiben erhalten):

cd /opt/relution/
docker compose down

Relution Updaten

Um die Dienste zu aktualisieren, verwenden Sie folgende Befehle:

cd /opt/relution/
docker compose pull # Lädt das neueste Image herunter
docker compose up -d # Stoppt und startet die Container neu

Der Relution-Dienst wird während des Neustarts nicht verfügbar sein.


Bei Startproblemen mit Relution bitte die komplette Log als Zip-Datei an den Support senden. Der Support ist kostenpflichtig!