Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

Loredo

#615
Zitat von: persching am 06 Dezember 2019, 08:26:15
Neues Problem und ich weiß nicht woran es liegen könnte. Wenn ich in die fhem-Befehlszeile ein "update" eintippe, dann bekomme ich folgende Fehlermeldung:

2019.12.06 08:21:54.756 1 :
2019.12.06 08:21:54.757 1 : fhem
2019.12.06 08:21:58.765 1 : https://fhem.de/fhemupdate/controls_fhem.txt: Can't connect(1) to https://fhem.de:443: IO::Socket::INET: connect: timeout
2019.12.06 08:21:58.768 1 :
2019.12.06 08:21:58.769 1 : fhemabfall
2019.12.06 08:22:01.027 1 : nothing to do...


Warum bekomme ich keine Verbindung zu fhem.de hin? muss ich für den Container noch den Port 443 zugänglich machen?


Meine Vermutung: Du benutzt Docker mit IPv6 und das ist nicht ganz trivial. So wie es aussieht scheitert der Verbindungsaufbau über IPv6 und Perl nimmt glaube ich kein Fallback auf IPv4 vor.


Zitat von: Master_Nick am 06 Dezember 2019, 10:58:47Wobei ich mich gerade etwas wundere über das doppelt gemoppelte: https = 443 warum es dann nochmal hinten dran steht O_o


Doppelt gemoppelt ist da nichts, es überschreibt einfach nur die implizite Assoziation, dass https per Default über Port 443 läuft. Zufällig wird das eben auch mit 443 überschrieben und somit "statisch" festgelegt. Das eine legt den Port fest, das andere sorgt für einen verschlüsselten Verbindungsaufbau - zwei verschiedene paar Schuhe, rein technisch ;-)
Das ist in den HttpUtils von FHEM fest so implementiert.


Zitat von: OdfFhem am 08 Dezember 2019, 18:08:10Statt https://fhem.de/fhemupdate/controls_fhem.txt kann man auch http://fhem.de/fhemupdate/controls_fhem.txt nutzen; ist wohl derzeit auch der Standard im Docker-Image. Beide Varianten führen bei mir aber zum selben Ergebnis.


Aus dem Gedächtnis:
Das ist keine Eigenart des Docker Image, das ist allgemeiner FHEM Default, weil ganz früher(TM) gab es eben kein Update über HTTPS. 98_update.pm handhabt das abhängig von der Verfügbarkeit von den Crypto Libraries auf der lokalen Maschine speziell für die fhem.de Domain. Wenn man also http://fhem.de statt https://fhem.de drin stehen hat, dann wird trotzdem https verwendet, wenn die lokalen Libraries dafür verfügbar sind, ansonsten wird auf unverschlüsseltes http zurückgeschaltet, um trotzdem ein Update zu ermöglichen.

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

persching


Wernieman

Du könntest versuchen, IPv6 abzuschaltet .. jedenfalls für Docker ..
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

antonwinden

#618
Wie bekomme ich alexa-fhem installiert? Bei mir scheitert das immer mit folgenden ergebnis im event monitor:
2019-12-13 09:32:28.808 npmjs fhemServerNpm command 'npm getNodeVersion' in progress
2019-12-13 09:32:29.981 npmjs fhemServerNpm npm is up to date
2019-12-13 09:32:38.057 npmjs fhemServerNpm command 'npm install alexa-fhem' in progress
2019-12-13 09:32:38.096 Global global npmjs:BEGININSTALL fhemServerNpm alexa-fhem
2019-12-13 09:32:46.170 alexa alexa alexaFHEM: stopped; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
2019-12-13 09:32:46.178 Global global npmjs:FINISHINSTALL fhemServerNpm alexa-fhem
2019-12-13 09:32:46.193 npmjs fhemServerNpm installed: successful
2019-12-13 09:32:46.193 npmjs fhemServerNpm npm is up to date
2019-12-13 09:32:46.193 npmjs fhemServerNpm command 'npm outdated' in progress
2019-12-13 09:32:47.355 npmjs fhemServerNpm outdated: check failed
2019-12-13 09:32:47.355 npmjs fhemServerNpm error 'outdated'

