Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. reverse proxy mit mehreren iqontrol instanzen und auth

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

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

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

reverse proxy mit mehreren iqontrol instanzen und auth

reverse proxy mit mehreren iqontrol instanzen und auth

Scheduled Pinned Locked Moved Off Topic
9 Posts 3 Posters 522 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    astrakid
    wrote on last edited by
    #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 Reply Last reply
    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 Offline
      BananaJoeB Offline
      BananaJoe
      Most Active
      wrote on last edited by 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 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

      A 1 Reply Last reply
      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
        wrote on last edited by
        #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 Replies Last reply
        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 Offline
          BananaJoeB Offline
          BananaJoe
          Most Active
          wrote on last edited by 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 10,5kWh || 2x USV 900/750W kaskadiert || Creality CR-10 SE 3D-Drucker

          1 Reply Last reply
          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
            wrote on last edited by 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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  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
                    wrote on last edited by
                    #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 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    99

                    Online

                    32.4k

                    Users

                    81.3k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe