Problem bei Update auf 26.1

Relution 26.1 – Docker-Container startet nicht (Permission denied auf Temp-Verzeichnis)

Problem

Nach einem Update auf Relution 26.1 startet der Docker-Container nicht mehr. Im Container-Log erscheint wiederholt folgender Fehler:

Exception in thread "main" java.lang.reflect.InvocationTargetException
Caused by: java.io.IOException: Permission denied
    at java.base/java.io.File.createTempFile(File.java:2184)
    at io.relution.boot.Main.checkTempDirectory(Main.java:291)
    at io.relution.boot.Main.main(Main.java:216)

Ursache

Mit Version 26.1 wurden die Berechtigungen auf das interne Temp-Verzeichnis (relution.tmp) geändert. Das bestehende Verzeichnis im Docker-Volume gehört dadurch einem falschen Benutzer, weshalb der Relution-Dienst beim Start keinen Schreibzugriff hat und abbricht.

Beim Start prüft der Dienst den Zugriff auf das Temp-Verzeichnis:

  • Ist es nicht vorhanden, wird es neu angelegt (mit korrekten Berechtigungen).
  • Ist es vorhanden, versucht er es zu leeren – was mit falschen Berechtigungen fehlschlägt.

Lösung

Schritt 1 – Docker-Container stoppen

Stoppen Sie den betroffenen Relution-Container, bevor Sie Änderungen am Volume vornehmen:

docker stop <container-name>

Ersetzen Sie <container-name> durch den tatsächlichen Namen Ihres Containers, z. B. docker_relution.


Schritt 2 – Temp-Verzeichnis im Volume lokalisieren

Wechseln Sie in das Docker-Volumes-Verzeichnis und suchen Sie das betroffene Verzeichnis:

cd /var/lib/docker/volumes
find -type d -name relution.tmp

Die Ausgabe zeigt den vollständigen Pfad zum Verzeichnis, zum Beispiel:

./relution_data/_data/relution.tmp

Schritt 3 – Temp-Verzeichnis entfernen

Löschen Sie das Verzeichnis, solange der Container gestoppt ist:

find -type d -name relution.tmp -exec rm -rvf "{}" \;

Hinweis: Das Löschen ist sicher. Relution legt das Verzeichnis beim nächsten Start automatisch mit den korrekten Berechtigungen neu an. Es befinden sich keine dauerhaften Daten in diesem Verzeichnis.


Schritt 4 – Docker-Container wieder starten

Starten Sie den Container neu:

docker start <container-name>

Überprüfen Sie anschließend die Logs, um sicherzustellen, dass der Dienst erfolgreich gestartet ist:

docker logs -f <container-name> --since=5m

Erwartetes Ergebnis

Nach dem Neustart legt Relution das relution.tmp-Verzeichnis mit den korrekten Berechtigungen selbstständig neu an. Der Fehler Permission denied tritt nicht mehr auf und der Dienst startet normal.


Weitere Hinweise

  • Dieser Fehler tritt ausschließlich bei Updates von einer älteren Version auf 26.1 auf, da das Verzeichnis mit den alten Berechtigungen bereits existiert.
  • Bei Neuinstallationen ab Version 26.1 ist das Problem nicht vorhanden.
  • Sollte der Fehler nach diesen Schritten weiterhin auftreten, prüfen Sie, ob weitere Volume-Mounts eigene tmp-Verzeichnisse enthalten.