Zum Hauptinhalt springen

Zugriff über einen Reverse-Proxy

Du bist hier:
Lesedauer: 2 Minuten

Um auf deinen Energiefluss-erweitert von extern zuzugreifen, benötigst Du einen Reverse-Proxy, der entsprechend konfiguriert ist und eine 2. Web-Adapter Instanz, die über die „Authentifikation“ abgesichert ist. Hier lassen sich auch die Benutzer und jeweiligen Berechtigungen konfigurieren.

Zusätzlich muss diese Socket.io Instanz auf integriert stehen, da sonst keine Authentifizierung stattfinden kann.

Risiko: Natürlich kannst Du den Energiefluss-erweitert auch ohne Authentifikation dem Internet zur Verfügung stellen – bedenke hier aber, das dies ausdrücklich nicht empfohlen ist und ein hohes Sicherheitsrisiko für deine ioBroker-Instanz bedeutet.

Konfiguration für Apache

In meiner Apache Konfiguration verwende ich SSL (HTTPS), da ich auch für den Web-Adapter SSL (HTTPS) benutze. Dies ist wichtig, damit der Login via ioBroker problemlos klappt.

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName ef.domain.de
    ServerAlias ef.domain.de

    ErrorLog /var/log/apache2/ef_error.log
    CustomLog /var/log/apache2/ef_access.log combined

    ProxyPreserveHost On
    SSLProxyEngine On
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off

    # 1. SPEZIFISCHE PFADE ZUERST
    ProxyPass /vis/ https://<IP>:<Port>/vis/
    ProxyPassReverse /vis/ https://<IP>:<Port>/vis/

    ProxyPass /socket.io/ https://<IP>:<Port>/socket.io/
    ProxyPassReverse /socket.io/ https://<IP>:<Port>/socket.io/

    ProxyPass /login/ https://<IP>:<Port>/login/
    ProxyPassReverse /login/ https://<IP>:<Port>/login/

    ProxyPass /energiefluss-erweitert/ https://<IP>:<Port>/energiefluss-erweitert/
    ProxyPassReverse /energiefluss-erweitert/ https://<IP>:<Port>/energiefluss-erweitert/

    # 2. SICHERHEIT: Sensible Bereiche sperren
    <LocationMatch "^/(admin|config|configuration|ping|lib)">
        Require all denied
    </LocationMatch>

    # A) WICHTIG: Leitet den leeren Root-Aufruf direkt sauber auf den Adapter um
    RewriteRule ^/?$ /energiefluss-erweitert/ [R=307,L]

    # B) Fängt URLs mit Instanz-Suffix ab (z.B. /energiefluss-erweitert.0/?serve=healthCheck)
    RewriteCond %{REQUEST_URI} ^/energiefluss-erweitert\.(\d+)(.*)$
    RewriteRule ^.*$ https://<IP>:<Port>/energiefluss-erweitert.%1%2 [P,L,QSA]

    # C) WEBSOCKET-SUPPORT für Socket.IO
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteCond %{HTTP:Connection} upgrade [NC]
    RewriteRule ^/socket.io/(.*)$ "wss://<IP>:<Port>/socket.io/$1" [P,L]

    # 3. HAUPTEINSTIEG (Ganz unten): Für ggf. den Login
    ProxyPass / https://<IP>:<Port>/
    ProxyPassReverse / https://<IP>:<Port>/

    # Stelle sicher, dass Cookie-Header beim Proxying erhalten bleiben
    ProxyPassReverseCookiePath / /

    # Echte Client-IP für das Backend explizit durchreichen
    RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e"
    RequestHeader set X-Real-IP "%{REMOTE_ADDR}e"
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"

    # SSL-Zertifikate
    SSLCertificateFile /etc/letsencrypt/live/ef.domain.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ef.domain.de/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Mit dieser Konfiguration kannst Du nun problemlos https://ef.domain.de aufrufen und es erscheint zuerst die Login-Maske von ioBroker, um den Benutzer zu authentifizieren. Nach erfolgreichem Login steht dir der Energiefluss-erweitert zu deiner Benutzung zur Verfügung!

Wie hat Dir der Beitrag gefallen?
Bewertung: 0/5 - abgegebene Bewertungen: 0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert