Apache2 Port Weiterleitung

  • Moin Leute,

    ich stehe aufm Schlauch, aber erstmal ein paar Fakten.


    Ubuntu-Server 22.04

    Apache2


    Mein Webserver ist per LE geschützt und funtioniert auch, siehe hier: nodehub.de

    Nun würde ich gerne einen Docker Container unter der oben genannten Domain laufen lassen, das mache ich wie folgt:

    docker run -d -p 0.0.0.0:8080:8080 -v ~/trilium-data:/home/node/trilium-data zadam/trilium


    Den Container bekomme ich auch erfolgreich zum laufen, aber leider nur unter der IP Adresse: http://37.120.176.86:8080


    Hier meine Apache2 VHost:

    Ich habe es testweise auch schon mit der auskommentierten Zeile versucht - leider ohne Erfolg.


    Hier meine Firewall Config:


    Mein SSH port habe ich einmal zensiert.


    Jetzt die Frage an euch: Wie bekomme ich den Docker Container samt SSL unter meiner Domain zum laufen, irgendwas übersehe ich hier.


    Danke und Beste Grüße

  • Hier liegt wohl ein kleines Missverständnis vor. Du willst ja deinen Docker Container über Apache erreichbar machen. Was du aktuell konfiguriert hast, ist eine reine Weiterleitung, sprich dein Docker Container muss aktuell weiterhin auch für den Enduser direkt erreichbar sein. Was du eigentlich möchtest, ist ein sog. Reverse Proxy. Siehe auch https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html


    Statt einer Rewrite Rule brauchst du eine ProxyPass Konfiguration wie in dem Link oben beschrieben.


    Anschließend sollte dein Container zumindest über Port 80 des Apache erreichbar sein. SSL ist dann aber nochmal ein weiterer Schritt. Dafür brauchst du dann einen vHost auf Port 443. Ich würde aber erst einmal die Konfiguration mit ProxyPass durchgehen und schauen, dass das funktioniert. Anschließend kann man sich um die SSL Konfiguration kümmern.

  • Ich weiß nicht ob dir das auch weiter hilft, aber für dieses durchaus kleine und unkomplizierte Setup würde ich dir einfach zu einem Caddy Webserver raten.

    Ganze Konfiguration die du dafür brauchst:

    Code
    nodehub.de {
        reverse_proxy 127.0.0.1:8080
    }

    Generell würde ich dir empfehlen dein Setup in ein Docker Compose zu überführen. Das macht am Ende in der administration einfach mehr Spass. Da kannst du dann auch Caddy einfach als Container mit reinwerfen und in der Caddy Config einfach auf den Container Namen + Port verweisen und das wars, dann muss dein Trillium auch nichts exposen.

  • Zusätzlich bietet es sich übrigens auch an, den Docker Container nur auf localhost lauschen zu lassen und nicht ans public Interface zu binden.


    docker run -d -p 127.0.0.1:8080:8080 ...


    Damit ist der Container nicht mehr direkt extern erreichbar. Muss er ja auch gar nicht, da ein Reverseproxy (Apache, Caddy, traeffic, und wie sie alle heißen) die Anfragen übernehmen soll.

  • Jetzt läuft es.

    Nur um es nochmal für die Nachwelt festzuhalten.


    meine nodehub.de-le-ssl.conf wird ja vom Certbot für das LE Certificat erstellt. und sieht jetzt wie folgt aus:



    Damit wird mein Dockercontainer unter nodehub.de ereichbar - mit SSL.


    Als nächstes werde ich mich jetzt mal einlesen um den Tipp von DerRené einzubauen.

    Danke für den Tipp von foobla !