Installation via Docker hinter einem HTTPS->HTTP Reverse Proxy

Hallo Goobi Community,

wir sind gerade dabei den Goobi Viewer zu installieren. Um uns den Aufwand etwas zu reduzieren haben wir uns für die Docker Installation entschieden. Da dieser Standardmäßig nur via HTTP läuft haben wir noch einen NGINX Reverse Proxy davor gesetzt welcher HTTPS übernimmt. Nun will der Goobi Viewer für seine Links zwar HTTPS verwenden, jedoch auf Port 80. (z.B. https://beispiel.de:80/viewer/…)

Nach etwas Recherche ist das meiner Einschätzung nach auf die Tomcat Einstellung zurückzuführen, und zwar Konkret auf diese nicht konfigurierbare proxyPort Einstellung hier: goobi-viewer-core-config/goobi-viewer-core-config/src/main/resources/docker/server.xml.patch at master · intranda/goobi-viewer-core-config · GitHub welche meines Verständnisses dafür sorgt, dass Goobi Viewer hinter einem Proxy denkt dass es von außen via Port 80 erreichbar wäre, was im Falle von HTTPS natürlich nicht stimmt.
Da diese Datei im Container liegt können wir sie auch nicht bearbeiten. Wir könnten zwar ein Volume mounten was gezielt diese Datei überschreibt, jedoch wirklich das nicht so als ob dies so vorgesehen wäre.

Was machen wir hier falsch? Vielen Dank für jede Hilfestellung im Voraus.

Hallo Sahnee,

in meinem Test-Setup bin ich auf dasselbe Problem gestoßen. Ich habe mir damit beholfen, im laufenden Viewer-Container die Datei /usr/local/tomcat/conf/server.xml.template abzuändern.

In den Container kommt man mit dem befehl docker exec -ti docker_viewer_1 bash, dann mit apt update und apt install vim einen editor installieren.

Anstelle von proxyPort="80" /> steht dort jetzt proxyPort="443" /> für den passenden HTTPS-Port.

Aus dieser Datei wird bei einem einfachen Neustart (docker-compose restart) die server.xml generiert.

Es gibt sicherlich eine elegantere Lösung über die docker-compose.yml, aber für mich funktioniert es einwandfrei – nur der Upload von CMS-Bildern klappt nicht. Zudem muss man diesen Schritt jedes Mal wiederholen, wenn der Container neu gebaut wird.

Liebe Grüße
Max

1 „Gefällt mir“

Top, danke Max - so hat es geklappt das es erreichbar ist.

Ich habe die Datei automatisch via docker-compose einbgebunden dass das nicht jedes Mal manuell geändert werden muss.

  1. Die angepasste Datei irgendwo z.B. /root/server.xml.template auf dem Host hinterlegen
  2. In der docker-compose.override.yml habe ich folgendes hinterlegt:
services:
  viewer:
    volumes:
      - type: bind
        source: /root/server.xml.template
        target: /usr/local/tomcat/conf/server.xml.template

Jetzt habe ich beim Öffnen der Seite folgenden Fehler - dieser wird jedoch bereits im Viewer angezeigt:

URL:
2026-01-15 10:47:33: /resources/themes/reference/urlMappings/index.xhtml @16,84 listener="#{cmsBean.forwardToCMSPage}": Method not found: io.goobi.viewer.managedbeans.CmsBean@68cadd2e.forwardToCMSPage(jakarta.faces.event.ComponentSystemEvent)

Weißt Du was es damit auf sich hat? MethodNotFound klingt für mich erstmal so als ob die Version einer verwendete Bibliothek nicht damit zusammen passt was Goobi erwartet, was in einem Container eigenartig wäre.

Danke schonmal für Deinen bisherigen Tipp! :slight_smile:

//Edit: Denkst Du das Problem mit den Bilderupload bei Dir hängt mit Docker zusammen? Es sieht nach Netzwerkprotokoll so aus als würde er beim Upload versuchen diese jetzt aus irgendeinem Grund via HTTP ABER über Port 443 hochzuladen.

Damit der Dateiupload geht muss in der Tomcat Config die Scheme auf HTTPS gesetzt werden und secure auf true. Auch wenn es so klingt lässt das nicht Tomcat die Verschlüsselung übernehmen, sondern teilt ihm nur mit dass dies der Fall ist. Dies ist meine aktuelle Tomcat Config, hiermit geht der Upload:

Dateiupload funktioniert - danke dafür!
Hast du deinen Fehler behoben bekommen?
Ist der Ordner mit dem Theme eingebunden oder liegt der im Container?

Ich weiß nicht ob das so gewollt ist, aber ich habe eine eigene Startseite definiert, seit dem sehe ich diesen nicht mehr - richtig fühlt es sich nicht an :slight_smile:

Ich verwende aktuell kein eigenes Theme, sondern nur das war standardmäßig mit dem Docker Container geliefert wurde.