NEWS
ioBroker Admin per traefik nicht erreichbar
-
Hallo zusammen,
ich habe bei mir jetzt seit längerem ioBroker, InfluxDB und Grafana in Docker-Containern laufen.
Jetzt würde ich gerne ioBroker sowie Grafana hinter einem Reverse Proxy (konkret Traefik) betreiben, damit ich nicht jedes Mal die IP-Adresse und den Port eingeben muss. Außerdem hat mich hier etwas der Spieltrieb gepackt ;-)
Teilweise sieht es auch schon ganz gut aus. Grafana läuft schon mal.Allerdings habe ich jetzt das Problem, dass beim Zugriff auf ioBroker Admin (http://myDomain.de/iobroker) ein Redirect zu folgender Adresse erfolgt: http://myDomain.de/index.html?login&href=%2Fiobroker
Der entsprechende Ausschnitt im docker-compose.yml von ioBroker sieht so aus:labels: - "traefik.enable=true" - "traefik.http.routers.iobroker-admin.entrypoints=http" - "traefik.http.routers.iobroker-admin.rule=Host(`mydomain.de`) && PathPrefix(`/iobroker`)" - "traefik.http.routers.iobroker-admin.service=iobroker-admin" - "traefik.http.services.iobroker-admin.loadbalancer.server.port=8081" - "traefik.docker.network=proxy" `In den Instanzeinstellungen des Admin-Adapters habe ich den Reverse Proxy auch eingetragen (siehe https://github.com/ioBroker/ioBroker.admin#reverse-proxy)
Globaler Pfad: /iobroker/
Instance: admin
Instance path behind proxy: /iobroker/Hat jemand schon ioBroker Admin zusammen mit Traefik am laufen und hat irgendeine Idee?
Vielen Dank vorab!
Gruß
Frank -
@frankb
Leider läuft es bei mir auch nicht,
aber ich denke ich bin ein Schritt weiter.
ioBroker macht intern normalerweise ein redirect auf eine https Verbindung, aus dem Grund muss dies auch in traefik so hinterlegt werden. Zudem ist das Zertifikat das ioBroker benutzt nicht zertifiziert, deshalb muss man traefik mitteilen, das es auch unsichere https Verbindungen zulassen soll.Ich bekomme einen Login-Screen, nach dem Login kommt ein ioBroker Ladescreen, weiter komme ich leider nicht. Ich vermute das der Header oder die Proxy-Einstellungen im admin Adapter noch angepasst werden müssen.
Wichtig ist in diesem Fall, dass "serversTransport" auf ein config file verweist. Diese Einstellung kann man aktuell nicht per docker-compose Label machen.
Und "scheme=https" weist traefik darauf hin, dass man eine sichere Verbindung zu ioBroker aufbaut.
Ohne "passhostheader=true" kommt kein Login-Screen sondern nur eine Ladescreen.
Wahrscheinlich muss der Hostname von ioBroker an die URL angepasst werden.
Meine Config sieht wie folgt aus:
docker-compose.yml... networks: traefik: ... labels: - "traefik.enable=true" - "traefik.http.routers.smarthomepi-iobroker-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-router.rule=Host(`iobroker.foo.bar`)" - "traefik.http.routers.smarthomepi-iobroker-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-router.tls.domains[0].main=iobroker.foo.bar" - "traefik.http.routers.smarthomepi-iobroker-router.service=smarthomepi-iobroker-service" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.passhostheader=true" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.server.port=8081" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.serversTransport=insecure-https-transport@file" - "traefik.docker.network=traefik" networks: traefik: external: trueinsecure-https-transport.yml
http: serversTransports: insecure-https-transport: insecureSkipVerify: trueQuellen:
https://github.com/traefik/traefik/issues/7893
https://doc.traefik.io/traefik/routing/services/#insecureskipverify -
@frankb
Leider läuft es bei mir auch nicht,
aber ich denke ich bin ein Schritt weiter.
ioBroker macht intern normalerweise ein redirect auf eine https Verbindung, aus dem Grund muss dies auch in traefik so hinterlegt werden. Zudem ist das Zertifikat das ioBroker benutzt nicht zertifiziert, deshalb muss man traefik mitteilen, das es auch unsichere https Verbindungen zulassen soll.Ich bekomme einen Login-Screen, nach dem Login kommt ein ioBroker Ladescreen, weiter komme ich leider nicht. Ich vermute das der Header oder die Proxy-Einstellungen im admin Adapter noch angepasst werden müssen.
Wichtig ist in diesem Fall, dass "serversTransport" auf ein config file verweist. Diese Einstellung kann man aktuell nicht per docker-compose Label machen.
Und "scheme=https" weist traefik darauf hin, dass man eine sichere Verbindung zu ioBroker aufbaut.
Ohne "passhostheader=true" kommt kein Login-Screen sondern nur eine Ladescreen.
Wahrscheinlich muss der Hostname von ioBroker an die URL angepasst werden.
Meine Config sieht wie folgt aus:
docker-compose.yml... networks: traefik: ... labels: - "traefik.enable=true" - "traefik.http.routers.smarthomepi-iobroker-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-router.rule=Host(`iobroker.foo.bar`)" - "traefik.http.routers.smarthomepi-iobroker-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-router.tls.domains[0].main=iobroker.foo.bar" - "traefik.http.routers.smarthomepi-iobroker-router.service=smarthomepi-iobroker-service" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.passhostheader=true" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.server.port=8081" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.serversTransport=insecure-https-transport@file" - "traefik.docker.network=traefik" networks: traefik: external: trueinsecure-https-transport.yml
http: serversTransports: insecure-https-transport: insecureSkipVerify: trueQuellen:
https://github.com/traefik/traefik/issues/7893
https://doc.traefik.io/traefik/routing/services/#insecureskipverify@smhrambo sagte in ioBroker Admin per traefik nicht erreichbar:
Ich bekomme einen Login-Screen, nach dem Login kommt ein ioBroker Ladescreen, weiter komme ich leider nicht.
Das spricht dafür, dass Traefik nicht (korrekt) für die Nutzung von Websocket-Verbindungen konfiguriert ist. Vielleicht lohnt es sich, an der Stelle mal zu recherchieren.
-
@frankb
Leider läuft es bei mir auch nicht,
aber ich denke ich bin ein Schritt weiter.
ioBroker macht intern normalerweise ein redirect auf eine https Verbindung, aus dem Grund muss dies auch in traefik so hinterlegt werden. Zudem ist das Zertifikat das ioBroker benutzt nicht zertifiziert, deshalb muss man traefik mitteilen, das es auch unsichere https Verbindungen zulassen soll.Ich bekomme einen Login-Screen, nach dem Login kommt ein ioBroker Ladescreen, weiter komme ich leider nicht. Ich vermute das der Header oder die Proxy-Einstellungen im admin Adapter noch angepasst werden müssen.
Wichtig ist in diesem Fall, dass "serversTransport" auf ein config file verweist. Diese Einstellung kann man aktuell nicht per docker-compose Label machen.
Und "scheme=https" weist traefik darauf hin, dass man eine sichere Verbindung zu ioBroker aufbaut.
Ohne "passhostheader=true" kommt kein Login-Screen sondern nur eine Ladescreen.
Wahrscheinlich muss der Hostname von ioBroker an die URL angepasst werden.
Meine Config sieht wie folgt aus:
docker-compose.yml... networks: traefik: ... labels: - "traefik.enable=true" - "traefik.http.routers.smarthomepi-iobroker-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-router.rule=Host(`iobroker.foo.bar`)" - "traefik.http.routers.smarthomepi-iobroker-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-router.tls.domains[0].main=iobroker.foo.bar" - "traefik.http.routers.smarthomepi-iobroker-router.service=smarthomepi-iobroker-service" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.passhostheader=true" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.server.port=8081" - "traefik.http.services.smarthomepi-iobroker-service.loadBalancer.serversTransport=insecure-https-transport@file" - "traefik.docker.network=traefik" networks: traefik: external: trueinsecure-https-transport.yml
http: serversTransports: insecure-https-transport: insecureSkipVerify: trueQuellen:
https://github.com/traefik/traefik/issues/7893
https://doc.traefik.io/traefik/routing/services/#insecureskipverifyNach ein paar Tests ist mir aufgefallen,
dass wenn ich den Container neu starte oder der Tab aus dem StandBy erwacht, ich auf das Admin-Panel weitergeleitet wurde.
Da Traefik WebSockets von sich aus verwaltet und diese keine extra Konfiguration benötigten,
bin ich zurück zu Path und Header gegangen und habe die Kommunikation analysiert.Das Problem war der Übergang der Headers, weshalb ein "X-Forwarded-Proto=https" nötig war.
Das zweite Problem ist aktuell noch die Verwendung eines Path statt einer Subdomain.
Für das AdminPanel habe ich es inzwischen zum laufen bekommen, für andere Instanzen noch nicht.
Leider bekomme ich dafür noch eine Fehlermeldung:Cannot GET /ioBrokerWeb/Leider habe ich bisher nicht herausgefunden wer diese Fehlermeldung ausgibt.
Weder im Log von Traefik, noch im Log von ioBroker habe ich eine Meldung gefunden.Bei Domain+Path muss die Path Erweiterung bei der Übertragung auch wieder entfernt werden.
Dafür benutze ich "stripprefix.prefixes=/ioBrokerAdmin/", ansonsten kann ioBroker damit nichts anfangen.
Zudem benötigt ioBroker eine Wildcard für den Path hinter dem /, da hier z.B. "#tab-instances" zum Einsatz kommt.
Damit Traefik damit umgehen kann und eine PathPrefix alleine nicht ausreicht, habe ich hier auf ein regex zurückgegriffen.Beim rumprobieren und Wechseln zwischen Domain und Domain+Path ist es öfter dazu gekommen,
dass ich wieder einen endlosen Ladescreen hatte.
Wenn es unter Edge zu einem endlosen Ladebildschirm kommt,
muss man den Tab schließen und einen neuen aufmachen.
Bei Firefox hatte ich das Problem nicht.Hier die Konfiguration inklusive Path für eine Web Instanz, was aktuell noch nicht funktioniert:
docker-compose.yml
... networks: traefik: labels: - "traefik.docker.network=traefik" - "traefik.enable=true" - "traefik.http.middlewares.smarthomepi-iobroker-sslheader.headers.customRequestHeaders.X-Forwarded-Proto=https" - "traefik.http.routers.smarthomepi-iobroker-admin-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-admin-router.rule=Host(`iobroker.mydomain.net`) || (Host(`iobroker.mydomain.net`) && PathPrefix(`/ioBrokerAdmin{regex:$$|/.*}`))" - "traefik.http.routers.smarthomepi-iobroker-admin-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-admin-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-admin-router.tls.domains[0].main=iobroker.mydomain.net" - "traefik.http.routers.smarthomepi-iobroker-admin-router.middlewares=smarthomepi-iobroker-sslheader@docker, smarthomepi-iobroker-admin-pathstrip@docker" - "traefik.http.routers.smarthomepi-iobroker-admin-router.service=smarthomepi-iobroker-admin-service" - "traefik.http.middlewares.smarthomepi-iobroker-admin-pathstrip.stripprefix.prefixes=/ioBrokerAdmin/" - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.server.port=8081" - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.serversTransport=insecure-https-transport@file" # Dieser Teile funktioniert noch nicht - "traefik.http.routers.smarthomepi-iobroker-web-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-web-router.rule=Host(`iobroker.mydomain.net`) && PathPrefix(`/ioBrokerWeb{regex:$$|/.*}`)" - "traefik.http.routers.smarthomepi-iobroker-web-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-web-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-web-router.tls.domains[0].main=iobroker.mydomain.net" - "traefik.http.routers.smarthomepi-iobroker-web-router.middlewares=smarthomepi-iobroker-sslheader@docker, smarthomepi-iobroker-web-pathstrip@docker" - "traefik.http.routers.smarthomepi-iobroker-web-router.service=smarthomepi-iobroker-web-service" - "traefik.http.middlewares.smarthomepi-iobroker-web-pathstrip.stripprefix.prefixes=/ioBrokerWeb/" - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.server.port=8082" - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.serversTransport=insecure-https-transport@file" networks: traefik: external: trueinsecure-https-transport.yml
http: serversTransports: insecure-https-transport: insecureSkipVerify: trueWenn man zwischen ioBroker und Traefik keine SSL Verbindung benutzen will,
muss man folgende Zeilen ändern:docker-compose.yml
... - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.server.scheme=https" # Löschen oder in folgendes ändern: - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.server.scheme=http" # Löschen - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.serversTransport=insecure-https-transport@file" ...Ansonsten kann man auf alle Sachen zurückgreifen die Traefik anbietet.
Authelia für LDAP Login usw.Viel Spaß beim rumprobieren.
-
Hallo zusammen,
ich habe bei mir jetzt seit längerem ioBroker, InfluxDB und Grafana in Docker-Containern laufen.
Jetzt würde ich gerne ioBroker sowie Grafana hinter einem Reverse Proxy (konkret Traefik) betreiben, damit ich nicht jedes Mal die IP-Adresse und den Port eingeben muss. Außerdem hat mich hier etwas der Spieltrieb gepackt ;-)
Teilweise sieht es auch schon ganz gut aus. Grafana läuft schon mal.Allerdings habe ich jetzt das Problem, dass beim Zugriff auf ioBroker Admin (http://myDomain.de/iobroker) ein Redirect zu folgender Adresse erfolgt: http://myDomain.de/index.html?login&href=%2Fiobroker
Der entsprechende Ausschnitt im docker-compose.yml von ioBroker sieht so aus:labels: - "traefik.enable=true" - "traefik.http.routers.iobroker-admin.entrypoints=http" - "traefik.http.routers.iobroker-admin.rule=Host(`mydomain.de`) && PathPrefix(`/iobroker`)" - "traefik.http.routers.iobroker-admin.service=iobroker-admin" - "traefik.http.services.iobroker-admin.loadbalancer.server.port=8081" - "traefik.docker.network=proxy" `In den Instanzeinstellungen des Admin-Adapters habe ich den Reverse Proxy auch eingetragen (siehe https://github.com/ioBroker/ioBroker.admin#reverse-proxy)
Globaler Pfad: /iobroker/
Instance: admin
Instance path behind proxy: /iobroker/Hat jemand schon ioBroker Admin zusammen mit Traefik am laufen und hat irgendeine Idee?
Vielen Dank vorab!
Gruß
FrankHier eine neue funktionierende Konfiguration mit Domain+Path für andere Instanzen.
Jeder weitere Instanz die durch Domain+Path erreichbar sein soll,
muss mit einer höheren Priorität ausgestattet sein,
als der Eintrag der unter rule "Domain && Domain+Path" beinhaltet.
Ansonsten leitet Traefik alle Anfragen an diesen Eintrag weiter,
womit dann in diesem Fall das AdminPanel nichts anfangen kann.
Das AdminPanel besitzt zwar die Möglichkeit selber als Revers Proxy zu arbeiten, da die Anfragen nicht intern umgeleitet werden sondern an die Domain:Port,
kann dies nur funktionieren wenn die Ports für die Instanzen geöffnet sind und diese auch weitergeleitet werden(Docker u. Firewall).docker-compose.yml
... networks: traefik: labels: - "traefik.docker.network=traefik" - "traefik.enable=true" # customRequestHeaders - "traefik.http.middlewares.smarthomepi-iobroker-sslheader.headers.customRequestHeaders.X-Forwarded-Proto=https" # AdminPanel - "traefik.http.routers.smarthomepi-iobroker-admin-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-admin-router.rule=Host(`iobroker.mydomain.net`) || (Host(`iobroker.mydomain.net`) && PathPrefix(`/ioBrokerAdmin{regex:$$|/.*}`))" - "traefik.http.routers.smarthomepi-iobroker-admin-router.priority=1" - "traefik.http.routers.smarthomepi-iobroker-admin-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-admin-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-admin-router.tls.domains[0].main=iobroker.mydomain.net" - "traefik.http.routers.smarthomepi-iobroker-admin-router.middlewares=smarthomepi-iobroker-sslheader@docker, smarthomepi-iobroker-admin-pathstrip@docker" - "traefik.http.routers.smarthomepi-iobroker-admin-router.service=smarthomepi-iobroker-admin-service" - "traefik.http.middlewares.smarthomepi-iobroker-admin-pathstrip.stripprefix.prefixes=/ioBrokerAdmin/" - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.server.port=8081" - "traefik.http.services.smarthomepi-iobroker-admin-service.loadBalancer.serversTransport=insecure-https-transport@file" # WebPanel - "traefik.http.routers.smarthomepi-iobroker-web-router.entryPoints=websecure" - "traefik.http.routers.smarthomepi-iobroker-web-router.rule=Host(`iobroker.mydomain.net`) && PathPrefix(`/ioBrokerWeb{regex:$$|/.*}`)" - "traefik.http.routers.smarthomepi-iobroker-web-router.priority=2" - "traefik.http.routers.smarthomepi-iobroker-web-router.tls=true" - "traefik.http.routers.smarthomepi-iobroker-web-router.tls.certResolver=http" - "traefik.http.routers.smarthomepi-iobroker-web-router.tls.domains[0].main=iobroker.mydomain.net" - "traefik.http.routers.smarthomepi-iobroker-web-router.middlewares=smarthomepi-iobroker-sslheader@docker, smarthomepi-iobroker-web-pathstrip@docker" - "traefik.http.routers.smarthomepi-iobroker-web-router.service=smarthomepi-iobroker-web-service" - "traefik.http.middlewares.smarthomepi-iobroker-web-pathstrip.stripprefix.prefixes=/ioBrokerWeb/" - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.server.scheme=https" - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.server.port=8082" - "traefik.http.services.smarthomepi-iobroker-web-service.loadBalancer.serversTransport=insecure-https-transport@file" networks: traefik: external: trueinsecure-https-transport.yml
http: serversTransports: insecure-https-transport: insecureSkipVerify: trueWenn man zwischen ioBroker und Traefik keine SSL Verbindung benutzen will(SSL in Admin/Web/... deaktivieren!!!),
muss man folgende Zeilen ändern:
docker-compose.yml... - "traefik.http.services.smarthomepi-iobroker-***-service.loadBalancer.server.scheme=https" # Löschen oder in folgendes ändern: - "traefik.http.services.smarthomepi-iobroker-***-service.loadBalancer.server.scheme=http" # Löschen - "traefik.http.services.smarthomepi-iobroker-***-service.loadBalancer.serversTransport=insecure-https-transport@file" ...
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden