Ports anpassen

Gibts eine leichte Möglichkeit die Ports 80 und 443 anzupassen? Oder vielleicht reicht auch nur 443. Es mir einmal um eine Testinstallation.

Hintergrund: ich habe leider keine eigene IP-Adresse dafür übrig und 80 und 443 sind schon belegt. Ich würde dann einen Reverse-Proxy machen mit nginx, aber dazu müsste ich das Portal ohne https betreiben und ngnix den https-Layer dazumachen lassen. Das kommt mir grad komplizierter vor als einfach die Ports einmal anzupassen kurz, damit ich mir das ganze einmal anschaun kann.

Es läuft prinzipiell das Portal nicht auf 80/443 sondern irgendwo, wo du willst, und du musst einen reverse proxy nutzen, wenn du TLS haben willst. Das Portal an sich macht kein TLS, das kannst du auch nicht anschalten darin. Die Anpassung erfolgt in der config.py in der Variable PORT oder über die OBS_PORT Umgebungsvariable.

Wenn du das in deployment/README.md beschrieben Setup nutzt, bekommst du einen traefik als reverse proxy, der auch TLS Zertifikate mit LetsEncrypt erzeugt und dann auf 80/443 hört. Den ganzen traefik-Kram kannst du weglassen, wenn du einen nginx oder apache von Hand konfigurierst. Dafür einfach die entsprechenden Schritte überspringen bzw. alles was „traefik“ heißt löschen, z. B. in der docker-compose.yaml und so :wink:

Wenn du ohne TLS ein Setup machen willst, kannst du den PORT und den HOST einstellen und direkt dorthin sprechen vom browser aus. Aber evtl. stimmen dann einige Pfade oder redirect-URLs nicht… Im Development-Setup (normale README) funktioniert das aber.

dazu müsste ich das Portal ohne https betreiben und ngnix den https-Layer dazumachen lassen

So schwer ist das nicht, sofern du irgendwelche Zertifikate hast und eine eigene Subdomain für das Portal. Die Dokumentation von sanic hat ein Beispiel Snippet für nginx-Config.

1 „Gefällt mir“

Oh das hätte ich auch finden können eigentlich, danke! Keycloak ist im deployment auf 8080 konfiguriert, habe ich mittlerweile gefunden. Und ja, stimmt, du hast recht, eigentlich ist es viel leichter so, wenn ich es gleich ordentlich mache anstatt die Ports anzupassen. Was ich irgendwie nicht verstehe, woher der treafik im Deployement-Setup eigentlich weiß dass er 3000 und 8080 auf 443 mappen muss. Geht das über die labels im docker-compose-File?

Danke für deine Antwort jedenfalls! Traefik ist neu für mich und docker-compose kenn ich auch noch nicht alles, da brauch ich noch ein bisschen bis ich alles im Griff habe, aber ich glaube ich komme einmal zurecht.

2 „Gefällt mir“

Ja, ich glaube traefik schaut nach den als EXPOSE markierten Ports. Überschreiben oder manuell pflegen geht das mit einem Label:

      - traefik.http.services.portal.loadbalancer.server.port=3000

Die 443 als Entrypoint ist über den Entrypoint „websecure“ in traefik konfiguriert, der auch beim container als der zu nutzende entrypoint referenziert wird, per Label.

So ungefähr ticket traefik. Ganz durchschaut habe ich es auch nicht :joy: Wenn wir da noch mehr Fragen haben müssen wir wohl @boldt fragen, der hat das gebaut :wink:

2 „Gefällt mir“

Genau, Traefik verwendet standardmäßig den Port, welcher vom Container exposed wird. Werden mehrere exposed, dann muss man explizit den Port mit dem von @opatut genannten Label setzen. Es tut aber auch nicht weh, den Port zu setzen, wenn nur einr exposed wird.

Das ist auch im Abschnitt Port Detection in der Traefik-Doku beschrieben.

D.h. wenn du das Portal auf localhost:3000 startest, dann kannst du natürlich auch nginx als Reverse-Proxy verwenden.

1 „Gefällt mir“

Alles klar, danke! So im Nachhinein macht alles Sinn, ich habe irgendwie den Wald vor Bäumen nicht gesehen.

1 „Gefällt mir“