Wie setze ich mein eigenes Portal auf?

Die V-Server von Strato können kein Docker!

Ich habe privat einen V-Server bei Contabo aus München. Da habe ich mein privates Test-Portal drauf laufen. Funktioniert wunderbar.

Der für 5 EUR/Monat sollte für ein Portal vollkommen ausreichend sein:

Gut dass ich gefragt hab :slight_smile: Danke!

Ich habe mir mein Portal erst einmal zu Hause in einer Virtuellen Maschine aufgesetzt um zu testen. Ich bin jetzt zum Punkt Start the portal gekommen. Da ich mir privaten IP-Adressen arbeite, kann Let´sCrypt/dehydrated kein Zertifikat ausstellen. Gibt es eine Möglichkeit die Zertifikatsausstellung zu unterbinden und das es erlaubt wird, ein Privates Zertifikat zu nutzen?

Bei der Log Ausgabe von docker-compose logs -f portal worker, dreht sich alles in einer Endlosschleife, der ausschlag gebene Teil müsste das sein (Das mit <> hesetzt sind Platzhalter von mir).

portal_1             | requests.exceptions.SSLError: HTTPSConnectionPool(host='login.obs.<DOMAIN>.<TopLevel>', port=443): Max retries exceeded with url: /auth/realms/obs/.well-known/openid-configuration (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)')))

Das „einfachste“ ist vermutlich eine Installation eines eigenen Reverse-Proxy ohne TLS, oder die Nutzung komplett ohne einen solchen. Dann müssen die URLs jedoch evtl angepasst werden in den Konfigurationen. Alternativ kannst du alle URLs als HTTP konfigurieren, und nur die „websecure“ bzw. „letsencrypt“ Teile aus der traefik-Konfiguration und docker-compose entfernen.

Dein Log Output sagt mir übrigens, dass die API (portal container) versucht mit dem Keycloak-Dienst auf dessen HTTPS-URL zu kommunizieren (besser ist das auch, in Production). Die URL, die du hier entsprechend anpassen müsstest auf HTTP (sofern du die Installation ohne hinbekommst) ist glaube ich OBS_KEYCLOAK_URL in der .env-Datei. Analog sind noch einige andere Ersetzungen vorzunehmen, wenn du alle Querverbindungen richtig machen möchtest. Das ist ein bisschen Sucharbeit, fürchte ich.

Letztendlich ist die „Deployment“ Anleitung und die Beispielkonfigurationen nicht auf eine Nutzung ohne HTTPS ausgelegt, dafür gibt es die „Development“ Anleitung. Mein Tipp: Wenn du eh eine Domain dafür „herumliegen“ hast, schieß’ dir für wenige Cent die Stunde eine VM bei irgendeinem Cloud-Hoster und probiere es dort, dann hast du auch den Zertifikat-Teil mal probiert.

Deine eigentliche Frage, ob du nur die Zertifikatsausstellung unterbinden kannst, wird vermutlich von der Traefik-Dokumentation besser beantwortet als irgendwer es hier leisten könnte. Ich würde hier anfangen zu graben. Der unterste Abschnitt unserer Beispiel-traefik.toml [certificatesResolvers.leresolver.acme] müsste vermutlich ersetzt werden, und du müsstest dein eigenes self-signed Zertifikat generieren und irgendwie in den Docker-Container bekommen (per Volume Mount, zum Beispiel).

Hoffe das hilft.

Auch ohne LE-Zertifikat sollte es klappen. Dann hat man in der Log ein Fehler und im Browser muss man das self-signed von Traefik akzeptieren.

Ich werde das auch nochmal bei mir lokal versuchen.

Man kann bei Traefik definitiv ein privates Zertifikat hinterlegen. Das habe ich bei einem anderen Projekt mal gemacht, um auf lokalhost entwickeln zu können.

@opatut : Es hat soweit geholfen, dass ich noch einmal von vorne angefangen habe und die Erreichbarkeit von extern ermöglicht habe, damit Let´sEncrypt das Zertifikat erstellen kann.
Ich bin an der selben Stelle wieder hängen geblieben.
Ich habe diese Anleitung verwendet, um das Portal aufzusetzen.
Mit Deinem Hinweis, dass der portal-Container nicht den Keycloak-Dienst erreicht hat, hat der rest der Fehlermeldung immer mehr Sinn gemacht. In der Anleitung unter der Variable OBS_KEYCLOAK_URL stand voreingestellt OBS_KEYCLOAK_URL=https://login.obs.XXXXX.XXX/auth/realms/obs/. Wie sich herausgestellt hat, ist der Slash / am Ende das Problem gewesen, dieser musste entfernt werden und siehe da, es funktioniert.
OBS_KEYCLOAK_URL=https://login.obs.XXXXX.XXX/auth/realms/obs

