Skip to content
  • Home
  • 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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. IoBroker (und vis) über ReverseProxy

NEWS

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

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

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

IoBroker (und vis) über ReverseProxy

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
71 Beiträge 19 Kommentatoren 21.8k Aufrufe 9 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.
  • N Offline
    N Offline
    nobody
    schrieb am zuletzt editiert von
    #2

    Hi Lee,

    für welchen Web-Server suchst du denn?

    ich kann dir die Zeilen für Apache anbieten, auch wenn die bestimmt nicht optimal geschrieben sind:

    
    # Websocket Admin
     <ifmodule mod_proxy.c="">RewriteEngine On 
    Redirectmatch ^/iobroker/socket.io$ /iobroker/socket.io/
    RewriteCond %{REQUEST_URI} ^/iobroker/socket.io/ 
    RewriteCond %{QUERY_STRING} transport=websocket
    RewriteRule ^/(.*) /iobrokerwss/$1 [PT]
    ProxyPass /iobrokerwss/iobroker/socket.io/ ws://[interne IP]:8081/socket.io/ timeout=1200 Keepalive=On
    #ProxyPassReverse / ws://[interne IP]:8081/socket.io/</ifmodule> 
    
     <ifmodule mod_proxy.c="">ProxyRequests off
    RewriteEngine On
    redirectmatch ^/iobroker$ /iobroker/
    rewritecond %{REQUEST_URI} ^/iobroker/
    rewriterule (.*) $1 [PT]
    rewritecond %{HTTP_REFERER} https://[DNS-NAME]/iobroker/  [OR]
    rewritecond %{REQUEST_URI} ^/css/adapter.css [OR]
    rewritecond %{REQUEST_URI} ^/js/translate.js [OR]
    rewritecond %{REQUEST_URI} ^/js/adapter/ [OR]
    rewritecond %{REQUEST_URI} ^/adapter/ [OR]
    rewritecond %{REQUEST_URI} ^/js/adapter-settings.js [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/jqGrid/ [OR]
    rewritecond %{REQUEST_URI} ^/lib/css/jquery.multiselect-1.13.css
    rewritecond %{REQUEST_URI} ^/lib/js/jquery-ui.min.js [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/loStorage.js [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/ace.js [OR]
    rewritecond %{REQUEST_URI} ^/js/selectID.js  [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/loStorage.js  [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/ace.js [OR]
    rewritecond %{REQUEST_URI} ^/js/selectID.js [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/mode-javascript.js [OR]
    rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/worker-javascript.js
    
    rewriterule ^/(.*) /iobroker/$1 [PT]
    
    ProxyPass /iobroker/ http://[interne IP]:8081/ timeout=1200
    ProxyPassReverse /iobroker/ http://[interne IP]:8081/ timeout=1200</ifmodule> 
     <ifmodule mod_proxy.c="">ProxyRequests off
    RewriteEngine On
    redirectmatch ^/vis$ /vis/
    rewritecond %{REQUEST_URI} ^/vis/
    rewriterule (.*) $1 [PT]
    rewritecond %{HTTP_REFERER} https://[DNS-NAME]/vis/  
    rewriterule ^/(.*) /vis/$1 [PT]
    ProxyPass /vis/ http://[interne IP]:8082/ timeout=10
    ProxyPassReverse /vis/ http://[interne IP]:8082/ timeout=10</ifmodule> 
    
    # <ifmodule mod_proxy.c="">#ProxyRequests off
    #RewriteEngine On
    #redirectmatch ^/node-red$ /node-red/
    #rewritecond %{REQUEST_URI} ^/node-red/
    #rewriterule (.*) $1 [PT]
    #rewritecond %{HTTP_REFERER} https://[DNS-NAME]/node-red/ 
    #rewriterule ^/(.*) /node-red/$1 [PT]
    #ProxyPass /node-red/ http://[interne IP]:1880/
    #ProxyPassReverse /node-red/ http://[interne IP]:1880/
    #</ifmodule>
    
    

    Der Zugriff auf die Seite erfolgt hier aber über https://[DNS-NAME]/vis/vis/index.html. VIS auf VIS ersetzen ging leider nicht, weil auch Inhalte aus anderen Verzeichnissen als vis verwendet werden und die dann nicht richtig umgesetzt werden.

    Wahrscheinlich braucht man HTTP_REFERER für vis auch nicht. Ich hab es von einem anderen Eintrag mitkopiert und schaden tut er nicht.

    Ein längerer Timeout-Wert hatte bei mir recht schnell alle Verbindungen blockiert, da ich einige rickshaw Diagramme auf den Views habe.

    Bei Node-Red läuft die Übermittlung der Dobug-Informationen über WS nicht. Hier hätte ich auch gerne einen Tipp, wie der unter Apache 2.4 zu konfigurieren ist.

    Gruß

    Markus
    870_fehlermeldung.jpg

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      MrLee
      schrieb am zuletzt editiert von
      #3

      Moin.

      Apache…. Hatte gar nicht an solche Details gedacht :-)

      Vielen Dank! Geht super...

      Werde wenn ich mal Muße hab übers feintuning schaun... Aber erstmal läufts ohne viel Recherche....

      Danke Dir nochmal!

      MrLee

      Gesendet von meinem GT-I9505 mit Tapatalk

      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        nobody
        schrieb am zuletzt editiert von
        #4

        Hier auch noch eine Config mit Unterstützung der Websocket-Verbindung von Node-Red:

         <ifmodule mod_proxy.c="">RewriteEngine On 
        RewriteCond %{REQUEST_URI} ^/node-red/comms [NC] 
        #RewriteCond %{QUERY_STRING} transport=websocket [NC] 
        RewriteRule /(.*) ws://localhost:1880/$1 [P,L] 
        ProxyPass /node-red/ http://localhost:1880/node-red/ 
        ProxyPassReverse /node-red/ http://localhost:1880/node-red/</ifmodule> 
        

        Hierfür muss jedoch in der /opt/iobroker/node_modules/iobroker.node-red/settings.json der Parameter httpRoot: '/node-red' gesetzt werden.

        Leider geht diese Einstellung mit jedem Update des node-red Adapters verloren und muss wieder neu eingetragen werden.

        Für den neuen Terminal-Adapter funktioniert folgende Einstellung:

         <ifmodule mod_proxy.c="">RewriteEngine On 
        RewriteCond %{REQUEST_URI} ^/socket.io [NC] 
        RewriteCond %{QUERY_STRING} transport=websocket [NC] 
        RewriteRule /(.*) ws://localhost:8088/$1 [P,L]
        ProxyPass /socket.io http://localhost:8088/socket.io
        ProxyPassReverse /socket.io http://localhost:8088/socket.io</ifmodule> 
        
         <ifmodule mod_proxy.c="">ProxyRequests off 
        RewriteEngine On 
        redirectmatch ^/cmd$ /cmd/ 
        rewritecond %{REQUEST_URI} ^/cmd/ 
        rewriterule (.*) $1 [PT] 
        ProxyPass /cmd/ http://localhost:8088/ 
        ProxyPassReverse /cmd/ http://localhost:8088/</ifmodule> 
        
        

        Es wäre schon schön, wenn die Web-Interfaces der Adapter alle einen definierten eindeutigen Root-Pfad hätten. Dann ließen sich auch mehrere websocket-Verbindungen eindeutig durchleiten.

        Gruß

        Markus

        1 Antwort Letzte Antwort
        0
        • R Offline
          R Offline
          robsdobs
          schrieb am zuletzt editiert von
          #5

          Hallo,

          leider funktioniert bei mir der Zugriff auf vis nicht. iobroker admin geht hingegen.

          (habe Apache 2.4)

          Hat jemand eine Idee wie es hier gehen könnte?

          Scripte: http://forum.iobroker.net/viewtopic.php?f=23&amp;t=2799&amp;p=119565#p119565,

          1 Antwort Letzte Antwort
          0
          • apollon77A Offline
            apollon77A Offline
            apollon77
            schrieb am zuletzt editiert von
            #6

            Wie wäre es denn mit dem Cloud-Adapter? In meinen AUgen ist das faktisch nichts anderes :-)

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Antwort Letzte Antwort
            0
            • N Offline
              N Offline
              nobody
              schrieb am zuletzt editiert von
              #7

              @robsdobs:

              leider funktioniert bei mir der Zugriff auf vis nicht. iobroker admin geht hingegen.

              (habe Apache 2.4)

              Hat jemand eine Idee wie es hier gehen könnte? `

              Hallo robsdobs,

              was klappt denn genau nicht?

              Ich hab bei mir die Konfiguration so, dass ich ein zusätzliches vis als Selektor drin habe. Leider liegen nicht alle Inhalte im Verzeichnis vis und der http_referer greift auch nicht immer.

               <ifmodule mod_proxy.c="">ProxyRequests off
              RewriteEngine On
              redirectmatch ^/vis$ /vis/
              rewritecond %{REQUEST_URI} ^/vis/
              rewriterule (.*) $1 [PT]
              rewritecond %{HTTP_REFERER} https://[dein DNS Name]/vis/  
              rewritecond %{REQUEST_URI} !^/node-red/
              rewriterule ^/(.*) /vis/$1 [PT]
              ProxyPass /vis/ http://[deine interne IP]:8082/ timeout=10
              ProxyPassReverse /vis/ http://[deine interne IP]:8082/ timeout=10</ifmodule> 
              
              

              Der Nachteil ist, dass nun ein zusätzliches /vis für den Zugriff erforderlich ist, also für die vis-Startseite

              https://[dein DNS Name]/vis/vis/index.html
              

              Dafür gehen dann auch andere Web-Verzeichnisse wie flot oder Zugriffe auf die Projektverzeichnisse direkt:

              https://[dein DNS Name]/vis/flot/index.html
              
              1 Antwort Letzte Antwort
              0
              • N Offline
                N Offline
                nobody
                schrieb am zuletzt editiert von
                #8

                Was ich vergessen habe:

                Für den Lib - Ordner und die Socket - io Verbindung habe ich noch separate Einträge:

                <ifmodule mod_proxy.c="">ProxyRequests off

                RewriteEngine On

                redirectmatch ^/lib$ /lib/

                rewritecond %{REQUEST_URI} ^/lib/

                rewriterule (.*) $1 [PT]

                ProxyPass /lib/ http://[your internal ip]:8082/lib/ timeout=10

                ProxyPassReverse /lib/ http://[your internal ip]:8082/lib/ timeout=10</ifmodule>

                Prototyp für Websocket

                <ifmodule mod_proxy.c="">RewriteEngine On

                RewriteCond %{REQUEST_URI} ^/socket.io [NC]

                RewriteCond %{QUERY_STRING} transport=websocket [NC]

                RewriteRule /(.*) ws://[your internal ip]:8082/$1 [P,L]

                ProxyPass /socket.io http://[your internal ip]:8082/socket.io

                ProxyPassReverse /socket.io http://[your internal ip]:8082/socket.io</ifmodule>

                Ob die unbedingt erforderlich sind, kann ich nicht sagen. Sie sind im try & error Verfahren entstanden, bis es komplett lief.

                Da die Reihenfolge in der Datei wichtig ist: diese Einträge sind am Ende nach allen anderen.

                Die socket.io Verbindung klappt so auch nur, wenn diese im web-Adapter auf intern steht. Wenn hier ein separater socket.io Adapter ausgewählt wird, kommt dieser Request nicht auf demselben Port an.

                1 Antwort Letzte Antwort
                0
                • R Offline
                  R Offline
                  robsdobs
                  schrieb am zuletzt editiert von
                  #9

                  Danke und Sorry, das ich mich erst jetzt melde, musste IO Broker komplett neu aufsetzen, weil es nichtmehr lief. Ich werde das morgen nochmal probieren.

                  Scripte: http://forum.iobroker.net/viewtopic.php?f=23&amp;t=2799&amp;p=119565#p119565,

                  1 Antwort Letzte Antwort
                  0
                  • N Offline
                    N Offline
                    nobody
                    schrieb am zuletzt editiert von
                    #10

                    Hallo robsdobs,

                    ich hab am Wochenende meine Konfiguration komplett überarbeitet, weil die socket-io-Verbindung immer von Websocket auf den Poll-Modus zurückgefallen war und bei der socket.io-Verbindung in der App die http-Authentifizierung nicht funktioniert (weil kein http-Request vorher die Verbindung freischaltet), ich aber unbedingt eine Authentifizierung haben wollte.

                    Generell geht der Websocket-Support erst ab Apache 2.4 und erfordert neben den Modulen ssl, mod_proxy und mod_rewrite noch das Modul proxy_wstunnel.

                    Ich versuche mal in den nächsten Tagen das ganze allgemeingültig zu beschreiben.

                    Gruß

                    Markus

                    1 Antwort Letzte Antwort
                    0
                    • N Offline
                      N Offline
                      nobody
                      schrieb am zuletzt editiert von
                      #11

                      Hallo,

                      wie versprochen hier ein Template einer Site-Konfiguration für Apache 2.4 als Reverse-Proxy-Server für ioBroker und CCU.

                      Die Beschreibung befindet sich inline als Kommentare. Die aufgeführten Module müssen in Apache aktiviert sein. Insbesondere wstunnel ist für die Websocket-Kommunikation erforderlich.

                      Alle URL- und IP-Daten in eckigen Klammern müssen durch die eigenen Daten ersetzt werden.

                      Gruß

                      Markus

                      ! ````

                      Dieses Template enthält Rewrite-Regeln für die Verwendung von Apache 2.4.x als Reverse Proxy mit SSL-Unterstützung für die folgenden Komponenten:

                      - ioBroker VIS/Flot/Rickshaw

                      - ioBroker Admin

                      - ioBroker node-red

                      - ioBroker socket-io im Web-Adapter

                      - Zugriff auf CCU1/2

                      folgende Module müssen in Apache mindestens installiert und aktiviert sein:

                      - ssl

                      - proxy

                      - rewrite

                      - proxy_wstunnel

                      - mpm_prefork

                      - mod_auth_basic

                      - mod_authn_file -- oder andere Authentifizierungsquelle

                      Alle Einträge in eckigen Klammern [] sind durch die eigenen Daten zu ersetzen.

                      Die Berechtigungsprüfung erfolgt durch Apache mittels HTTP-Basic Authentication oder Parameter an der URL. Dies hat den Vorteil, das unberechtigte Anfragen erst garnicht zu den Systemen gelangen.

                      Da die Verbindung mit SSL/TLS gesichert ist, ist basic-Authentication vollständig ausreichend und am schnellsten.

                      In den lokalen Systemen ist die Authentifizierung auszuschalten, da die Authentifizierungsdaten nicht durchgereicht werden.

                      Die Skripte gehen davon aus, dass die lokalen Systeme mittels http angesprochen werden. Falls nicht, müssen die Zeilen entsprechend angepasst werden.

                      ! # Folgender Teil ist nur erforderlich, wenn man einen lokalen Bereich auf dem Webserver haben möchte, der unter der gleichen URL erreichbar ist (z.B. um statische Daten abzulegen) und bei dem ein Caching durch den Webserver erfolgen soll.
                      <ifmodule mod_cache.c="">LoadModule cache_disk_module modules/mod_cache_disk.so
                      <ifmodule mod_cache_disk.c="">CacheRoot "/var/www"
                      CacheEnable disk "/"
                      CacheDirLevels 5
                      CacheDirLength 3</ifmodule>
                      ! # When acting as a proxy, don't cache the list
                      CacheDisable "/ccu/"
                      CacheDisable "/vis/"
                      CacheDisable "/iobroker/"
                      CacheDisable "/node-red/"</ifmodule>
                      ! # Oberste Modul-Deklaration für den kompletten durch ssl gesicherten Service
                      <ifmodule mod_ssl.c=""># Festlegung des Ports, über den der Server erreichbar sein soll.
                      <virtualhost default:443="">ServerAdmin [ Email des Administrators (Optional)]
                      ServerName [ Externe URL des Servers ohne Protokoll, z.B. haus.meineurl.de]
                      ! # Stammverzeichnis des Webservers für lokale Inhalte
                      DocumentRoot /var/www
                      ! # Festlegung der Eigenschaften für das Root-Directory auf dem Webserver und alle Unterverzeichnisse
                      <directory>Options FollowSymLinks
                      AllowOverride None
                      ! # Festlegung der Authentifizierungseigenschaften
                      # Hier wird basic-Authentification mit Liste der berechtigten User konfiguriert.
                      # Anleitung zur Konfiguration von Benutzern siehe https://httpd.apache.org/docs/current/howto/auth.html
                      AuthType basic
                      AuthName "home"
                      AuthBasicProvider file
                      AuthUserFile /etc/apache2/ssl/httpsusers
                      ! # Festlegung, dass die Authentifizierung erfordlich ist. Speziell für die App kann kein Basic-Authentication verwendet werden, da diese Teile im Protokoll nicht enthalten sind.
                      # Für die App kann alternativ auf die dort angegeben Daten für User und Password geprüft werden. Diese Werte werden in der URL als Parameter übertragen.
                      # Die Werte werden nicht aus der Passwort-Datei ausgelesen sondern müssen hier statisch konfiguriert werden.
                      # Wichtig: Nur der erste Request muss beim Öffnen der Verbindung authentifizieren.
                      # Alle nachfolgenden Request über die gleiche http-Verbindung verwenden automatisch die gleichen Credentials. Deswegen ist beim Zugriff auf VIS die http-Authentifizierung für index.html ausreichend.
                      <requireany># Zugriff über URL-Authentifizierung
                      <requireall># Erlaubt auch noch die Einschänkung auf andere Eigenschaften
                      Require expr %{QUERY_STRING} =~ /user=[ Benutzername in der APP ]&pass=[ Passwort in der APP ]/</requireall>
                      # Für alle anderen Zugriffe ist http-Authentifizierung erforderlich
                      Require valid-user</requireany></directory>
                      ! # Eintrag falls noch lokale Scripte wie z.B. PHP unterstützt werden sollen (muss natürlich getrennt installiert und eingerichtet werden)
                      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                      <directory "/usr/lib/cgi-bin"="">AllowOverride None
                      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                      Order allow,deny
                      Allow from all</directory>
                      ! # Einrichtung der Zertifikate für die Verschlüsselung
                      # Weitere Informationen siehe z.B. https://thomas-leister.de/apache2-webserver-ssl-verschluesselte-verbindungen-ermoeglichen/
                      SSLCertificateFile /etc/apache2/ssl/[ Name der Zertifikatdatei ].crt
                      SSLCertificateKeyFile /etc/apache2/ssl/[ Name der Datei mit dem privaten Schnlüssel ].key
                      SSLCertificateChainFile /etc/apache2/ssl/[ evtl Name der Datei mit der Key Chain bis zum Root-Zertifikat ].crt
                      !

                      	# Rewrite-Regeln
                      	# Wichtig: Bei den nachfolgenden Mod-Proxy-Einträgen ist die Reihenfolge relevant. Die Auswertung erfolgt von oben nach unten. Das erste passende ProxyPass-Statement gilt.
                      
                          # Weiterleitung für Node-Red
                      	# Wichtig: Damit die Websocket-Verbindung korrekt weitergeleitet werden kann, muss in den Adapter-Einstellungen von Node-Red in "http root directory" "node-red" eingetragen werden.
                      	# Ohne Websocket-Verbindung kann man trotzdem auf die IDE zugreifen, bekommt jedoch keine Debug-Information angezeigt.
                      	# Der Zugriff auf Node-erfolgt dann intern http://[ interne IP ]:1880/node-red und extern über https://[ externe URL ]/node-red
                      	 <ifmodule mod_proxy.c="">RewriteEngine On 
                      		redirectmatch ^/node-red$ /node-red/
                      
                      		# Spezieller Eintrag für websocket-Verbindung
                      		RewriteCond %{REQUEST_URI} ^/node-red/comms [NC] 
                      		RewriteRule /(.*) ws://[ interne IP ]:1880/$1 [P,L] 
                      
                      		ProxyPass /node-red/ http://[ interne IP ]:1880/node-red/ 
                      		ProxyPassReverse /node-red/ http://[ interne IP ]:1880/node-red/</ifmodule> 
                      

                      ! # Prototyp für Foscam Webcam
                      # Der Zugriff auf die Webcam dann extern über https://[ externe URL ]/video1
                      ! <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/video1$ /video1/
                      rewritecond %{REQUEST_URI} ^/video1/
                      rewriterule (.) $1 [PT]
                      ! # Referer Auswertung, falls eine lokale absolute Referenz auf den Seiten ist. In diesem Fall wird /video1 ergänzt, damit ProxyPass matched.
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/video1/
                      rewriterule ^/(.
                      ) /video1/$1 [PT]

                      		ProxyPass /video1/ http://[ interne IP ]/
                      		ProxyPassReverse /video1/ http://[ interne IP ]/</ifmodule> 
                      

                      !
                      # Rewrite-Regeln für Homematic CCU
                      # Stammt ursprünglich aus Homematic Forum
                      # Der Zugriff auf die CCU efolgt intern weiterhin über http://[ interne IP ] und extern über https://[ externe URL ]/ccu
                      ! <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/ccu$ /ccu/
                      rewritecond %{REQUEST_URI} ^/ccu/
                      rewriterule (.) $1 [PT]
                      ! # Referer Auswertung, falls eine lokale absolute Referenz auf den Seiten ist. In diesem Fall wird /ccu ergänzt, damit ProxyPass matched.
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/ccu/ [OR]
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/webui/ [OR]
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/pda/ [OR]
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/api/ [OR]
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/addons/xmlapi/ [OR]
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/addons/cuxd/
                      rewritecond %{HTTP_REFERER} ?sid=@.+@ [OR]
                      rewritecond %{THE_REQUEST} ?sid=@.+@
                      rewriterule ^/(.
                      ) /ccu/$1 [PT]
                      rewriterule ^/pda/(.) /ccu/pda/$1
                      rewriterule ^/webui/(.
                      ) /ccu/webui/$1
                      rewriterule ^/addons/db/(.) /ccu/addons/db/$1
                      rewriterule ^/addons/xmlapi/(.
                      ) /ccu/addons/xmlapi/$1
                      rewriterule ^/addons/cuxd/(.*) /ccu/addons/cuxd/$1
                      ProxyPass /ccu/ http://[ interne IP ]/ timeout=1200
                      ProxyPassReverse /ccu/ http://[ interne IP ]/ timeout=1200</ifmodule>
                      ! # Rewrite-Regeln für ioBroker Admin
                      # Der Zugriff auf die Admin-Seite efolgt intern weiterhin über http://[ interne IP ]:8081 und extern über https://[ externe URL ]/iobroker

                                  # Websocket Admin
                                 <ifmodule mod_proxy.c="">RewriteEngine On 
                                       Redirectmatch ^/iobroker/socket.io$ /iobroker/socket.io/
                                       RewriteCond %{REQUEST_URI} ^/iobroker/socket.io/ 
                                       RewriteCond %{QUERY_STRING} transport=websocket
                                       RewriteRule ^/(.*) /iobrokerwss/$1 [PT]
                                       ProxyPass /iobrokerwss/iobroker/socket.io/ ws://localhost:8081/socket.io/ timeout=1200 Keepalive=On</ifmodule> 
                      

                      ! <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/iobroker$ /iobroker/
                      rewritecond %{REQUEST_URI} ^/iobroker/
                      rewriterule (.) $1 [PT]
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/iobroker/ [OR]
                      rewritecond %{REQUEST_URI} ^/css/adapter.css [OR]
                      rewritecond %{REQUEST_URI} ^/js/translate.js [OR]
                      rewritecond %{REQUEST_URI} ^/js/adapter/ [OR]
                      rewritecond %{REQUEST_URI} ^/adapter/ [OR]
                      rewritecond %{REQUEST_URI} ^/js/adapter-settings.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/jqGrid/ [OR]
                      rewritecond %{REQUEST_URI} ^/lib/css/jquery.multiselect-1.13.css [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/jquery-ui.min.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/loStorage.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/ace.js [OR]
                      rewritecond %{REQUEST_URI} ^/js/selectID.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/loStorage.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/ace.js [OR]
                      rewritecond %{REQUEST_URI} ^/js/selectID.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/mode-javascript.js [OR]
                      rewritecond %{REQUEST_URI} ^/lib/js/ace-1.2.0/worker-javascript.js
                      rewriterule ^/(.
                      ) /iobroker/$1 [PT]
                      ! ProxyPass /iobroker/ http://[ interne IP ]:8081/ timeout=1200
                      ProxyPassReverse /iobroker/ http://[ interne IP ]:8081/ timeout=1200</ifmodule>
                      ! # Rewrite-Regeln für ioBroker VIS
                      # Die socket.io-Kommunikation und der Zugriff auf /lib wird nachfolgend getrennt geregelt (geht bestimmt auch einfacher hier lokal)
                      # Wichtig: Im web-Adapter mit "Socket.IO Instance" auf integriert stehen.
                      # Der Zugriff auf die Admin-Seite efolgt intern weiterhin über http://[ interne IP ]:8082/vis/index.html und extern über https://[ externe URL ]/vis/vis/index.html.
                      <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/vis$ /vis/
                      rewritecond %{REQUEST_URI} ^/vis/
                      rewriterule (.) $1 [PT]
                      ! # Referer Auswertung, falls eine lokale absolute Referenz auf den Seiten ist. In diesem Fall wird /vis ergänzt, damit ProxyPass matched.
                      # Referenzen auf node-red, static und socket.io werden explizit ausgeschlossen.
                      rewritecond %{HTTP_REFERER} https://[ externe URL ]/vis/
                      rewritecond %{REQUEST_URI} !^/node-red/
                      rewritecond %{REQUEST_URI} !^/static/
                      rewritecond %{REQUEST_URI} !^/socket.io/
                      rewriterule ^/(.
                      ) /vis/$1 [PT]

                      		ProxyPass /vis/ http://[ interne IP ]:8082/ timeout=10
                      		ProxyPassReverse /vis/ http://[ interne IP ]:8082/ timeout=10</ifmodule> 
                      

                      ! # Rewrite-Regeln für einen direkten Zugriff auf das Verzeichnis /lib des Web-Servers von ioBroker VIS ohne Referer
                      # Dürfte normalerweise nicht benötigt werden.
                      <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/lib$ /lib/
                      rewritecond %{REQUEST_URI} ^/lib/
                      rewriterule (.) $1 [PT]
                      ProxyPass /lib/ http://[ interne IP ]:8082/lib/ timeout=10
                      ProxyPassReverse /lib/ http://[ interne IP ]:8082/lib/ timeout=10</ifmodule>
                      ! # Rewrite-Regeln für einen direkten Zugriff auf auf flot ohne VIS
                      <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/flot$ /flot/
                      rewritecond %{REQUEST_URI} ^/flot/
                      rewriterule (.
                      ) $1 [PT]
                      ProxyPass /flot/ http://[ interne IP ]/flot/ timeout=10
                      ProxyPassReverse /flot/ http://[ interne IP ]:8082/flot/ timeout=10</ifmodule>
                      ! # Rewrite-Regeln für einen direkten Zugriff auf auf rickshaw ohne VIS
                      <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      redirectmatch ^/rickshaw$ /rickshaw/
                      rewritecond %{REQUEST_URI} ^/rickshaw/
                      rewriterule (.) $1 [PT]
                      ProxyPass /rickshaw/ http://[ interne IP ]:8082/rickshaw/ timeout=10
                      ProxyPassReverse /rickshaw/ http://[ interne IP ]/rickshaw/ timeout=10</ifmodule>
                      ! # Rewrite-Regeln für die socket.io Websocket-Verbindung von VIS und APP sowie Javascript-Adapter
                      # Wichtig: Da socket.io im Webadapter auf intern steht, sollte hier auch auf den Web-Adapter und nicht auf einen separaten socket.io-Adapter referenziert werden.
                      # Setzt externes WSS (Verschlüsselte Websocket-Verbindung) auf internen WS (ohne SSL/TLS) um.
                      ! # Websocket Javascript
                      <ifmodule mod_proxy.c="">RewriteEngine On
                      Redirectmatch ^/socket.io$ /socket.io/
                      RewriteCond %{REQUEST_URI} ^/socket.io/
                      RewriteCond %{QUERY_STRING} transport=websocket
                      RewriteCond %{QUERY_STRING} !key=
                      RewriteRule ^/(.
                      ) /wss2/$1 [PT]
                      ProxyPass /wss2/socket.io/ ws://[ interne IP ]:8081/socket.io/ timeout=1200 Keepalive=On</ifmodule>
                      ! # Websocket VIS
                      <ifmodule mod_proxy.c="">RewriteEngine On
                      Redirectmatch ^/socket.io$ /socket.io/
                      RewriteCond %{REQUEST_URI} ^/socket.io/
                      RewriteCond %{QUERY_STRING} transport=websocket
                      RewriteCond %{QUERY_STRING} key=
                      RewriteRule ^/(.) /wss/$1 [PT]
                      ProxyPass /wss/socket.io/ ws://[ interne IP ]:8082/socket.io/ timeout=1200 Keepalive=On</ifmodule>
                      ! # Rewrite-Regeln für die Datei _socket im Hauptverzeichnis vom Web-Server
                      <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      Redirectmatch ^/_socket$ /_socket/
                      RewriteCond %{REQUEST_URI} ^/_socket/
                      ! RewriteRule (.
                      ) $1 [PT]
                      ProxyPass /_socket/ http://[ interne IP ]:8082/_socket/
                      ProxyPassReverse /_socket http://[ interne IP ]:8082/_socket/</ifmodule>
                      ! # Rewrite-Regeln für die socket.io Verbindung im Polling-Modus über HTTPS von VIS und APP sowie Javascript-Adapter
                      # Wichtig: Da socket.io im Webadapter auf intern steht, sollte hier auch auf den Web-Adapter und nicht auf einen separaten socket.io-Adapter referenziert werden.

                      	# socket.io Javascript
                      	 <ifmodule mod_proxy.c="">ProxyRequests off
                      		RewriteEngine On
                      		Redirectmatch ^/socket.io$ /socket.io/
                      		RewriteCond %{REQUEST_URI} ^/socket.io/
                      		RewriteCond %{QUERY_STRING} transport=polling
                      		RewriteCond %{QUERY_STRING} !key=
                      		RewriteRule (.*) /adminsocket/$1 [PT]
                      		ProxyPass /adminsocket/socket.io/ http://[ interne IP ]:8081/socket.io/
                      		ProxyPassReverse /adminsocket/socket.io/ http://[ interne IP ]:8081/socket.io/</ifmodule> 
                      

                      ! # socket.io VIS
                      <ifmodule mod_proxy.c="">ProxyRequests off
                      RewriteEngine On
                      Redirectmatch ^/socket.io$ /socket.io/
                      RewriteCond %{REQUEST_URI} ^/socket.io/
                      RewriteCond %{QUERY_STRING} transport=polling
                      RewriteCond %{QUERY_STRING} key=
                      RewriteRule (.*) $1 [PT]
                      ProxyPass /socket.io/ http://[ interne IP ]:8082/socket.io/
                      ProxyPassReverse /socket.io/ http://[ interne IP ]:8082/socket.io/</ifmodule>
                      ! # Parameter für die Steuerung der Log-Ausgabe beim Rewrite
                      # Die Logausgabe kann durch Entfernen der # aktiviert werden
                      #LogLevel warn
                      #LogLevel alert rewrite:trace8
                      #CustomLog ${APACHE_LOG_DIR}/ssl_access2.log combined
                      ! # Generelles Anschalten von SSL
                      SSLEngine on
                      ! # Sonderregeln für Scripte
                      <filesmatch ".(shtml|phtml|php)$"="">SSLOptions +StdEnvVars</filesmatch>
                      <directory usr/lib/cgi-bin="">SSLOptions +StdEnvVars</directory></virtualhost></ifmodule>
                      ! ````

                      Eine gute Anleitung, wie man auf dem Raspi den Apache installiert befindet sich z.B. hier: http://www.lxccu.com/manuals:apache-rev … oxy-manual

                      1 Antwort Letzte Antwort
                      0
                      • R Offline
                        R Offline
                        robsdobs
                        schrieb am zuletzt editiert von
                        #12

                        Danke, sowohl die alte als auch die neue Variante funktionieren.

                        unter https://[DNS Name]/vis zeigt er zwar die linkliste an, diese links funktionieren nicht. Hier muss man nur wissen, das diese nur mit 2 mal vis funktionieren.

                        Das war das Problem, mit https://[DNS Name]/vis/vis/ geht es.

                        Die Seite http://www.lxccu.com/manuals:apache-rev … oxy-manual ist mir bekannt und auf die CCU kann ich auch problemlos zugreifen. Hier geht von außen auch der Zugriff über https://[IP Adresse]/ccu, das funktioniert bei ioBroker leider nicht, hier geht nur der DNS Name (wird benötigt, wenn der DynDNS Anbieter geblockt ist).

                        Kann man da noch etwas ändern, das der Zugriff zu ioBroker auch über die IP Adresse geht?

                        Danke & Gruß

                        Robert

                        Scripte: http://forum.iobroker.net/viewtopic.php?f=23&amp;t=2799&amp;p=119565#p119565,

                        1 Antwort Letzte Antwort
                        0
                        • N Offline
                          N Offline
                          nobody
                          schrieb am zuletzt editiert von
                          #13

                          Die Angabe des dns-Namens beim referer ist eine Art "Seiteneinwahlschutz". Du kannst das Pattern aber auch so ändern, das jede URL matched, wenn danach /vis oder /iobroker steht.

                          Wichtig sind die Einträge für socket.io.

                          Es läuft auch ohne, aber dann wird statt websocket der polling-Modus verwendet und die Daten über separate http Requests jede Sekunde von Client abgerufen statt vom Server aktiv gesendet . Und dann geht im Client der Netzverkehr, CPU und Speicherbedarf hoch.

                          Gesendet von meinem SM-G900F mit Tapatalk

                          1 Antwort Letzte Antwort
                          0
                          • N Offline
                            N Offline
                            nobody
                            schrieb am zuletzt editiert von
                            #14

                            Ich hab oben noch Regeln ergänzt, sodass nun auch die meisten Adaptereinstellungen auf der Admin-Seite korrekt angezeigt werden.

                            1 Antwort Letzte Antwort
                            0
                            • N Offline
                              N Offline
                              nobody
                              schrieb am zuletzt editiert von
                              #15

                              Hallo Homoran,

                              könntest du die Skripte für die Reverse-Proxy-Konfiguration in die Dokumentation aufnehmen?

                              Den Wunsch von extern gesichert auf die Komponenten zugreifen zu können dürften einige haben.

                              mfg

                              Markus

                              1 Antwort Letzte Antwort
                              0
                              • HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #16

                                @nobody:

                                Hallo Homoran,

                                könntest du die Skripte für die Reverse-Proxy-Konfiguration in die Dokumentation aufnehmen? `
                                Ja, könnte ich ;-)

                                Aber sag bitte einem js-Legastheniker (und bash + …), welche genau. ggf per PN und mit einem zweizeiler für die Skriptbeschreibung.

                                Gruß

                                Rainer

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                1 Antwort Letzte Antwort
                                0
                                • M Offline
                                  M Offline
                                  MrLee
                                  schrieb am zuletzt editiert von
                                  #17

                                  Moin!

                                  Hat jemand das schonmal für nginx umgesetzt?

                                  bis denne

                                  Mr.Lee

                                  1 1 Antwort Letzte Antwort
                                  0
                                  • D Offline
                                    D Offline
                                    dodi666
                                    schrieb am zuletzt editiert von
                                    #18

                                    Hallo zusammen,

                                    bin ganz neu im iobroker Forum und derzeit eigentlich nur stiller Mitleser.

                                    Habe den Reverse Proxy soweit installiert, leider funktioniert bei mir der Zugriff auf den Reiter Skripte nicht.

                                    Die Seite wird aufgerufen und dann steht oben links in der Ecke "Loading…." und nichts weiter passiert.

                                    Ich habe nur den Eintrag default-ssl.conf übernommen, der für den iobroker.admin notwendig ist.

                                    Alles andere funktioniert auch, nur leider die Skripte nicht.

                                    Kann mir einer von euch vielleicht weiterhelfen?

                                    Vielen Dank

                                    Sascha

                                    1 Antwort Letzte Antwort
                                    0
                                    • N Offline
                                      N Offline
                                      nobody
                                      schrieb am zuletzt editiert von
                                      #19

                                      Ich hab den Javascript-Adapter bei mir nicht installiert. Deswegen ist in der Konfiguration hierfür bisher nichts vorgesehen.

                                      Wahrscheinlich ist eine zusätzliche Regel für den Pfad erforderlich.

                                      Ich kann mir das aber leider erst am Wochenende genauer ansehen.

                                      1 Antwort Letzte Antwort
                                      0
                                      • D Offline
                                        D Offline
                                        dodi666
                                        schrieb am zuletzt editiert von
                                        #20

                                        Hi nobody,

                                        das wäre super nett.

                                        Ich spreche aber nicht von einer zusätzlichen Installation, sondern von dem Standardreiter "Skript" der iobroker.admin Installation.

                                        …nur damit wir vom Gleichen sprechen...

                                        Vielen Dank schonmal

                                        Gruß Sascha

                                        1 Antwort Letzte Antwort
                                        0
                                        • DolomitiD Offline
                                          DolomitiD Offline
                                          Dolomiti
                                          schrieb am zuletzt editiert von
                                          #21

                                          Hallo dodi,

                                          du mußt oben links neben "Admin" auf den Stift klicken und dann erscheint ein Menüpunkt "Zeige". Dort Skripte auswählen und der Reiter sollte da sein.

                                          Gruß

                                          Dolomiti

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                          Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                                          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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          794

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe