FHEM Floorplan explizit über Apache Reverse Proxy bereitstellen

17.09.2017
Dieser Inhalt ist bereits etwas älter.
This content is already a bit old.
Bild

Ich habe im Internet bisher (leider) vergeblich nach einer Lösung gesucht, explizit NUR den Floorplan 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 Floorplan korrekt angezeigt werden.


 

Feedback, Verbesserungsvorschläge, weitere Ideen?

Einfach das Kontaktformular verwenden oder direkt eine E-Mail an info@kirgus.net.