Das sollte in der .env, die beim installieren vorgegeben wird, angepasst werden. Ich gebe zu, durch diesen kleinen Fehler, habe ich so einiges verstanden.
Ein weiterer Schönheitsfehler in der Anleitung ist an der Position Test the portal, dort soll man

Open: https://obs.example.com/

aufrufen, dass sollte wohl aber

https://portal.example.com/

heißen.

Kann ich das an einer bestimmten stelle melden, dass die Fehler korrigiert werden sollten, oder reicht es schon, in dem ich es hier im Forum geschrieben habe?

Fazit:
Das Testportal ist jetzt am laufen und werde mir ansehen, in wie weit ich jetzt die Daten automatisiert vom OBS via WLAN hochladen lässt.
Sollte das alles so funktionieren, wie ich es mir denke, dann wird das Protal für den ADFC Dinslaken-Voerde e.V. online gehen, ggf. auf einen richtigen Server in einem Rechenzentrum.

@boldt : Danke für die Bestätigung, dass es mit einem privaten Zertifikat geht, ich hätte dort ein Slebstsigniertes mit einem CA-Bundle aufgesetzt, dass mein Browser damit keine Probleme hat, wobei ich nicht wüsste, ob man das CA-Bundle in den OBS unterbringen könnte, was jetzt nicht nötig ist, weil alles läuft, ohne Zertifikatsfehler.

Solange jemand weiß, was er mit dem akzeptieren bestätigt, ist es kein Problem, jedoch sträuben sich meine Nackenhaare dabei immer wieder, weil es zu viele gibt, die einfach mal machen, ohne zu wissen welche Auswirkung das haben könnte. Liegt wohl daran, dass ich ein Administrator bei einem ISP bin und oft mit so etwas im Kundensupport konfrontiert werde.

1 „Gefällt mir“

@veloman_nrw

Danke für das Feedback!

Ich habe die eine Erwähnung von obs.example.com auch in portal.example.com umgewandelt - Überall sonst verwenden wir portal.example.com, diese Stelle wurde beim bearbeiten offenbar übersehen.

Die Stelle mit OBS_KEYCLOAK_URL habe ich noch nicht angefasst - unser Portal läuft erfolgreich mit trailing slash, da sollten wir noch den Grund für die Probleme mit dem trailing slash finden.

2 „Gefällt mir“

Es ist nicht wichtig, in der Anleitung ist noch ein kleiner Schreibfehler beim Portal aufsetzen:

Configure portal

OBS: DEDICATED_WORKER 
OBS_DEDICATED_WORKER 

Bei OBS_KEYCLOAK_URL bin ich nur darauf gekommen, weil man die genaue URL aus dem * OpenID Endpoint Configuration* entnehmen soll und dort steht es halt ohne / am Ende. Nachdem ich es jetzt zum dritten mal mit der ADFC Domain aufgesetzt habe, ging es auch mit einem Slash.

Dann hat man in der Log ein Fehler und im Browser muss man das self-signed von Traefik akzeptieren.

wobei ich nicht wüsste, ob man das CA-Bundle in den OBS unterbringen könnte, was jetzt nicht nötig ist, weil alles läuft, ohne Zertifikatsfehler.

Das ist genau der Punkt, zum rumtesten geht das wohl, aber der OBS selbst kennt nur Let’sEncrypt als Root CA (und vielleicht 1-2 andere). Für alle ca. 140 üblichen roots ist kein Platz im Flash, und um ein eigenes einzubauen müsstest du eine eigene Firmware kompilieren und verteilen. Alles nicht so praktisch, LE ist definitiv der einfachste Weg für den Produktivbetrieb.

2 „Gefällt mir“

Daran habe ich gar nicht gedacht, dass dem OBS das CA-Bundle auch mitgeteilt werden müsste.
Wie schon geschrieben, das apostatisch aufsetzen hat jetzt funktioniert und LE hat es signiert.

1 „Gefällt mir“