rdmtc / RedMatic

Node-RED packaged as Addon for the Homematic CCU3 and RaspberryMatic 🤹‍♂️
Apache License 2.0
534 stars 47 forks source link

httpStatic #50

Open Sineos opened 6 years ago

Sineos commented 6 years ago

Ich versuche gerade zusätzlichen Inhalt ins Dashboard zu bringen und scheitere an dem httpStatic Setting:

{
    "uiPort": 1880,
    "uiHost": "127.0.0.1",
    "flowFile": "flows.json",
    "userDir": "/usr/local/addons/redmatic/var",
    "httpRoot": "/addons/red",
    "httpStatic": "/media/sd-mmcblk0/red/public",
    "logging": {
        "ain": {
            "level": "debug",
            "metrics": false,
            "audit": false
        }
    }
}

Aug  8 23:03:46 homematic-raspi daemon.info node-red[2262]: Welcome to Node-RED
Aug  8 23:03:46 homematic-raspi daemon.info node-red[2262]: ===================
Aug  8 23:03:46 homematic-raspi daemon.info node-red[2262]: Node-RED version: v0.18.7
Aug  8 23:03:46 homematic-raspi daemon.info node-red[2262]: Node.js  version: v8.11.3
Aug  8 23:03:46 homematic-raspi daemon.info node-red[2262]: Linux 4.14.50 arm LE
Aug  8 23:03:47 homematic-raspi daemon.info node-red[2262]: Loading palette nodes
Aug  8 23:03:50 homematic-raspi daemon.info node-red[2262]: node-red-contrib-ccu version: 1.1.16
Aug  8 23:03:50 homematic-raspi daemon.info node-red[2262]: Dashboard version 2.9.6 started at /addons/red/ui
Aug  8 23:03:51 homematic-raspi daemon.info node-red[2262]: Settings file  : /usr/local/addons/redmatic/lib/settings.js
Aug  8 23:03:51 homematic-raspi daemon.info node-red[2262]: HTTP Static    : /media/sd-mmcblk0/red/public
Aug  8 23:03:51 homematic-raspi daemon.info node-red[2262]: User directory : /usr/local/addons/redmatic/var

Das Setting funktioniert, aber der Zugriff nicht. Liegt das am lighthttp proxy?

hobbyquaker commented 6 years ago

Ja, das liegt am reverse proxy. Der lighttpd ist im Moment so geconft dass nur /addons/red auf /addons/red durchgereicht wird. Dein static Root ist aber /, das ist so nicht erreichbar. Ich mach mir mal Gedanken wie man das sauber lösen könnte.

hobbyquaker commented 6 years ago

Wär es für Dich ein gangbarer Weg das "außerhalb" von Redmatic zu bewerkstelligen? Sprich eine eigene lighttpd config anzulegen, z.B. /etc/config/lighttpd/static.conf die auf /addons/static /media/sd-mmcblk0/static bereitstellt? Falls ja kann ich Dir ne passende lighttpd config machen.

Sineos commented 6 years ago

Wäre super, vielen Dank. Wie das gelöst wird und wo letztlich httpStatic hin zeigt, bin ich völlig offen. Mir gehts rein um die Funktionalität noch zusätzliche Scripte, Bilder etc mit einbinden zu können.

Ich hab auch ein bisschen gespielt und eigentlich sollte es mit

alias.url = (
  "/aa" => "/domain_aa_site/"
  "/somewhere/else" => "/other/docroot/"
)

sowas gehen. Siehe auch http://guide.munin-monitoring.org/en/latest/example/webserver/lighttpd-proxy.html Habs aber nicht hinbekommen. Ist das redirect notwendig?

hobbyquaker commented 6 years ago

mod_alias ist leider in RaspberryMatic nicht aktiviert (siehe /etc/lighttpd/modules.conf). Hab grade mal so versucht:

$HTTP["url"] =~ "^/addons/static($|/)" {
  server.document-root = "/usr/local/"
}

Das funktioniert, allerdings wird /addons/static/ jetzt auch angehängt. Wenn man eine Datei /usr/local/addons/static/index.html anlegt ist sie über http://<ccu-adresse>/addons/static/index.html erreichbar. Find ich unschön, bin am überlegen ob es irgendwie besser geht oder ob man evtl doch den Node-RED Webserver dafür nutzen sollte. Problem mit dem httpStatic in Node-RED ist dass ich dann auch den httpAdminRoot ändern müsste, das ist auch unschön. Gib mir ein wenig Zeit zum nachdenken und experimentieren ;)

Sineos commented 6 years ago

Vielen Dank für deine Arbeit. Wäre schön wenns funktioniert, ist aber momentan nicht überlebenswichtig ;-)

hobbyquaker commented 6 years ago

So, noch bisschen rumprobiert, ich denk die einfachste - aber dennoch akzeptable - Lösung wäre:

in settings.json: "httpStatic": "/media/sd-mmcblk0/www",

Verzeichnis um Deine Files abzulegen: /media/sd-mmcblk0/www/addons/red/static/ - erreichbar dann unter http://<ccu-adresse>/addons/red/static/...

Sineos commented 6 years ago

Funktioniert. Vielen Dank. Magst du das als default setzen?

hobbyquaker commented 6 years ago

Ähm, jetzt bin ich verwirrt. Hab eben gesehen dass /media ein tmpfs ist: tmpfs on /media type tmpfs (rw,noatime) das heisst nach einem Reboot ist das weg? Anstatt ein Default zu setzen würde ich eher die httpStatic option im UI anbieten, ich weiss auch nicht ob das Filesystem layout auf der CCU3 1:1 gleich sein wird wie auf RaspberryMatic und außerdem muss der User ja eh noch manuell den addons/red/static Ordner erzeugen.

Sineos commented 6 years ago

Jup, ist weg nach einem Reboot - gerade getestet. In dem Fall wohl eher /usr/local/sdcard

Btw. hier mein Bastelstand. Wenn ich dazu komme mache ich ein Wiki draus: https://github.com/Sineos/node-red-contrib-weatherman

Sineos commented 6 years ago

https://github.com/Sineos/node-red-contrib-weatherman/blob/master/README_DE.md

Verlinken oder lieber den Inhalt rein kopieren?

hobbyquaker commented 6 years ago

ich würds der einfachheit halber verlinken, sonst müssen wir ja die bilder neu uploaden oder aufs andere repo referenzieren.

unixweb commented 5 years ago

Sorry dass ich nochmal diesen Issue aufmache. Ich hab in den Node-Red Setting folgendes drin "httpStatic": "/var/www/nodered", Leider wird nach jedem Reboot der Homematic das Verzeichnis gnadenlos gelöscht. Wo kann ich denn dauerhaft httpStatic hinlegen ?

zetzi1 commented 5 years ago

Hi, Ich habs so gemacht und klappt sehr gut "httpStatic": "/usr/local/sdcard/www",

dashboard testy 2

Sineos commented 5 years ago

@unixweb Anleitung hier folgen.

unixweb commented 5 years ago

Lieben Dank , jetzt funktioniert es. Bitte nehmt diese Konfiguration als eigenen Punkt in die Wiki Dokumentation auf. Ich probiere schon seit mehreren Tagen ein Verzeichnis anzulegen was schreibbar ist und wo ich auch noch eigene Scripts anlegen kann wo ich Bilder lokal speichern kann. Ziehe mit Bilder aus wttr.in die ich periodisch per Crontab hole und lokal speichere und vieles andere. Danke

bildschirmfoto 2018-11-30 um 12 37 00

psi-4ward commented 5 years ago

Feel free to add a wiki page :)

unixweb commented 5 years ago

Ahh okay, I did not know that I have the rights to this. Thanks for info.

psi-4ward commented 5 years ago

Im Wiki kann jeder ohne weiteren PullRequest beitragen. Einfach auf Edit bzw new Page klicken und los gehts. Für die offizielle Doku haben wir uns für PRs entschieden aber auch hier sind wir für jeden Beitrag dankbar.

maximusVII commented 4 years ago

Ich habe die Anleitung mehrfach durchgespielt und kriege immer folgende Fehlermeldung: Die Ressource von "https://ccu3/weather-icons/mycss/weather-icons.min.css" wurde wegen eines MIME-Typ-Konfliktes ("text/html") blockiert (X-Content-Type-Options: nosniff).

Ich bin um jede Hilfe sehr dankbar.