FHEM Floorplan explizit über Apache Reverse Proxy bereitstellen

Gespeichert von Michael Kirgus am So., 26.11.2017 - 18:51

Ich habe im Internet bisher (leider) vergeblich nach einer Lösung gesucht, explizit NUR den Flooplan von FHEM über eine benutzerdefinierte URL unter dem Stammpfad auf meinem Webserver nutzbar zu machen. Natürlich läuft der FHEM-Server nicht auf dem gleichen System wie der Webserver und aus Sicherheitsgründen möchte ich den FHEM-Server nicht direkt per Port-Forwarding vom Internet aus erreichbar machen. Ich musste für die Lösung einige Tage investieren, da auch von FHEM einige Dinge beachtet werden müssen. Teilweise ist der Pfad für die jQuery-Bibliotheken nach /fhem hartcodiert, was den Proxy noch komplexer macht. Natürlich wird das ganze auch noch mit einer einfachen Authentifizierung mittels Benutzername und Kennwort abgesichert.

Folgende Module müssen auf dem Webserver hierfür installiert und in der Datei "httpd.conf" aktiviert sein:

  • auth_basic_module (da Authentifizierung)
  • ssl_module (in diesem Falle, da hier natürlich SSL genutzt wird)
  • proxy_module
  • proxy_html_module
  • xml2enc_module

Wir gehen in diesem Beispiel von einem bereits funktionierenden Webserver aus, in welcher die Datei "httpd-ssl.conf" um die folgenden Zeilen angepasst wird:

ProxyRequests Off

<Location /[Eigenes Unterverzeichnis]>
  ProxyPreserveHost On
  ProxyPass http://[DNS-Name zum FHEM-Server]:[Port der FHEM-Instanz]/fhem
  ProxyPassReverse http://[DNS-Name zum FHEM-Server]:[Port der FHEM-Instanz]/fhem
  ProxyHTMLEnable On
  ProxyHTMLURLMap /fhem/floorplan     /[Eigenes Unterverzeichnis]/floorplan/[Name des Floorplans]
  ProxyHTMLURLMap /fhem/     /[Eigenes Unterverzeichnis]/
  ProxyHTMLURLMap /fhem     /[Eigenes Unterverzeichnis]
  RedirectMatch ^/[Eigenes Unterverzeichnis]$ /[Eigenes Unterverzeichnis]/floorplan/[Name des Floorplans]
  RequestHeader unset Accept-Encoding 
  ProxyHTMLCharsetOut *
  AuthType Basic
  AuthName Anmeldung
  AuthUserFile [Pfad zur htpasswd-Datei]
  Require valid-user
  Order deny,allow
  Allow from all
</Location>

Zusätzlich muss bezüglich einiger hartcodierten Pfade in FHEM noch in der Datei "proxy-html.conf" folgende Zeilen bei "ProxyHTMLLinks" eingefügt werden:

ProxyHTMLLinks	head		root
ProxyHTMLLinks	embed		src

Der letzte Eintrag in "ProxyHTMLLinks" bewirkt, dass die SVG-Grafiken (Plots) im Flooplan korrekt angezeigt werden.

Neuen Kommentar hinzufügen

Sind Sie ein Mensch? Schlimm, aber leider notwendig:

Bild-CAPTCHA
Geben Sie die Zeichen ein, die im Bild gezeigt werden.