GELÖST - Apache Proxy mit zwei FHEMs - /fhem/ ändern?

Begonnen von bugster_de, 16 Januar 2017, 11:51:51

Vorheriges Thema - Nächstes Thema

bugster_de

Problembeschreibung ist unten. teilweise Lösung habe ich nach kurzer Durchsicht des von FHEM generierten Sourcecode selbst gefunden und hier hat Marvin absolut recht:
Zitat@bugster_de: Das Attribut webname von FHEMWEB müsste dein Freund sein.
zumindest einer der beiden FHEMs benötigt einen anderen webnamen, danach den Apache Proxy ganz normal straight forward konfigurieren und es geht !




*******************************************************************************************

Hi,

ggf. ist das etwas offtopic, aber vielleicht hat ja jemand einen Denkanstoß für mich.

Setup
Ich habe zwei RPi bei mir im Haus. Einmal der Haupt-FHEM und einmal einer für die Heizung. Auf meinen Server läuft Apache als Webserver und nur dieser ist nach außen im Internetz sichtbar. Alle Dienste im Haus werden durch diesen Apache als HTML-Proxy bereit gestellt und auch die Passowrt Absicherung wird dort gemacht. Das klapp mit meinem Haupt-FHEM auch; ich mit meiner externen Adresse https://meine-adresse.com/fhem auf mein Haupt FHEM zugreifen. Dies wird dann durch die ProxyHTMLURLMap dargestellt. Wenn ich nun aber den zweiten FHEM auch nach außen sichtbar machen möchte z.B. durch https://meine-adresse.com/heizung, dann klappt das für den initialen Seitenaufruf. Sobald ich aber einen anderen Raum anklicke, dann wird die Adresse auf https://meine-adresse.com/fhem umgebogen und ich sehe wieder den ersten FHEM.

Die entsprechende Apache Conf sieht so aus:
<Location /heizung>
  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um     
  ProxyPass http://192.168.2.12:8084/fhem
  ProxyPassReverse http://192.168.2.12:8084/fhem
  ProxyHTMLEnable On
  # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an                   
  ProxyHTMLURLMap /heizung/     /fhem/
  AuthType Basic
  AuthName "Password Required"
  AuthUserFile /etc/apache2/passwords/fhem-htpasswd
  Require valid-user
  Order deny,allow
  Allow from all
  SetOutputFilter INFLATE;proxy-html;DEFLATE
</Location>


Mache ich am Apache was falsch?
Die einfachste Lösung wäre aber auch, die Adresse des FHEM anstelle
http://192.168.2.12:8084/fhem
auf
http://192.168.2.12:8084/heizung
umzubiegen. Geht das?

Grinsekatze

Danke, ich probiere es nachher mal aus. Ich habe zzt. selbst das Problem, dass ich zwei FHEM-Instanzen (für Port 8083 und 8084) umleiten möchte, sodass ich keine Ports mehr angeben muss. Dort funktioniert aber auch nur die erste Umleitung (von Port 8083 auf das Verzeichnis /fhem). Der Port 8084 leitet nicht auf /mobile weiter. Vielleicht kann ich es ja mit deiner Lösung begleichen.

Zu den SVG-Grafiken. Das hat Apache bei mir zu Beginn auch nicht gemacht. Ich musste zwei Codezeilen ergänzen. Ich poste sie nachher, sobald ich wieder zu Hause bin.

raimundl

#2
Hallo,

da meine Probleme fast identisch sind möchte ich mich hier gerne anschliessen.
Istsituation: Apache2 mit letsencrypt und DYNDNS auf RasPi und Port 443 geht auf gesichert auf Port 8083/fhem. Klappt problemlos.
Zwei Raspi mit je einem fhem im Heimnetzwerk von außen anzusprechen funktioniert auch, aber nur mit zwei verschiedenen dezidierten Portangaben nach der DYNDNS Adresse. Aufruf dann "xxxxxxxx.xxx:port" oder einer ohne Portangabe geht dann auf 443 und zweiter Raspi  mit dezidierten "xxxxxxxxx.xxx:port".

Meine Vorstellung ist aber, dass beide Raspi's über port 443 angesprochen werden und die Unterscheidung dann nach dem slash angegeben wird. Z.B.: RasPi1 "xxxxxxxxxxx.xxx/fhem1 und Raspi2 "xxxxxxxxxx.xxx/fhem2".

