Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

Sidey

Zitat von: kennymc.c am 29 Juni 2022, 19:40:38
Ich möchte wie erwähnt, dass Fhem nur über ein Netzwerk Interface erreichbar ist, da mein Server mehrere NICs besitzt und Fhem momentan über alle erreichbar ist.

Bevor wir uns hier missverstehen.
Hat der Host mehrere Netzwerkkarten oder der Container?

Momentan ist das WEB Device so definiert:
WEB FHEMWEB 8083 global
Wenn ich es auf WEB FHEMWEB 8083 192.168.1.203 ändere bekomme ich das genannte Problem mit dem Health Check.
[/quote]

Ist 192.168.1.203 die Adresse des Hosts oder des Containers?
Meist laufen die Adressen der Container in anderen Subnetzen als 192.168., daher die Nachfrage.


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

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

kennymc.c

Der Host hat mehrere Interfaces und der Container läuft auch im Host Mode also sollte auch kein Subnet für diesen Container existieren. 192.168.1.203 ist eine zugewiesene IP vom Router für eines der Interfaces.

Sidey

Zitat von: kennymc.c am 29 Juni 2022, 23:05:51
Der Host hat mehrere Interfaces und der Container läuft auch im Host Mode also sollte auch kein Subnet für diesen Container existieren. 192.168.1.203 ist eine zugewiesene IP vom Router für eines der Interfaces.


Okay verstehe.
Also es geht nicht, weil der Healthcheck versucht mit localhost zu verbinden, das aber nicht erlaubt ist:

https://github.com/fhem/fhem-docker/blob/890aff9e85cbaf3cc406c7b7979baa58f9d072c8/src/health-check.sh#L47


Wenn Du eine weitere Webdefinition erstellst und diese auf localhost bindest, sollte es gehen.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

kennymc.c

#1608
Ich hab jetzt ein neues WEB Device für Port 8085 erstellt und statt global localhost angegeben. Allerdings bleibt der Health Status trotzdem auf unhealthy. Muss ich den Port noch irgendwo angeben oder wird immer Port 8083 dafür genutzt und ich muss meinen Hauptport ändern? Auf dem Server und im Container kann ich auf Fhem via Port 8085 zugreifen.

Sidey

Zitat von: kennymc.c am 30 Juni 2022, 20:20:13
Ich hab jetzt ein neues WEB Device für Port 8085 erstellt und statt global localhost angegeben.

Laut Commander muss dort eine IP Adresse angegeben werden.
In deinem Fall wäre das 127.0.0.1

Der Healthcheck findet den konfigurierten Port automatisch.

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

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

kennymc.c

Leider auch mit 127.0.0.1 statt localhost das selbe Problem

Sidey

Zitat von: kennymc.c am 01 Juli 2022, 19:09:22
Leider auch mit 127.0.0.1 statt localhost das selbe Problem

Ich habe das nachgestellt und konnte keinen Fehler finden.

Ich brauche dafür wohl mehr Details.

Kannst Du deine fhem.cfg und deine docker-compose Datei bereitstellen?

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

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

kennymc.c

Docker läuft bei mir über Unraid. Der Befehl zum Starten des Containers ist:

/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker create --name='fhem' --net='host' -e TZ="Europe/Berlin" -e HOST_OS="Unraid" -e HOST_HOSTNAME="smartserver" -e HOST_CONTAINERNAME="fhem" -e 'CPAN_PKGS'='IO::Socket::SSL IO::Socket::Multicast XML::Simple Data::Peek Net::FTPSSL' -e 'LOGFILE'='./log/fhem-%Y-%m.log' -e 'FHEM_UID'='1007' -e 'FHEM_GID'='100' -e 'DOCKER_HOST'='192.168.1.203' -l net.unraid.docker.managed=dockerman -v '/mnt/user/appdata/fhem/':'/opt/fhem':'rw' --restart always --name fhem 'ghcr.io/fhem/fhem/fhem-minimal-docker:bullseye'


Die fhem.cfg ist im Anhang

elle

#1613
Hallo zusammen,

um ein wenig Strom zu sparen, bin ich gerade dabei, meinen zentralen Server, auf dem u.a. FHEM derzeit als LXC Container laeuft, auf einen Raspi4 mit dietpi (Debian bullseye) als HostOS umzuziehen.

Dabei moechte ich u.a. FHEM als docker Container betreiben, aber habe mit dem /opt/fhem Volume ein seltsames Problem, das ich mir nicht erklaeren kann.


  • Volume fhem angelegt:
docker volume create fhem
  • Erstellung und Start des Containers:
docker run -d --name FHEM -p 8083:8083 -p 7072:7072 -p 8084:8084 -v fhem:/opt/fhem fhem /fhem:bullseye --restart unless-stopped


Das Teil laeuft und ist auch aus meinem LAN problemlos erreichbar:

root@heart:~# docker ps                                                                                                                                     
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS                    PORTS                                     
                                                                                                                                      NAMES                 
15c95a2422f6   fhem/fhem:bullseye             "/entry.sh start"        16 minutes ago   Up 16 minutes (healthy)   0.0.0.0:7072->7072/tcp, :::7072->7072/tcp,
0.0.0.0:8083-8084->8083-8084/tcp, :::8083-8084->8083-8084/tcp                                                                         FHEM                   


Um nun einige Customdateien aus meinem laufenden FHEM zu nutzen, habe ich sie in das Volumeverzeichnis auf dem Host kopiert, z.B.:

root@heart:~# rsync -av shc:/opt/fhem/FHEM/99_myUtils* /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM
root@heart:~# chown -R 6061:6061  /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM/99_myUtils* && ls -ltr /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM/99_myUtils*
-rw-r----- 1 6061 6061  11769 Feb  5 14:25 /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM/99_myUtils_IAC.pm.orig
-rw-r----- 1 6061 6061  15452 Apr 22 10:54 /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM/99_myUtils.pm
-rw-r----- 1 6061 6061  12572 Apr 28 22:07 /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM/99_myUtils_IAC.pm
-rw-r----- 1 6061 6061 151582 Jul 18 13:01 /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM/99_myUtils_Shutter.pm


Gehe ich mit

docker exec -it FHEM /bin/bash

in den Container hinein und liste mir die Dateien in /opt/fhem/FHEM, sehe ich die Dateien auch:

root@15c95a2422f6:/opt/fhem# ls -ltr FHEM/99_my*
-rw-r----- 1 fhem fhem  11769 Feb  5 14:25 FHEM/99_myUtils_IAC.pm.orig
-rw-r----- 1 fhem fhem  15452 Apr 22 10:54 FHEM/99_myUtils.pm
-rw-r----- 1 fhem fhem  12572 Apr 28 22:07 FHEM/99_myUtils_IAC.pm
-rw-r----- 1 fhem fhem 151582 Jul 18 13:01 FHEM/99_myUtils_Shutter.pm

Aber FHEM sieht sie nicht mit Eingabe von z.B.

reload 99_myUtils

oder

{`ls -ltr /opt/fhem/FHEM`}


Hat jemand eine Idee (vielleicht war das ja schon Thema in diesem Thread, aber bei 100+ Seiten koennte ich das uebersehen haben), woran das liegen koennte?!

Ich bin ratlos, allerdings auch noch nicht so in docker bewandert - Linux ist kein Problem fuer mich ...

Gruss
/elle

kadettilac89

Zitat von: elle am 03 August 2022, 14:44:52
Hat jemand eine Idee (vielleicht war das ja schon Thema in diesem Thread, aber bei 100+ Seiten koennte ich das uebersehen haben), woran das liegen koennte?!


Ich selbe nutze kein docker run sondern docker-compose. Darum kann es sein dass mein Vorschlag nichts bringt.

Teste mal
1) Ohne ein eigenes volume sondern nur -v /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM:/opt/fhem (oder halt den persistenen Ordner mit deinen Daten)
2) welches Image ist das, sollte es nicht "docker ..... pull fhem/fhem:bullseye .... heißen? Du hast in deinem List ein Leerzeichen drin.


docker run -d --name FHEM -p 8083:8083 -p 7072:7072 -p 8084:8084 -v <vollständiger Pfad>/fhem:/opt/fhem pull fhem/fhem:bullseye --restart unless-stopped


Beim ersten Starten (erzeugen des Containers) von Fhem werden die Rechte gesetzt. Ich könnte mir vorstellen, dass hier bei deinen Schritten <Volume erstellen> - Rsync - Container starten ... Berechtigungen erneut gesetzt oder verbogen werden. Teste mal mit dem "nackten" docker run ob du  die Files siehst und ob du mit der demo-Config starten kannst. Erst dann würde ich mit dem reinkopieren deiner alten Installation beginnen.

elle

Hi kadettilac89,

Zitat von: kadettilac89 am 03 August 2022, 21:18:06
Teste mal
1) Ohne ein eigenes volume sondern nur -v /mnt/dietpi_userdata/docker-data/volumes/fhem/_data/FHEM:/opt/fhem (oder halt den persistenen Ordner mit deinen Daten)
Das scheint tatsaechlich den Unterschied zu machen - ich werd' bekloppt... :o
Zitat
2) welches Image ist das, sollte es nicht "docker ..... pull fhem/fhem:bullseye .... heißen? Du hast in deinem List ein Leerzeichen drin.
Da scheint wohl beim Kopieren die Forensoftware ein Leerzeichen gekauft zu haben - im Originalaufruf ist das nicht mit drin ...

docker run -d --name FHEM -p 8083:8083 -p 7072:7072 -p 8084:8084 -v <vollständiger Pfad>/fhem:/opt/fhem pull fhem/fhem:bullseye --restart unless-stopped

So geht es tatsaechlich!
Zitat
Beim ersten Starten (erzeugen des Containers) von Fhem werden die Rechte gesetzt. Ich könnte mir vorstellen, dass hier bei deinen Schritten <Volume erstellen> - Rsync - Container starten ... Berechtigungen erneut gesetzt oder verbogen werden. Teste mal mit dem "nackten" docker run ob du  die Files siehst und ob du mit der demo-Config starten kannst. Erst dann würde ich mit dem reinkopieren deiner alten Installation beginnen.
Einfach reinkopieren werde ich nicht, sondern die Gelegenheit nutzen, aufzuraeumen und einiges zu optimieren. Da ist einiges doch mittlerweile recht wild gewachsen und bedarf einer Ueberarbeitung ... ;-)

Ausserdem aendert sich an anderen Stellen im System einiges, dass auch Einfluss auf FHEM hat - wie z.B., dass ich nicht mehr Unifi Video nutze (gibt es nicht fuer arm), sondern auf motioneye wechsele ...

Auf jeden Fall nochmal danke fuer den Schubser - auch wenn mir noch nicht so ganz klar ist, warum docker da nicht direkt auf das durch das Volume definierte Verzeichnis zugreift und vor allem im Filesystem des Containers alles richtig zu sein scheint - nur fhem.pl etwas voellig anderes sieht (wo auch immer das liegen mag) - verstehen wuerde ich es schon ganz gerne ...

Dann kann es ja morgen weitergehen - erst mal weiter mit ein bisschen Rose das Hirn fuer neue Schandtaten kuehlen  :)

/elle

MichaelS

Hallo allerseits,
ich schreibe jetzt auch mal rein da mein funktionierender Alexaskill nicht mehr will, seit dem update, und ich schon ewig an der Reaktivierung sitze.

(Habe den PI geupdatet und sonst alle container als "latest" -> Aktuellste Versionen parat)

Ich nutze docker-compose und damit die Beschreibung/Images von: https://github.com/fhem/alexa-fhem-docker.
Die container wurden alle gebaut, wobei ich direkt beim prüfen des "alexa-fhem"'s (MEINE_FHEM_IP:3000/) so etwas sehe:
{"header":{"namespace":"Alexa.ConnectedHome.Control","name":"UnsupportedOperationError","payloadVersion":"2","messageId":"04a3ee4d-b969-4489-9a74-d19c47d61eda"},"payload":{}}

1.) Könnte der Fehler dort bereits liegen?

In der FHEM-Weboberfläche habe ich den skill removed und neu aufgespielt.
Komisch ist dann bereits, dass alexaFHEM.ProxyConnection nicht bei den Readings erscheint... (der war vorher ja da und sollte dort immer erscheinen (?))

Den host habe ich natürlich auch im skill verknüpft ("attr Alexa alexaFHEM-host alexa-fhem"). Außerdem meine login credentials ("attr alexa alexaFHEM-auth user:pass")

