solectrus / hosting

Step-by-stypes guides for installing and hosting Solectrus
9 stars 4 forks source link

Intigration iobroker VIS #49

Closed jd172 closed 2 months ago

jd172 commented 2 months ago

Hallo- Ich würde das App gerne in meine iobroker VIS Anzeige intigrieren. Ich erhalte jedoch vom Browser die Meldung, dass die Verbindung von der IP abgelehnt wurde. Wahrscheinlich ist das einbetten nicht zugelassen. Kann man da was machen?

ledermann commented 2 months ago

Ja, standardmäßig erlaubt SOLECTRUS keine Einbettung in ein iframe. Du musst den Host (also deinen ioBroker) explizit freigeben, siehe hier:

https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/.env#L26-L27

Nicht vergessen: Nach jeder Änderung in der .env alles neu starten mit docker compose up -d

jd172 commented 2 months ago

 

Vielen Dank für de schnelle Antwort. Komme leider nicht weiter. Ich habe die .env angepasst:

 

Optional: Allow iframe embedding

FRAME_ANCESTORS=http://192.168.1.120

 

Der Befehl: docker compose up -d funktioniert auf der Diskstation nicht. Ich habe die Container im Docker daher einzeln neu gestartet. Reicht das aus? Erfolg hatte ich leider nicht.

 

Gesendet: Mittwoch, 19. Juni 2024 um 13:08 Uhr Von: "Georg Ledermann" @.> An: "solectrus/hosting" @.> Cc: "jd172" @.>, "Author" @.> Betreff: Re: [solectrus/hosting] Intigration iobroker VIS (Issue #49)

 

Ja, standardmäßig erlaubt SOLECTRUS keine Einbettung in ein iframe. Du musst den Host (also deinen ioBroker) explizit freigeben, siehe hier:

https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/.env#L26-L27

Nicht vergessen: Nach jeder Änderung in der .env alles neu starten mit docker compose up -d

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

ledermann commented 2 months ago

Es muss zwingend ein docker compose up -d erfolgen, denn damit werden die Container ganz neu erstellt. Ein einfacher Neustart eines laufenden Containers (z.B. durch "docker container restart") genügt nicht), weil dadurch die Umgebungsvariablen nicht neu gelesen werden.

Auf Synology heißt es wegen alter Docker-Version vermutlich docker-compose up -d, also mit Bindestrich.

jd172 commented 2 months ago

Es hat jetzt ein paar mal funktioniert, aber komischerweise wird die Verbindung jetzt wieder blockiert. Gibt es noch eine Möglichkeit die Porteinstellung im Vorfeld zu ändern. Die 3000 ist bei mir schon für Grafana belegt.

ledermann commented 2 months ago

Wenn es erst funktioniert, später dann aber nicht mehr (mit "hat Verbindung abgelehnt"), dann kann es eigentlich nur am falschen Eintrag für FRAME_ANCESTORS liegen. Dieser muss wirklich genau dem Host entsprechen. Du kannst aber auch einfach http: in der .env eintragen, dann ist die Einbettung in alle Hosts erlaubt (die über http arbeiten). Also so:

# Optional: Allow iframe embedding
FRAME_ANCESTORS=http:

Details dazu hier: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors

Zum Port: Ja, den kann man ändern. Trage einfach bei den Ports der App in der docker-compose.yml den gewünschten Port ein, z.B. so:

ports:
  - 3333:3000

Dann lässt sich SOLECTRUS über Port 3333 aufrufen (während der Container intern weiterhin auf 3000 läuft, aber das stört nicht).

Und nicht vergessen, nach jeder Änderung an der Config: docker-compose up -d

jd172 commented 2 months ago

Komischerweise läufts jetzt wieder. Das mit dem Port hat auch funktioniert. Vielen Dank.

ledermann commented 2 months ago

Ok, dann schließe ich das hier