Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. reverse proxy mit mehreren iqontrol instanzen und auth

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

reverse proxy mit mehreren iqontrol instanzen und auth

Geplant Angeheftet Gesperrt Verschoben Off Topic
9 Beiträge 3 Kommentatoren 527 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    astrakid
    schrieb am zuletzt editiert von
    #1

    hi,
    ich habe eine anforderung, die mich gerade selbst überfordert.

    kurz: ich habe iqontrol im einsatz, remote über reverse proxy verfügbar gemacht und mit authentifizierung geschützt. nun brauche ich eine 2. iqontrol instanz für mein kind, damit er seine sachen schalten darf. aber er darf keinen zugriff auf meine iqontrol instanz bekommen.
    problem: die andere iqontrol-instanz wird nur mit einem parameter in der url ausgewählt.

    langform: über meinen reverse proxy komme ich von außen auf meine iqontrol instanz (und auch auf iobroker-admin, über separate subdomains). klappt wuderbar. ich melde mich per basic authentication am reverse proxy an und komme auf meine iqontrol-instanz, mit der anderen subdomain auf meinen iobroker-admin.

    warum authentifizierung am nginx? hier habe ich die möglichkeit, mehrere benutzer zu hinterlegen und pro subdomain unterschiedliche authentifizierungen hinterlegen kann. nachteil: gehe ich direkt auf die iobroker instanz -> keine authentifizierung. daher ist zumindest die admin-instanz noch zusätzlich gesichert.

    iqontrol läuft aber über eine web-instanz.
    muss ich jetzt für jede iqontrol-instanz eine separate web-instanz installieren? ist das nicht ressourcenverschwendung?

    am saubersten wäre natürlich, wenn man den zugriff auf eine instanz über benutzer in iobroker verwalten könnte. das scheint es aber nicht zu geben.

    hat jemand eine idee, wie man das umsetzen kann?
    oder hat einer interesse, mit mir einen sauberen plan zu schmieden, wie man das vernünftig umsetzen kann? ich bräuchte später noch weitere iqontrol instanzen, jeweils für unterschiedliche anwender in der familie...

    gruß,
    andre

    BananaJoeB 1 Antwort Letzte Antwort
    0
    • A astrakid

      hi,
      ich habe eine anforderung, die mich gerade selbst überfordert.

      kurz: ich habe iqontrol im einsatz, remote über reverse proxy verfügbar gemacht und mit authentifizierung geschützt. nun brauche ich eine 2. iqontrol instanz für mein kind, damit er seine sachen schalten darf. aber er darf keinen zugriff auf meine iqontrol instanz bekommen.
      problem: die andere iqontrol-instanz wird nur mit einem parameter in der url ausgewählt.

      langform: über meinen reverse proxy komme ich von außen auf meine iqontrol instanz (und auch auf iobroker-admin, über separate subdomains). klappt wuderbar. ich melde mich per basic authentication am reverse proxy an und komme auf meine iqontrol-instanz, mit der anderen subdomain auf meinen iobroker-admin.

      warum authentifizierung am nginx? hier habe ich die möglichkeit, mehrere benutzer zu hinterlegen und pro subdomain unterschiedliche authentifizierungen hinterlegen kann. nachteil: gehe ich direkt auf die iobroker instanz -> keine authentifizierung. daher ist zumindest die admin-instanz noch zusätzlich gesichert.

      iqontrol läuft aber über eine web-instanz.
      muss ich jetzt für jede iqontrol-instanz eine separate web-instanz installieren? ist das nicht ressourcenverschwendung?

      am saubersten wäre natürlich, wenn man den zugriff auf eine instanz über benutzer in iobroker verwalten könnte. das scheint es aber nicht zu geben.

      hat jemand eine idee, wie man das umsetzen kann?
      oder hat einer interesse, mit mir einen sauberen plan zu schmieden, wie man das vernünftig umsetzen kann? ich bräuchte später noch weitere iqontrol instanzen, jeweils für unterschiedliche anwender in der familie...

      gruß,
      andre

      BananaJoeB Online
      BananaJoeB Online
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von BananaJoe
      #2

      @astrakid sagte in reverse proxy mit mehreren iqontrol instanzen und auth:

      ist das nicht ressourcenverschwendung?

      naja, ich habe sowieso immer 2 Instanzen am laufen. Ob nun eine Instanz 2 Clients bedient oder 2 Instanzen 2 Clients ist vermutlich von der CPU her gleich.

      Meine viel genutzte Hauptinstanz verbraucht ca 290MByte, die Neben-Instanz etwa 130MByte.
      Verschwendung wäre es nur wenn es für nichts genutzt wird ...
      Ob das viel ist hängt davon wieviel dein System hat ...
      Wenn in deinem System eh noch ein paar Gigabyte RAM frei sind - was soll es, hast du vorher eh nicht genutzt.

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

      A 1 Antwort Letzte Antwort
      0
      • BananaJoeB BananaJoe

        @astrakid sagte in reverse proxy mit mehreren iqontrol instanzen und auth:

        ist das nicht ressourcenverschwendung?

        naja, ich habe sowieso immer 2 Instanzen am laufen. Ob nun eine Instanz 2 Clients bedient oder 2 Instanzen 2 Clients ist vermutlich von der CPU her gleich.

        Meine viel genutzte Hauptinstanz verbraucht ca 290MByte, die Neben-Instanz etwa 130MByte.
        Verschwendung wäre es nur wenn es für nichts genutzt wird ...
        Ob das viel ist hängt davon wieviel dein System hat ...
        Wenn in deinem System eh noch ein paar Gigabyte RAM frei sind - was soll es, hast du vorher eh nicht genutzt.

        A Offline
        A Offline
        astrakid
        schrieb am zuletzt editiert von
        #3

        @bananajoe ram wäre das, wovon ich am meisten zur verfügung habe. 😉 also wäre das der einzige weg? eigene web- und iqontrol-instanz und über den rev-proxy entsprechend auf die instanz verteilen?
        ok, werde ich mal testen.

        BananaJoeB OliverIOO 2 Antworten Letzte Antwort
        0
        • A astrakid

          @bananajoe ram wäre das, wovon ich am meisten zur verfügung habe. 😉 also wäre das der einzige weg? eigene web- und iqontrol-instanz und über den rev-proxy entsprechend auf die instanz verteilen?
          ok, werde ich mal testen.

          BananaJoeB Online
          BananaJoeB Online
          BananaJoe
          Most Active
          schrieb am zuletzt editiert von BananaJoe
          #4

          @astrakid sagte in reverse proxy mit mehreren iqontrol instanzen und auth:

          also wäre das der einzige weg? eigene web- und iqontrol-instanz und über den rev-proxy entsprechend auf die instanz verteilen?

          keine Ahnung, bestimmt nicht.
          Ich mache persönlich auch ganz viel mit Reverse Proxy - aber mit Apache (in HAproxy arbeite ich mich gerade ein). Dein Problem ist ja aber das du Änderungen an der URL verhindern willst.

          Wobei das auch vermutlich per URL-Rewrite ginge - also wenn einer .../view2/... eintippt der daraus automatisch wieder .../view1... macht. Nur in cooler bitte, also immer umschreiben wenn es nicht .../view1/... ist.

          Oder du wertest aus welches Clientgerät sich mit der View verbindet und reagierst entsprechend auf ioBroker-Seite. Wobei diese Auswertung am einfachsten über mehrere Web-Instanzen geht ...

          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 44TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=157 Tasmota/Shelly || >=88 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

          1 Antwort Letzte Antwort
          0
          • A astrakid

            @bananajoe ram wäre das, wovon ich am meisten zur verfügung habe. 😉 also wäre das der einzige weg? eigene web- und iqontrol-instanz und über den rev-proxy entsprechend auf die instanz verteilen?
            ok, werde ich mal testen.

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #5

            @astrakid
            Ich bin in iqcontrol nun nicht so ganz firm
            Wenn ich richtig verstanden hab ist die berechtigungsunterscheidung über ein Parameter in der url gesetzt?
            Durch ein url rewrite kannst du ja alles so ummodeln wie du willst um dann den Request zum backend abzusetzen
            https://www.nginx.com/blog/creating-nginx-rewrite-rules/

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            A 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @astrakid
              Ich bin in iqcontrol nun nicht so ganz firm
              Wenn ich richtig verstanden hab ist die berechtigungsunterscheidung über ein Parameter in der url gesetzt?
              Durch ein url rewrite kannst du ja alles so ummodeln wie du willst um dann den Request zum backend abzusetzen
              https://www.nginx.com/blog/creating-nginx-rewrite-rules/

              A Offline
              A Offline
              astrakid
              schrieb am zuletzt editiert von
              #6

              @oliverio ja korrket. es ist noch nicht mal eine berechtigungsunterscheidung, sondern nur der einsprungspunkt auf die andere instanz. berechtigung würde ich übe rden reverse proxy machen können.
              über die web-instanzen klappt das ganze gar nicht, da ich die iqontrol-instanz nicht an die web-instanz binden kann. ich habe nur im admin-modul die option, für den reverse proxy einträge anzulegen und an die web-instanz zu binden. ist das der richtige weg?

              A 1 Antwort Letzte Antwort
              0
              • A astrakid

                @oliverio ja korrket. es ist noch nicht mal eine berechtigungsunterscheidung, sondern nur der einsprungspunkt auf die andere instanz. berechtigung würde ich übe rden reverse proxy machen können.
                über die web-instanzen klappt das ganze gar nicht, da ich die iqontrol-instanz nicht an die web-instanz binden kann. ich habe nur im admin-modul die option, für den reverse proxy einträge anzulegen und an die web-instanz zu binden. ist das der richtige weg?

                A Offline
                A Offline
                astrakid
                schrieb am zuletzt editiert von
                #7

                ich hab es nu mal per rewrite funktioniet, kriege es aber nicht hin, weil:
                iqontrol wird nur über /iqontrol/ aufgerufen, danach wird automatisch immer die erste instanz geöffnet.
                rufe ich die zweite instanz über den namespace auf /iqontrol/index.html?namespace=iqontrol.2 klappt es.
                aber ich kann nicht sicherstellen, dass namespace=iqontrol.2 verwendet wird.

                hab es banal folgendermaßen versucht zu lösen:

                location / {
                    if ($request_uri !~* /(namespace=iqontrol.2)) {
                            return 302 https://my.domain.de/iqontrol/index.html?namespace=iqontrol.2;
                    }
                

                landet aber in einer endlosschleife.
                jetzt habe ich festgestellt, das iqontrol bzw der webadapter erst auf /login/ umleitet. aber selbst das landet in einer endlosschleife. hab auch einen block für /login/ erstellt, damit der nicht umgeleitet wird, will abr nicht.

                meine nginx-config:

                server {
                    listen              443 ssl http2; # 'ssl' parameter tells NGINX to decrypt the traffic
                    server_name         my.domain.de;
                    access_log /var/log/nginx/iod-access.log ;
                    error_log  /var/log/nginx/iod-error.log notice;
                    proxy_ssl_verify off;
                    proxy_ssl_server_name on;
                    proxy_set_header Host $http_host;
                    proxy_set_header X_FORWARDED_PROTO https;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_read_timeout 86400;
                
                    location /login/ {
                        proxy_pass https://10.1.1.2:8082/;
                    }
                
                    location / {
                        rewrite_log on;
                        proxy_pass https://10.1.1.2:8082/;
                }
                

                das log sagt:

                87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET / HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                [...]
                

                wo ist mein denkfehler?

                OliverIOO 1 Antwort Letzte Antwort
                0
                • A astrakid

                  ich hab es nu mal per rewrite funktioniet, kriege es aber nicht hin, weil:
                  iqontrol wird nur über /iqontrol/ aufgerufen, danach wird automatisch immer die erste instanz geöffnet.
                  rufe ich die zweite instanz über den namespace auf /iqontrol/index.html?namespace=iqontrol.2 klappt es.
                  aber ich kann nicht sicherstellen, dass namespace=iqontrol.2 verwendet wird.

                  hab es banal folgendermaßen versucht zu lösen:

                  location / {
                      if ($request_uri !~* /(namespace=iqontrol.2)) {
                              return 302 https://my.domain.de/iqontrol/index.html?namespace=iqontrol.2;
                      }
                  

                  landet aber in einer endlosschleife.
                  jetzt habe ich festgestellt, das iqontrol bzw der webadapter erst auf /login/ umleitet. aber selbst das landet in einer endlosschleife. hab auch einen block für /login/ erstellt, damit der nicht umgeleitet wird, will abr nicht.

                  meine nginx-config:

                  server {
                      listen              443 ssl http2; # 'ssl' parameter tells NGINX to decrypt the traffic
                      server_name         my.domain.de;
                      access_log /var/log/nginx/iod-access.log ;
                      error_log  /var/log/nginx/iod-error.log notice;
                      proxy_ssl_verify off;
                      proxy_ssl_server_name on;
                      proxy_set_header Host $http_host;
                      proxy_set_header X_FORWARDED_PROTO https;
                      proxy_http_version 1.1;
                      proxy_set_header Upgrade $http_upgrade;
                      proxy_set_header Connection "upgrade";
                      proxy_read_timeout 86400;
                  
                      location /login/ {
                          proxy_pass https://10.1.1.2:8082/;
                      }
                  
                      location / {
                          rewrite_log on;
                          proxy_pass https://10.1.1.2:8082/;
                  }
                  

                  das log sagt:

                  87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET / HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                  87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                  87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                  87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                  87.15.1.4 - user [13/Apr/2024:17:42:23 +0200] "GET /login/index.html?href=%2F&error HTTP/2.0" 302 116 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
                  [...]
                  

                  wo ist mein denkfehler?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #8

                  @astrakid

                  dann schau dir mal im browser mit den developer tools an, was da zurückgegeben wird. irgendein fehler wird da ja dann weitergeschleift.

                  denke dran. der reverseproxy behandelt alle requests. also auch die zu css, js, bilder, etc-dateien

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  A 1 Antwort Letzte Antwort
                  0
                  • OliverIOO OliverIO

                    @astrakid

                    dann schau dir mal im browser mit den developer tools an, was da zurückgegeben wird. irgendein fehler wird da ja dann weitergeschleift.

                    denke dran. der reverseproxy behandelt alle requests. also auch die zu css, js, bilder, etc-dateien

                    A Offline
                    A Offline
                    astrakid
                    schrieb am zuletzt editiert von
                    #9

                    @oliverio habs jetzt so halbwegs hibekommen. danke für die denkanstöße.
                    das größte problem war, dass man nicht stumpf auf die iqontrol instanz gehen darf, sondern andere ordner durchreichen muss (/ib, /socket.io (?), /...).

                    dann funktioniert es so halbwegs.

                    hier mal meine config:

                    server-block:

                    server {
                        listen              443 ssl http2; # 'ssl' parameter tells NGINX to decrypt the traffic
                        server_name         my.iqo1.de;
                        access_log /var/log/nginx/iol-access.log ;
                        error_log  /var/log/nginx/iol-error.log notice;
                        rewrite_log on;
                        proxy_ssl_verify off;
                        proxy_ssl_server_name on;
                        proxy_set_header X_FORWARDED_PROTO https;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection $connection_upgrade;
                        proxy_read_timeout 86400;
                    
                    

                    locations:

                        location /login$request_uri {
                            proxy_pass https://10.1.1.1:8082/login$request_uri;
                            proxy_ssl_verify off;
                        }
                    
                        location /iqontrol/index.html {
                            proxy_set_header Host $host;
                            proxy_pass https://10.1.1.1:8082$request_uri;
                            if ($request_uri !~* "index.html.*namespace=iqontrol.1") {
                                    rewrite .* https://my.iqo1.de/iqontrol/index.html?namespace=iqontrol.1;
                            }
                        }
                    
                        location /iqontrol/ {
                            proxy_set_header Host $host;
                            proxy_pass https://10.1.1.1:8082$request_uri;
                        }
                    
                    
                        location /iqontrol/jquery/ {
                            proxy_pass https://10.1.1.1:8082/iqontrol/jquery/;
                        }
                    
                        location / {
                            proxy_pass https://10.1.1.1:8082/;
                    }
                    
                        location /lib {
                            proxy_pass https://10.1.1.1:8082/lib/;
                        }
                    
                        location /socket.io/ {
                            proxy_pass https://10.1.1.1:8082$request_uri;
                        }
                    

                    zugegeben weiß ich nicht, ob ich wirklich alles brauche (socket.io und lib müsste theoretisch über / ausgeliefert werden), aber so tut es zu 90%.
                    was nicht geht, und das vestehe ich nicht:
                    rufe ich die url mit /iqontrol auf, dann läuft das rewriting nicht. wenn ihc das rewrite aber in einen /iqontrol-block packe, funktioniert es nicht mehr. dann kriege ich zwar eine seite, aber sämtliche grafiken und funktionen fehlen...
                    egal. teilziel erreicht. optimierung erfolgt demnächst.

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    627

                    Online

                    32.4k

                    Benutzer

                    81.4k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe