Offizielles FHEM Docker Basis Image für verschiedene Plattformen

Begonnen von Loredo, 28 Juli 2018, 21:24:57

Vorheriges Thema - Nächstes Thema

kadettilac89

Zitat von: Sidey am 11 September 2023, 12:41:38Welche Architektur verwendest Du denn? Es wird nur für AMD64 inkludiert.

Mir fallen solche Fehler leider nicht auf, da ich das Image ohne Bodens verwende:

Läuft auf AMD64.

npm -v liefert fehlendes Modul 'timers/promises'. Das "Internet" sagt man solle auf node16 upgraden.

Fakt 1: node 14 ist schon aus der Wartung
Fakt 2: das verwendete Installationsscript "SCRIPT DEPRECATION WARNING"
Fakt 3: die neue Installationsroutine ist erst Node16 aufwärts verfügbar. Kompatibel zu gassistand? Alexa*-Module? ... https://github.com/nodesource/distributions#installation-instructions

Fraglich ob es lohnt hier das Dockerfile noch anzupassen wenn du sowieso nur noch mit "minimal" ohne diese Zusatzmodule weiter machen willst. Ggf. kannst du ein Rollback machen und die alte Version wieder in Dockerhub / Github als latest einchecken.

Ich habe nicht weiter mit dem Installationsscript getestet, ich bleibe auf einer älteren Version. Es gibt ja keine Probleme mit dem Container, es war nur eine neuere Basisversion von Debian.

Fehler (einfach npm -v)
npm -v
/usr/lib/node_modules/npm/lib/es6/validate-engines.js:31
    throw err
    ^

Error: Cannot find module 'timers/promises'
Require stack:
- /usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/util.js
- /usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/index.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/remote.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/entry.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/index.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/fetch.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/index.js
- /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/lib/index.js
- /usr/lib/node_modules/npm/lib/utils/replace-info.js
- /usr/lib/node_modules/npm/lib/utils/error-message.js
- /usr/lib/node_modules/npm/lib/utils/exit-handler.js
- /usr/lib/node_modules/npm/lib/cli-entry.js
- /usr/lib/node_modules/npm/lib/cli.js
- /usr/lib/node_modules/npm/bin/npm-cli.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15)
    at Function.Module._load (internal/modules/cjs/loader.js:774:27)
    at Module.require (internal/modules/cjs/loader.js:1003:19)
    at require (internal/modules/cjs/helpers.js:107:18)
    at Object.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/agent/                                                                                      lib/util.js:3:16)
    at Module._compile (internal/modules/cjs/loader.js:1114:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10)
    at Module.load (internal/modules/cjs/loader.js:979:32)
    at Function.Module._load (internal/modules/cjs/loader.js:819:12)
    at Module.require (internal/modules/cjs/loader.js:1003:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/util.js',
    '/usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/index.js',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/remote.js',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/entry.js                                                                                      ',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/index.js                                                                                      ',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/fetch.js',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/index.js',
    '/usr/lib/node_modules/npm/node_modules/npm-registry-fetch/lib/index.js',
    '/usr/lib/node_modules/npm/lib/utils/replace-info.js',
    '/usr/lib/node_modules/npm/lib/utils/error-message.js',
    '/usr/lib/node_modules/npm/lib/utils/exit-handler.js',
    '/usr/lib/node_modules/npm/lib/cli-entry.js',
    '/usr/lib/node_modules/npm/lib/cli.js',
    '/usr/lib/node_modules/npm/bin/npm-cli.js'
  ]
}

Sidey

Zitat von: kadettilac89 am 11 September 2023, 20:58:36npm -v liefert fehlendes Modul 'timers/promises'. Das "Internet" sagt man solle auf node16 upgraden.

Das gibt es nur für Node <= 14. Verstehe nicht wieso es jetzt zum Problem wird, aber letztendlich ist das ein weiteres Problem, mit dem installierten Node im FHEM Container. Angefangen hat das ganze ja irgendwie auf ARM Plattformen, dass es nicht mehr ging.

Zitat von: kadettilac89 am 11 September 2023, 20:58:36Fakt 3: die neue Installationsroutine ist erst Node16 aufwärts verfügbar. Kompatibel zu gassistand? Alexa*-Module? ... https://github.com/nodesource/distributions#installation-instructions
Node 16 ist auch schon veraltet. Alexa-Fhem funktioniert bei mir einwandfrei auf mit dem node-20.6 Image:

https://github.com/fhem/alexa-fhem-docker/tree/v5.0.5

Zitat von: kadettilac89 am 11 September 2023, 20:58:36Fraglich ob es lohnt hier das Dockerfile noch anzupassen wenn du sowieso nur noch mit "minimal" ohne diese Zusatzmodule weiter machen willst. Ggf. kannst du ein Rollback machen und die alte Version wieder in Dockerhub / Github als latest einchecken.

Ich verstehe die Idee, aber nur wegen dem Node Fehler das Image mit älteren Paketen zu verwenden empfinde ich nicht unbedingt als "gute" Idee.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Borkk

#1952
Zitat von: Sidey am 11 September 2023, 12:41:38Welche Architektur verwendest Du denn? Es wird nur für AMD64 inkludiert.

Mir fallen solche Fehler leider nicht auf, da ich das Image ohne Bodens verwende:

Ich habe alles auf einer Synology DS 220+ laufen. Bin von den RPI´s weg, wegen dem Speicher. In die Syno habe ich 32 GB gesteckt und ruhe ist :-)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Zitat von: Borkk am 12 September 2023, 09:33:00Ich habe alles auf einer Synology DS 220+ laufen. Bin von den RPI´s weg, wegen dem Speicher. In die Syno habe ich 32 GB gesteckt und ruhe ist :-)

Ich habe mir das angesehen. NPM 5.8 gibt es nicht mehr. Ein neueres NPM braucht auch ein neueres NodeJS. Irgendwo da wird vermutlich das Problem liegen.

Ich habe mal was probiert und ein Image zum Testen mit NPM 8.19 , NodeJS 16.20.2 gebaut:

ghcr.io/fhem/fhem-docker:3.3.0-rc1-bullseye
Ich freue mich über Rückmeldungen.


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

kadettilac89

feedback: node/npm fehler sind weg. gassistant startet wieder

Borkk

habe es mal aus der Ferne eingespielt. alexa-fhem lässt sich starten. Nur das NPM Paket lässt sich nicht updaten/upgraden

Package Name   Installed Version   Update Version   Upgrade Version
npm           8.19.4                   10.1.0           10.1.0
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Zitat von: Borkk am 14 September 2023, 22:09:08habe es mal aus der Ferne eingespielt. alexa-fhem lässt sich starten. Nur das NPM Paket lässt sich nicht updaten/upgraden

Du willst in einem Container auch keine Pakete upgraden, glaube mir :)
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Borkk

#1957
Ich glaube dir natürlich :-) Ich bin halt ein ordentlicher Mensch und schaue, dass in FHEM alle ,,Schilde" auf grün sind ;-). Es ist mir klar, dass dies flüchtig ist. Allerdings möchte ich positiv erwähnen, dass die FHEM Container bei mir eigentlich von Update zu Update sauber durchlaufen.

D.h. wenn du die Version 3.3.0 released, können wir wieder auf ...:latest umstellen?

Aber mal eine grundsätzliche Frage. Ich habe Homebridge in einem extra Container laufen und würde das im Grunde auch mit alexa-fhem machen können. Dann würde ich die Minimal Version des FHEM Docker Image nutzen. Macht das Sinn oder ist das quatsch. Ich hatte früher sogar in AWS einen Custom Skill am laufen, brauchte ihn aber nicht mehr, weil FHEM Connector alles konnte was ich brauche. Wie gesagt, eher eine grundsätzliche Frage, es läuft ja alles Prima auch wenn es nach einem Container Update manchmal etwas hakt.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Zitat von: Borkk am 15 September 2023, 10:11:11Es ist mir klar, dass dies flüchtig ist.
Das ist ein Punkt, aber du legst bei jeder Änderung einen neuen layer an. Die alten Daten werden nicht gelöscht.


Zitat von: Borkk am 15 September 2023, 10:11:11D.h. wenn du die Version 3.3.0 released, können wir wieder auf ...:latest umstellen?

Hmm, ja theoretisch.
Verlass dich aber nicht darauf, dass latest immer nodejs liefert.
Zitat von: Borkk am 15 September 2023, 10:11:11Aber mal eine grundsätzliche Frage. Ich habe Homebridge in einem extra Container laufen und würde das im Grunde auch mit alexa-fhem machen können. Dann würde ich die Minimal Version des FHEM Docker Image nutzen. Macht das Sinn oder ist das quatsch.

Das ergibt auf jeden Fall Sinn, denn der alexa-fhem image hat andere Updatezyklen als Perl und dass erneuert Du dann einfach wenn es ein neues nodejs oder alexa-fhem gibt.

Grüße
Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Borkk

#1959
Zitat von: Sidey am 15 September 2023, 18:10:51Das ergibt auf jeden Fall Sinn, denn der alexa-fhem image hat andere Updatezyklen als Perl und dass erneuert Du dann einfach wenn es ein neues nodejs oder alexa-fhem gibt.

Grüße
Sidey

Hallo Sidey,

meine Frage ist vielleicht ein wenig OffTopic aber evtl. kannst du mir ja dennoch helfen, zumal du das mit dem separaten alexa-fhem Image befürwortest. Ich würde gerne weiterhin den Community-Proxy verwenden, da die Einrichtung in AWS schon recht komplex ist und der Proxy gut funktioniert.

Ich habe also einen alexa-fhem Container aufgezogen und die .json Dateien entsprechend konfiguriert. Er startet, verbindet sich mit FHEM und bekommt auch Meldungen aus FHEM. In FHEM habe ich das Attribut alexaFHEM-host auf die IP Adressen des alexa-fhem Containers gelegt. (ich nutze in meinem Docker macVLAN Adressen). Scheinbar verbindet sich der Container auch mit dem Proxy.

[10/5/2023, 2:36:53 PM] *** SSH: proxy connection established
[10/5/2023, 2:36:53 PM] SSH: Welcome at the reverse proxy!  This pseudoshell does not react to any input - do not get irritated. 

Das alexa Modul meldet auch im Reading "alexaFHEM.ProxyConnection" running; SSH connected

Damit scheint es aber noch nicht getan zu sein, denn das alexa Modul in FHEM startet damit nicht. Im FHEM Log kommt immer:

ssh: connect to host 192.168.xxx.xxx port 22: Connection refused
2023.10.05 14:41:56 2: alexa: starting alexa-fhem: /usr/bin/ssh 192.168.xxx.xxx  -c /tmp/alexa-fhem.cfg
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Bitte entferne das Attribut "Attribut alexaFHEM-host"

alexa-fhem startet automatisch und verbindet sich mit dem in der JSON Datei angegebenen FHEM.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Borkk

Hallo Sidey,

Ich hab das Attribut in FHEM gelöscht, das Modul sieht nun so aus:

Du darfst diesen Dateianhang nicht ansehen.

Ich glaube das der alexa-fhem Docker Container sauber startet, zumindest sieht das log gut aus:

[10/6/2023, 12:04:58 AM] BearerToken '...4F737' read from alexa
[10/6/2023, 12:04:58 AM] 39_alexa.pm is new version: true
[10/6/2023, 12:04:58 AM] sshautoconf: completed successfully
[10/6/2023, 12:04:58 AM] *** SSH: proxy configuration set up done
[10/6/2023, 12:04:58 AM] Reading alexaFHEM.ProxyConnection set to starting;; starting SSH
[10/6/2023, 12:04:58 AM] [FHEM]   executing: http://192.168.23.230:8083/fhem?cmd=%7B%24defs%7B%22alexa%22%7D-%3E%7B%22active%22%7D%20%3D%201%3B%3Bundef%7D%3Bsetreading%20alexa%20alexaFHEM.ProxyConnection%20starting%3B%3B%20starting%20SSH%3B%7B%24defs%7B%22alexa%22%7D-%3E%7B%22active%22%7D%20%3D%200%3B%3Bundef%7D&fwcsrf=csrf_446694299222015&XHR=1
[10/6/2023, 12:04:58 AM] Starting SSH with -R 1234:127.0.0.1:42387 -oServerAliveInterval=90 -i /alexa-fhem/.ssh/id_rsa -p 58824 fhem-va.fhem.de
[10/6/2023, 12:04:59 AM] Reading alexaFHEM.ProxyConnection set to running;; SSH connected
[10/6/2023, 12:04:59 AM] [FHEM]   executing: http://192.168.23.230:8083/fhem?cmd=%7B%24defs%7B%22alexa%22%7D-%3E%7B%22active%22%7D%20%3D%201%3B%3Bundef%7D%3Bsetreading%20alexa%20alexaFHEM.ProxyConnection%20running%3B%3B%20SSH%20connected%3B%7B%24defs%7B%22alexa%22%7D-%3E%7B%22active%22%7D%20%3D%200%3B%3Bundef%7D&fwcsrf=csrf_446694299222015&XHR=1
[10/6/2023, 12:04:59 AM] *** SSH: proxy connection established
[10/6/2023, 12:04:59 AM] SSH: Welcome at the reverse proxy!  This pseudoshell does not react to any input - do not get irritated. 

Ich bekomme jetzt aber nicht den FHEM-Connector Skill in der Alexa App verknüpft.

Du darfst diesen Dateianhang nicht ansehen.

Das hatte ich schon mal, damals musste ich irgendwie einen key unregistrieren. Hier hänge ich jetzt irgendwie ....

 
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Ich habs... hab das alexa Modul in FHEM komplett gelöscht und wieder angelegt. Danach fluppt es einwandfrei.

Prima :-)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

kennymc.c

#1963
Ich habe ein Problem mit einem Fhem-Modul (bisher nicht öffentlich verfügbar), dass u.a. das Perl Modul Net::Rendezvous::Publish::Backend::Avahi benötigt. Sobald ich dieses Perl-Modul mit installieren lasse, stürzt Fhem kurz nach dem Start, vermutlich beim Laden dieses Moduls, mit dieser Meldung ab:
org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directoryIch habe es schon mit fhem-minimal-docker:3-bullseye und dem fhem:latest Image vom Docker Hub versucht. Als APT Packages sind zusätzlich avahi-daemon und avahi-tools installiert. Der Container läuft im Host Netzwerk.
Mir ist aufgefallen, dass /run/dbus auch gar nicht im Container existiert. Hab versucht dbus als APT Paket mit zu installieren und es auch mal mir privilegierten Rechten versucht aber bisher kein Erfolg. Geht das mit dem Docker Image überhaupt?

Edit: Hab es hinbekommen und mich an diese Anleitung gehalten: https://github.com/mviereck/x11docker/issues/271. Also /var/run/dbus/system_bus_socket als Volumen im Container mappen und --security-opt apparmor=unconfined als zusätzlichen Parameter

HansDampfHH

Ich nutze FHEM noch klassisch auf einem Intel NUC. Ich möchte aber gerne das System nach und nach in Docker Instanzen auf meine Synology portieren.
Mit Zigbee2Mqtt hatte ich angefangen. Vom NUC entfernt und in einem Docker Container angelegt, das ging reibungslos.

Ich würde nun erst gerne noch alexa-fhem in einem Docker Container mit dem noch klassischem FHEM verbinden. Das scheitert bisher.
Was habe ich gemacht:
- alexa-fhem per Docker Instanz bereitgestellt
- in der alexa-fhem Config auf meine FHEM Instanz auf dem NUC verwiesen

Ich sehe im Log von alexa-fhem bereits Meldungen über die Devices und Commandos.

Nun dachte ich, stelle ich noch in FHEM im alexa-Device alexaFHEM-host auf die Adresse des Docker-Containers um.
Das funktioniert aber nicht. Vielleicht habe ich die Zusammenhänge auch noch nicht verstanden.

Was muss ich am alexa-Device in FHEM noch einstellen/ändern?
Ist hier vielleicht Off-Topic, aber der letzte Schritt vor dem großen Umzug ;-)
FHEM Docker, CUL868, Zigbee, CCU2, Jeelink