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.