FHEMWEB - CORS 0 / 1 - Proxy für fhem und tabletui auf apache

Begonnen von chris1284, 03 Juli 2015, 20:02:58

Vorheriges Thema - Nächstes Thema

chris1284

Hallo,

ich möchte von außen auf fhem zugreifen (fhemweb-frontend). das funktioniert soweit. ich möchte nun jedoch über eine website (tabletui) von einen apache daten aus fhem holen.
dies geht wenn ich CORS 1 aktiviere. Die widgets holen sich zb die aktuellen readings von sensoren, schalten geht. Ist CORS jedoch 1  kann ich nicht mehr per Apache und ProxyPass/ProxyPassReverse auf fhem zugreifen (bad gateway - The proxy server received an invalid response from an upstream server).

die tabletui-website sieht so aus dass ich quasi tablet ui und alles von opt/fhem/www nach /var/www geschoben und im Tabletui die pfad zu den jarfiles angepasst habe um dem webserver nicht zugriff auf das fhem verzeichnis zu geben.

zusammengefast:
cors 0 - zugriff auf fhem aus dem internet per proxy erreichbar / tablet ui greift keine daten ab
cors 1 - zugriff auf fhem aus dem internet nicht möglich / tablet greift daten von fhem ab

wie kann ich hinbekommen das beides geht?

rudolfkoenig

Ohne tiefer nachgedacht zu haben: 2 FHEMWEB Instanzen anlegen, eins mit CORS=0 und eins mit CORS=1

chris1284


radex23

Hallo,
ich muss das Thema leider noch pushen, da ich keine konkrete Antwort (google, als auch im Forum) auf die Frage TabletUI auf einem externen Apache installieren bekommen habe.

Das Setup funktioniert nach der Anleitung unter http://10.0.0.5:8083/fhem/ftui/ Problemlos. (ftui per HTTPSRV auf ./www/tablet)
Wenn ich allerdings die kompletten Dateien von /tablet/* auf meinen Apache-Server verschiebe funktioniert es nicht. -> http://10.0.0.5/tablet

Ich weiß ja, dass die fhem.pl einen quasi Webserver unter dem WEB-Device öffnet -> 10.0.0.5:8083
Die in der standart-index.html hinterlegten Verweise weisen ja u.A. auf
    <link rel="stylesheet" href="/fhem/tablet/lib/jquery.gridster.min.css" />
    <script src="/fhem/pgm2/jquery.min.js" defer></script>
    <script src="/fhem/tablet/lib/jquery.toast.min.js" defer></script>

hin. Wobei mir da /fhem/ das "opt/fhem/www" Verzeichnis zu sein scheint.
In meiner Apache Installation habe ich die stylesheets und ähnliches, was mir von FTUI zu kommen scheint, angepasst.
    <link rel="stylesheet" href="./lib/jquery.gridster.min.css" />
    <link rel="stylesheet" href="./css/fhem-tablet-ui.css" />
    <script src="./lib/jquery.toast.min.js" defer></script>

funktioniert auch soweit; Bzw. kann ich über http://ip/tablet/css/fhem-tablet-ui.css darauf zugreifen.

Allerdings funktioniert hier das schalten nicht (per Toast:"Device not found"), und ich glaube das hier vllt. die Angabe des     <script src="/fhem/pgm2/jquery.min.js" defer></script> nicht funktioniert. Ich habe hier schon direkt die Adresse von fhem: ip:8083/pgm2.... versucht; klappt nicht.

Weiß hier einer von euch Rat?

rudolfkoenig

Evtl liegt es an websocket:- longpoll=websocket ist in FHEMWEB fuer Chrome Voreinstellug (es gab Probleme mit longpoll=1 unter Chrome 64)- Fuer websocket Proxy in Apache muss man was in Apache konfigurierenAnsonsten ist "funktioniert nicht" zu wenig, bitte in die JavaScript Console fuer Details schauen.

radex23

Danke,
auf den Tip hin, habe ich nochmals die console überprüft und das Problem gelöst.
Zum Webserver wurde per https eine Verbindung aufgebaut und die fhem Adresse mit http angegeben.
Das wollte tabletui nicht und hat die Verbindung daher nicht aufgebaut.

AndreM

Guten Abend,
sorry das ich nochmal nachfrage aber ich habe glaube ein Verständnis Problem. Soo....von Beginn an.

Nehmen wir an FHEM ist unter 192.xxx.xxx.xxx:8083 erreichbar und der Apache unter 192.xxx.xxx.xxx:8080

  • Man installiert ganz normal tablet-UI. Diese Daten sind dann unter /opt/fhem/www/tablet hinterlegt und können per 192.xxx.xxx.xxx:8083/fhem/xxx angezeigt werden.
  • Dann habe ich einen Apache laufen der auf das Verzeichnis /var/www/html zugreift.
ab hier stock es bei mir....

1.Frage
Was genau muss man konigurieren, dass ich die FHEM tabletUI per 192.xxx.xxx.xxx:8080 erreichen kann und auch die readings die ich auslesen möchte übertragen werden?

2.Frage
Welche Datei händelt den Datenaustausch zwischen der fhem Oberfläche und dem Webservice?

Schönen Gruß
Andre

rudolfkoenig

Von Apache zu FHEM kommt man z.Bsp. mit folgenden apache Anweisungen.
ProxyPass        /fhem  http://localhost:8083/fhem
ProxyPassReverse /fhem  http://localhost:8083/fhem


Zu den anderen Fragen kann ich nichts beitragen, ich gehe davon aus, dass sie besser im TableUI Forumsbereich aufgehoben waeren.

AndreM

Hallo Rudolf,
das heißt ich erstelle ein z.B. fhemweb.conf Datei (mit dem von dir genanntem Inhalt) im Apache-Ordner /sites-available und verlinke sie nach sites-enabled?

Anschließend wäre die "normale" fhem-Oberfläche über 192.xxx.xxx.xxx:8080 erreichbar?

Schönen Gruß
Andre

rudolfkoenig

Wohin genau die Zeilen gehoeren, hangt von der Konfiguration ab.
Ich wuerde sie im passenden VirtualHost Abschnitt einbauen, soweit einer exisitiert.

AndreM

Jo habs hinbekommen!! :o

Habe eine neue fhemweb.conf mit folgenden Inhalt in sites-available angelegt und nach sites-enabled verlinkt.

#Apache wartet auf Anfragen von Port 1111
Listen 1111
<VirtualHost *:1111>
        #Verweist zurück auf das Apacheverzeichnis mit der selbst gebauten Tablet-UI
        DocumentRoot /var/www/html

        #Verweist auf FHEM
        <Location /fhem>
                ProxyPass http://192.xxx.xxx.xxx:8083/fhem
                ProxyPassReverse http://192.xxx.xxx.xxx:8083/fhem
        </Location>

</VirtualHost>


Im DocumentRoot (siehe code) von Apache habe ich meine tablet-Ui hinein kopiert (nur kopirt nicht verlinkt: /var/www/html/tablet)
Diese ist jetzt inkl. fhem-readings über der ReverseProxy 192.xxx.xxx.xxx:1111/tablet verfügbar.


Jetzt muss ich interessehalber nur herausfinden wie der Datenaustausch stattfindet (siehe Frage 2 weiter oben).


Danke Rudolf für deinen Gedanken anstoß. Das hat sehr geholfen.

Schönen Gruß
Andre