Das schaffe ich leider noch nicht!

LG

@bugster_de: vielleicht bitte das GELÖST aus Überschrift nehmen.
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

raimundl

Zitat von: bugster_de am 16 Januar 2017, 11:51:51
Problembeschreibung ist unten. teilweise Lösung habe ich nach kurzer Durchsicht des von FHEM generierten Sourcecode selbst gefunden

muß man im Apache Config File folgende, zwei Zeilen ergänzen
  ProxyHTMLExtended On
  ProxyHTMLEvents onclick



@bugster_de

Hi,

bin nun meiner Zielsetzung (s.o.) schon sehr nahe gekommen. Leider habe ich dasselbe Problem wie du gepostet hast, jedoch die Lösung mit

ProxyHTMLExtended On
ProxyHTMLEvents onclick

funktioniert bei mir nicht - oder ich mache wahrscheinlich noch etwas falsch.

Daher meine Bitte, könntest du die gesamte Apache Config posten.

Danke und LG

Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

Grinsekatze

@raimundl:
Wie hast Du das in deiner Config gelöst? Hast Du in der Definition des Virtual-Hosts zwei Location-Angaben gemacht (für die beiden Pfade / FHEM-Installationen)? Denn das war bei mir zunächst das Problem, da ich das nicht tat - ich hatte für jeden Pfad einen eigenen Virtual-Host. Seitdem ich das umgeändert habe klappt bei mir alles (4 Instanzen auf Unterverzeichnisse gemapt, keine Portangaben mehr nötig, onclick und Plots funktionieren). Lediglich SSL muss noch nachgereicht werden. Das kommt aber später, wenn ich mal Zeit habe - im Prinzip habe ich die Vorgehensweise dafür schon.

raimundl

Hallo Grinsekatze,

danke für die rasche Antwort. SSL hat rasch und problemlos geklappt, mit den Einstellungen für fhem Weiterleitungen experimentiere ich seit einiger Zeit herum. Bin zwar schon weit gekommen , aber noch nicht am Ziel.
Meine große Bitte:
Könntest du mir eine Kopie deiner Konfig posten, damit ich mich besser orientieren kann. Bin eigentlich noch Neuling in dieser Materie.

Vielen Dank und LG
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

marvin78

@bugster_de: Das Attribut webname von FHEMWEB müsste dein Freund sein.

raimundl

#7
Zitat von: marvin78 am 23 Januar 2017, 14:43:49
@bugster_de: Das Attribut webname von FHEMWEB müsste dein Freund sein.

Hallo marvin78,

ich glaube, das ist auch die Lösung für mich. Habe es eben rasch so konfiguriert und schaut sehr gut aus - funktioniert!

Ich stelle daher meine Konfiguration hier vor, mit der Bitte, einen fachmännischen Blick darauf zu werfen und mir feedback zu geben:
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerName xxxxxxxxxxx.ddns.net
        ServerAdmin xxxxxxxxx@hotmail.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLCertificateFile /etc/letsencrypt/live/xxxxxxxxx.ddns.net/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/xxxxxxxxxx.ddns.net/privkey.p$
        Include /etc/letsencrypt/options-ssl-apache.conf

       ProxyRequests Off
       ProxyVia Off
       ProxyPreserveHost On

    <Location /fhem122>
        ProxyPass http://10.0.0.122:8083/fhem122
        ProxyPassReverse http://10.0.0.122:8083/fhem122
    </Location>

    <Location /fhem124>
        ProxyPass http://10.0.0.124:8083/fhem124
        ProxyPassReverse http://10.0.0.124:8083/fhem124
    </Location>

    <Location /fhem126>
        ProxyPass http://10.0.0.126:8083/fhem126
        ProxyPassReverse http://10.0.0.126:8083/fhem126
    </Location>

    <Proxy *>
        AuthType Basic
        AuthName "FHEM"
        AuthUserFile /etc/fhem-htpasswd
        Require valid-user
        Order deny,allow
        Allow from all
    </Proxy>

</VirtualHost>

</IfModule>






Danke und LG
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....


bugster_de

ich habe meinen ersten Beitrag oben mal geändert. Am WEB das attribut webname setzen und den Apache Proxy (mit oder ohne SSL) entsprechend konfigurieren.

Ich erreiche mein Haus jetzt unter
https://<meinhaus.de>/haus

und die Heizung unter
https://<meinhaus.de>/heizung

Genau so soll es sein