und wenn ich das mache:
sudo npm install -g alexa-fhem
ergibt es:
udated 1 package in 0.437

aber alexa-fhem geht weiterhin nicht und im log steht
Error: Cannot find module 'commander'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object. (/usr/lib/node_modules/alexa-fhem/lib/cli.js:2:15)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)[\code]
Wenn ich dann einen statusrequest mach meint er dann wieder up-to-date und das spiel kann von vorne beginnen.
anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

persching

Zitat von: Wernieman am 13 Dezember 2019, 09:06:17
Du könntest versuchen, IPv6 abzuschaltet .. jedenfalls für Docker ..

ich hatte die ganzen IPv6 Sachen in der docker-compose.yml auskommentiert gehabt. Da war es auch nicht besser. Ich dachte dann, ich füge mal IPv6 hinzu, vielleicht funktioniert es ja dann, weil mein Anschluss wohl auf IPv6 ist (zumindest bekomme ich überall eine IPv6 Adresse angezeigt). Scheinbar macht das aber alles kein unterschied. :( Hab denn nur ich die Probleme??? Soll ich vielleicht mal ein docker system prune machen, damit mal alles neu gebildet wird? Sollte ja relativ problemlos funktionieren und es sollte auch nix dadurch verloren gehen...

Ranseyer

Hi,

ich könnte mal einen Tipp gebrauchen...

Es laufen zwei fhem-container:

    fhem:
        restart: always
        ports:
            - "8084:8084"
            - "7070-7074:7070-7074"
        image: fhem/fhem:latest
        volumes:
            - ./fhem/core/:/opt/fhem/
        networks:
            - fhem-network
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            TIMEOUT: 10
            RESTART: 1
            TELNETPORT: 7070
            TZ: Europe/Berlin
            CPAN_PKGS: "XML::Bare XML::Bare"
            APT_PKGS: "bash mc net-tools"
        depends_on:
            - "mysql"
            - "mqtt"


    fhem-realtime:
        restart: always
        ports:
            - "8083:8083"
            - "7075-7080:7075-7080"
        image: fhem/fhem:latest
        volumes:
            - ./fhem-realtime/core/:/opt/fhem/
        networks:
            - fhem-network
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            TIMEOUT: 10
            RESTART: 1
            TELNETPORT: 7075
            TZ: Europe/Berlin
            CPAN_PKGS: "XML::Bare XML::Bare"
            APT_PKGS: "bash mc net-tools"
        depends_on:
            - "mysql"


Telnet läuft bei "fhem" auf Port 7070. Bei "fhem-realtime" auf Port 7075.
Vom Dockerhost kann ich auf keinen der Telnet Ports zugreifen. Auf FHEM-Web klappt der Zugriff mit den Ports von oben aber problemlos.


Ein List auf den allowed_telnetPort:
Internals:
   CFGFN     
   FUUID      5df7b3a8-f33f-fc98-dad5-1f0d344908b8e215
   NAME       allowed_telnetPort
   NR         822
   STATE      validFor:telnetPort
   TYPE       allowed
   validFor   telnetPort
   READINGS:
     2019-12-16 17:41:12   state           validFor:telnetPort
Attributes:
   DbLogExclude .*
   globalpassword HxxxxxxxxxxxH
   validFor   telnetPort


Wenn ich vom Docker-Host eingebe:
Zitatroot@SRV:/opt/docker/fhem# telnet 192.168.1.2 7075
Trying 192.168.1.2...
telnet: Unable to connect to remote host: Connection refused

Hat sich mit der Dockergeschichte noch etwas geändert was ich übersehen habe?
(Das habe ich gelesen: https://github.com/fhem/fhem-docker/tree/775f854c3781f9b14f5e000fee9e7b3588e1686b#role-of-the-telnet-device-in-fhem)
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

Wernieman

        ports:
            - "8083:8083"
            - "7075-7080:7075-7080"


Hast Du fhem denn auch gesagt, das Telnet auf dem Port laufen soll?

Allerdings .. wenn Du vom Host selber auf die COntainer willst, brauchst Du die Ports nicht direkt zu exposen. Du kannst auch über docker-ip und Port "reinhüpfen"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Ranseyer

Zitat von: Wernieman am 16 Dezember 2019, 18:49:32
Hast Du fhem denn auch gesagt, das Telnet auf dem Port laufen soll?

Der Meinung bin ich schon !
(ed: das allowfrom habe ich erst später eingebaut, da kein Erfolg)

Internals:
   CONNECTS   422
   DEF        7075
   FD         8
   FUUID      5c645895-f33f-0eb4-037e-84e485e4fd6a2192
   NAME       telnetPort
   NR         35
   PORT       7075
   STATE      Initialized
   TYPE       telnet
   READINGS:
     2019-12-16 17:09:16   state           Initialized
Attributes:
   allowfrom  127/8, 192.168/16
   group      System
   icon       it_telephone
   room       8.00_Zentral




ZitatAllerdings .. wenn Du vom Host selber auf die COntainer willst, brauchst Du die Ports nicht direkt zu exposen. Du kannst auch über docker-ip und Port "reinhüpfen"
Da hast Du Recht ! Das Exponieren möchte ich später auch wieder rausnehmen wenn das alles sauber läuft...
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

Jackson

Zitat von: antonwinden am 13 Dezember 2019, 09:36:16
Wie bekomme ich alexa-fhem installiert? Bei mir scheitert das immer mit folgenden ergebnis im event monitor:
2019-12-13 09:32:28.808 npmjs fhemServerNpm command 'npm getNodeVersion' in progress
2019-12-13 09:32:29.981 npmjs fhemServerNpm npm is up to date
2019-12-13 09:32:38.057 npmjs fhemServerNpm command 'npm install alexa-fhem' in progress
2019-12-13 09:32:38.096 Global global npmjs:BEGININSTALL fhemServerNpm alexa-fhem
2019-12-13 09:32:46.170 alexa alexa alexaFHEM: stopped; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
2019-12-13 09:32:46.178 Global global npmjs:FINISHINSTALL fhemServerNpm alexa-fhem
2019-12-13 09:32:46.193 npmjs fhemServerNpm installed: successful
2019-12-13 09:32:46.193 npmjs fhemServerNpm npm is up to date
2019-12-13 09:32:46.193 npmjs fhemServerNpm command 'npm outdated' in progress
2019-12-13 09:32:47.355 npmjs fhemServerNpm outdated: check failed
2019-12-13 09:32:47.355 npmjs fhemServerNpm error 'outdated'

und wenn ich das mache:
sudo npm install -g alexa-fhem
ergibt es:
udated 1 package in 0.437

aber alexa-fhem geht weiterhin nicht und im log steht
Error: Cannot find module 'commander'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object. (/usr/lib/node_modules/alexa-fhem/lib/cli.js:2:15)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)[\code]
Wenn ich dann einen statusrequest mach meint er dann wieder up-to-date und das spiel kann von vorne beginnen.
anton


Da ich ja nicht der einzigen bin zum Thema permission und npm, muss ich das Thema nochmal highlighten....

https://forum.fhem.de/index.php/topic,89745.msg1000286.html#msg1000286

Wie kann man das Thema zu den Rechten im Container lösen?
FHEM5.9@RPI3

kadettilac89

Zitat von: Ranseyer am 16 Dezember 2019, 19:11:43

Internals:
   CONNECTS   422
   DEF        7075      <<<<---- global ??????
   FD         8
   FUUID      5c645895-f33f-0eb4-037e-84e485e4fd6a2192
   NAME       telnetPort
   NR         35
   PORT       7075
   STATE      Initialized
   TYPE       telnet
   READINGS:
     2019-12-16 17:09:16   state           Initialized
Attributes:
   allowfrom  127/8, 192.168/16
   group      System
   icon       it_telephone
   room       8.00_Zentral



Da hast Du Recht ! Das Exponieren möchte ich später auch wieder rausnehmen wenn das alles sauber läuft...


Define
define <name> telnet <portNumber> [global|hostname]
oder
define <name> telnet <servername>:<portNummer>

Erste Form, Server-mode:
Überwacht den TCP/IP-Port <portNummer> auf ankommende Verbindungen.


Wenn der zweite Parameter nicht angegeben wird, wird der Server nur auf Verbindungen von localhost achten.

>>>> Falls der zweite Parameter global ist, dann wird telnet auf allen lokalen Netzwerk-Interfaces zuhören,
ansonsten wird der Parameter als Hostname oder Adresse interpretiert, und nur diese lokale Adresse bedient. <<<<


Teste mal global ... ansonsten, netstat ob schon ein anderer Dienst auf diese Ports lauscht ... funktioniert es, wenn du nur einen Container startest?

mrfloppy

ZitatDa ich ja nicht der einzigen bin zum Thema permission und npm, muss ich das Thema nochmal highlighten....

https://forum.fhem.de/index.php/topic,89745.msg1000286.html#msg1000286

Wie kann man das Thema zu den Rechten im Container lösen?
Ebenso das selbe Problem.
RaspiMatic, RFXtrx433 E USB, Div. Thermostate, CUL433, Fhemduino, Signalduino, Temp/luftfeuchesensoren,Fensterkontakte,Intertechno Schalter,....... HM-IP

wiego

Hallo,

ich nutze das FHEM Docker Image mit Begeisterung auf einem RaspberryPi mit hypriot.
In Fhem nutze ich die  51_RPI_GPIO.pm und dessen Interrupt-Funktion um ein paar Signale direkt an den GPIOs am RaspberryPi zu empfangen.

Leider funktioniert genau dieser Interrupt nur, wenn ich wiringPi nachträglich manuell im laufenden Docker Image einbaue:

git clone git://git.drogon.net/wiringPi
cd wiringPi
./build



Ich hab dafür leider bisher für wiringPi kein APK gefunden, dass ich über Environments einbinden könnte.

Meine Frage ist jetzt, welche Möglichkeit gibt es, wiringPi in das Docker Image zu bekommen, so dass es bei jedem docker-compose up auch wieder eingebaut ist?

Danke und Grüße
wiego



Ranseyer

ZitatTeste mal global ... ansonsten

Danke das wars !
(Hatte ich auch schon mal probiert, damals aber noch ein weiteres Problem :-)

Morgen geht es weiter!
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

volschin

Zitat von: wiego am 18 Dezember 2019, 20:42:01
Hallo,

ich nutze das FHEM Docker Image mit Begeisterung auf einem RaspberryPi mit hypriot.
In Fhem nutze ich die  51_RPI_GPIO.pm und dessen Interrupt-Funktion um ein paar Signale direkt an den GPIOs am RaspberryPi zu empfangen.

Leider funktioniert genau dieser Interrupt nur, wenn ich wiringPi nachträglich manuell im laufenden Docker Image einbaue:

git clone git://git.drogon.net/wiringPi
cd wiringPi
./build



Ich hab dafür leider bisher für wiringPi kein APK gefunden, dass ich über Environments einbinden könnte.

Meine Frage ist jetzt, welche Möglichkeit gibt es, wiringPi in das Docker Image zu bekommen, so dass es bei jedem docker-compose up auch wieder eingebaut ist?

Danke und Grüße
wiego
Und warum nimmst Du bei einem Debian Image kein Debian Paket?
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

wiego

Und warum nimmst Du bei einem Debian Image kein Debian Paket?
Code: [Auswählen]

wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb


Stimmt, das ist schöner, Danke.

Was mir noch gefehlt hat, wo ich das einbaue? Hab es jetzt nach einigem Herumexperimentieren in das pre.init.sh script eingebaut und das im Docker-Compose.yml explicit gemountet:

        - ./data/fhem/pre-init.sh:/docker/pre-init.sh

Damit scheint es zu funktionieren.
Vielleicht hilft das nochmal jemanden.

Danke und Grüße
wiego