Die alexa logs zeigen mir:
Unknown cipher type '/tmp/alexa-fhem.cfg'
in einer Endlosschleife.

Im logfile sehe ich das kein Zugriff auf den port 22 möglich ist:
2022.08.19 19:47:21.031 3: alexa: using ssh cmd /usr/bin/ssh alexa-fhem
ssh: connect to host alexa-fhem port 22: Connection refused
ssh: connect to host alexa-fhem port 22: Connection refused
2022.08.19 19:47:21.130 2: alexa: starting alexa-fhem: /usr/bin/ssh alexa-fhem  -c /tmp/alexa-fhem.cfg
2022.08.19 19:47:21.137 3: alexa: starting
2022.08.19 19:47:21.150 3: alexa: using logfile: ./log/alexa-2022-08-19.log
2022.08.19 19:47:21.164 3: alexa: read: end of file reached while sysread
2022.08.19 19:47:21.164 3: alexa: stopped


Ich denke das sollte euch für einen ersten Einblick reichen. Freue mich auf professionelle Hilfe :)

Grüße Michael

Sidey

Zitat von: MichaelS am 19 August 2022, 19:52:38
Hallo allerseits,
ich schreibe jetzt auch mal rein da mein funktionierender Alexaskill nicht mehr will, seit dem update, und ich schon ewig an der Reaktivierung sitze.


Was steht denn im logfile von dem alexa-fhem-container?
Könntest ja auch mal das configfile posten, welches im alexa-fhem Container liegt.

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

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

MichaelS

ZitatWas steht denn im logfile von dem alexa-fhem-container?

[8/19/2022, 7:37:51 PM] ERROR: SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at Server.processBody (/usr/local/lib/node_modules/alexa-fhem/lib/server.js:327:26)
    at Server.<anonymous> (/usr/local/lib/node_modules/alexa-fhem/lib/server.js:338:33)
    at IncomingMessage.emit (events.js:412:35)
    at endReadableNT (internal/streams/readable.js:1333:12
    at processTicksAndRejections (internal/process/task_queues.js:82:21) from ::ffff:172.27.0.1
[8/19/2022, 7:37:51 PM] <<<< [srv] {"header":{"namespace":"Alexa.ConnectedHome.Control","name":"UnsupportedOperationError","payloadVersion":"2","messageId":"04a3ee4d-b969-4489-9a74-d19c47d61eda"},"payload":{}}


mein config file sieht so aus:

{
  "alexa": {
    "port": 3000,
    "name": "Alexa",
    "ssl": false,
    "keyFile": "/certs/alexa-fhem.key",
    "certFile": "/certs/alexa-fhem.crt",
    "nat-pmp": "",
    "nat-upnp": false,
    "applicationId": "amzn1.ask.skill.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
    "oauthClientID": "amzn1.application-oa2-client.XXXXXXXXXXXXXXXXXXXXXXXXXXXX$
  },
  "connections": [
    {
      "name": "FHEM",
      "webname": "fhem",
      "filter": "alexaName=..*",
      "uid": "6062",
      "port": "8083",
      "server": "fhem"
    }
  ]
}



Sidey

Zitat von: MichaelS am 20 August 2022, 07:17:01
[8/19/2022, 7:37:51 PM] ERROR: SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at Server.processBody (/usr/local/lib/node_modules/alexa-fhem/lib/server.js:327:26)
    at Server.<anonymous> (/usr/local/lib/node_modules/alexa-fhem/lib/server.js:338:33)
    at IncomingMessage.emit (events.js:412:35)
    at endReadableNT (internal/streams/readable.js:1333:12
    at processTicksAndRejections (internal/process/task_queues.js:82:21) from ::ffff:172.27.0.1
[8/19/2022, 7:37:51 PM] <<<< [srv] {"header":{"namespace":"Alexa.ConnectedHome.Control","name":"UnsupportedOperationError","payloadVersion":"2","messageId":"04a3ee4d-b969-4489-9a74-d19c47d61eda"},"payload":{}}



Kannst Du das Log vom Containerstart bis zu den Fehlern posten?
Mit dem Ausschnitt kann ich zumindest nichts anfangen.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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