Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

klugec

Zitat von: kadettilac89 am 11 März 2022, 08:27:28
Der Test mit dem @sha-Teil war dazu gedacht es generell zu testen. klugec hatte mit einer anderen github-Version einen Manifest-Error, ich konnte die Version mit amd64 aber ziehen. Der mit/ohne sha-Test sollte nur seine Installation von docker-compose bestätigen.

Wenn manifest cpu amd64 + arm64 enthält müsste es gehen. Da es neuere Github-Versionen gibt habe ich auch nicht mehr das ältere Image sondern ein aktuelles zum Testen vorgeschlagen. Wenn es mit dem neueren auch ohne @sha geht (Test von mir angefragrt) dann braucht es keiner weiteren Analyse.

Es funktioniert auch ohne den @sha teil. Nur so für mich, was bedeutet das jetzt?

Den anderen Link hatte ich aus Github
https://github.com/fhem/fhem-docker

docker pull ghcr.io/fhem/fhem/fhem-minimal-docker:buster
Raspberry Pi 4 8GB | TRADFRI | ALEXA | Debian Buster

Otto123

Zitat von: Sidey am 10 März 2022, 22:23:30
Kannst Du das etwas präziser benennen was undurchsichtig ist?
Ich will da niemanden angreifen, ich würde eher gern helfen, weiß aber nicht richtig wie. Ich weiß auch noch zu wenig... nicht nur von Docker sondern auch von Github  :-[
Aber wenn ich versuche als "Einsteiger" mir ein Bild zu machen welches FHEM Docker Image ich jetzt nutzen sollte?  ???
Die Frage taucht ja immer mal hier auf: welches Image nehme ich denn nun? So ganz knackig hat da aber keiner eine Antwort. ;)

Die Docker Hub Seite  - 10 Monate nichts passiert, da steht unten in der Ecke auch noch Production Build Error.
Ok von dort, oder über Suche, oder diesen Monsterthread findet man dann die Github Seite - die Readme ist mittlerweile von Dir aufgeräumt - danke! Da war in meinem Kopf noch der Zustand von Anfang des Jahres. :)

Ich habe versucht den Code (Dockerfile entry.sh usw.) in Struktur und Inhalt zu verstehen um Erkenntnisse für meine Tests zu gewinnen - schwierig. ;) alles Historisch gewachsen? ;)
mMn ist da auch Code drin, der nicht das macht was gedacht war -> zum Test:
ls willi.txt 2>&1>/dev/null      # normale Ausgabe unterdrückt, aber Fehler wird trotzdem ausgegeben
ls willi.txt >/dev/null 2>&1     # keine Ausgabe
ls willi.txt 2>/dev/null         # keine Ausgabe von Fehlern
Könnte mich ja wieder mal in Pullrequest üben ;)

Ich denke vor allem, es ist kein Basis Image. Und mit minimal wird doch versucht das Monster wieder zu reduzieren - oder? Aber mag sein ich verstehe es falsch. Wie gesagt: nur meine Gedanken - keine Kritik.
Wäre der umgekehrte Weg nicht besser? Wirklich Basis neu aufbauen anstatt zu versuchen einen "FHEM all in one PC" im Docker abzubilden?
Ich war selbst vor einem guten Jahr sehr froh über dieses Image, was einfach so funktionierte. Aber es steckt ja offenbar ein großer Wartungsaufwand dahinter.
Ich habe die Image Dockerphilosophie mittlerweile als einzelne Scheibchen und nicht als ganze Brote verstanden.  :D

Vielleicht auch diesen Thread schließen und einen neuen aufmachen?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: klugec am 11 März 2022, 09:54:24
Es funktioniert auch ohne den @sha teil. Nur so für mich, was bedeutet das jetzt?

Das bedeutet dass du jetzt eine funktionierende Configuration hast :)

Scheinbar ist bei dem anderen Image was falsch gewesen, beim Erstellen, testen ... was auch immer.

Otto123

Wenn man jetzt ein altes Image (wo alles drin war) in Verwendung hat und möchte auf ein neues umsteigen, sagen wir mal
docker pull ghcr.io/fhem/fhem/fhem-docker:bullseye
und man hat bisher alexa-fhem (Vereins) Connector im Einsatz. Was macht man dann genau?
-e NPM_PKGS="alexa-fhem" und alles rennt wieder?
Oder kann man auch https://github.com/fhem/alexa-fhem-docker als zweiten Container neben an stellen? Offenbar nicht? Zumindest stand das hier mal.
Auf der Github Seite steht zwar auch der Link zum Wiki, aber im Wiki wird alexa-fhem als Container nicht erwähnt und man suggeriert: alles muss in einer Maschine. ???

Ich mach das mit der Umstellung für jemand anderes, ich will mich da möglichst vorbereiten - selbst habe ich alexa nicht  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: Otto123 am 11 März 2022, 18:28:44
Wenn man jetzt ein altes Image (wo alles drin war) in Verwendung hat und möchte auf ein neues umsteigen, sagen wir mal
docker pull ghcr.io/fhem/fhem/fhem-docker:bullseye
und man hat bisher alexa-fhem (Vereins) Connector im Einsatz. Was macht man dann genau?
-e NPM_PKGS="alexa-fhem" und alles rennt wieder?
Oder kann man auch https://github.com/fhem/alexa-fhem-docker als zweiten Container neben an stellen? Offenbar nicht? Zumindest stand das hier mal.
Auf der Github Seite steht zwar auch der Link zum Wiki, aber im Wiki wird alexa-fhem als Container nicht erwähnt und man suggeriert: alles muss in einer Maschine. ???

Ich mach das mit der Umstellung für jemand anderes, ich will mich da möglichst vorbereiten - selbst habe ich alexa nicht  ;)

Ich nutze den Minimal-Docker in dem weder npm noch google-home drin ist. Da reicht der Parameter. Ich weiß nicht ob in dem von dir genannten Image npm mit drin ist. Vermutlich schon, dann kannst npm weg lassen.

Wenn npm im Image drin ist, kannst die Fhem Erweiterungen auch im node.js nachinstallieren. Ich meine System->node.js ... da "set outdated" und dann "set install alexa-fhem" in deinem FAll.


            NPM_PKGS: "npm gassistant-fhem"


Die Frage zu alexa im separaten Container kann ich nichts sagen, ich nutze kein alexa.

Sidey

Zitat von: Otto123 am 11 März 2022, 18:28:44
Wenn man jetzt ein altes Image (wo alles drin war) in Verwendung hat und möchte auf ein neues umsteigen, sagen wir mal
docker pull ghcr.io/fhem/fhem/fhem-docker:bullseye
und man hat bisher alexa-fhem (Vereins) Connector im Einsatz. Was macht man dann genau?
-e NPM_PKGS="alexa-fhem" und alles rennt wieder?
Ja das sollte prinzipiell so funktionieren, allerdings nehme ich an, dass es sich nicht auf allen Varianten installieren lässt, sonst hätte ich es nicht aus dem Build rausgenommen.


Zitat von: Otto123 am 11 März 2022, 18:28:44
Oder kann man auch https://github.com/fhem/alexa-fhem-docker als zweiten Container neben an stellen? Offenbar nicht? Zumindest stand das hier mal.
Ich habe alexa-fhem bisher ausschließlich über einen eigenen Container betrieben. Ich will doch nicht in meiner Hausautomatisierung einen direkten Zugriff von außerhalb.
Das funktioniert, wie im Thread beschrieben bis auf den automatischen restart des Prozesses, wobei ich den auch noch nie wirklich gebraucht habe.
Wenn das eine zwingend nötige Funktion ist, dann könnte man das aber sicherlich auch über eine named pipe oder einen http Endpunkt einbauen.

Zitat von: Otto123 am 11 März 2022, 18:28:44
Auf der Github Seite steht zwar auch der Link zum Wiki, aber im Wiki wird alexa-fhem als Container nicht erwähnt und man suggeriert: alles muss in einer Maschine. ???

Hmm ja, das stimmt. Das Wiki war vermutlich auch vor dem Container da.

Zitat von: Otto123 am 11 März 2022, 11:45:20
Aber wenn ich versuche als "Einsteiger" mir ein Bild zu machen welches FHEM Docker Image ich jetzt nutzen sollte?  ???
Die Frage taucht ja immer mal hier auf: welches Image nehme ich denn nun? So ganz knackig hat da aber keiner eine Antwort. ;)

Ich kann dokerhub leider nicht editieren, da mir die Berechtigungen fehlen. Die hat meines Wissens nach genau eine Person.
Würde hier eine Wiki Seite helfen die auf die Github Pages seite mit den dort veröffentlichten Images verweist?


Zitat von: Otto123 am 11 März 2022, 11:45:20
Ich denke vor allem, es ist kein Basis Image. Und mit minimal wird doch versucht das Monster wieder zu reduzieren - oder? Aber mag sein ich verstehe es falsch.
Wäre der umgekehrte Weg nicht besser? Wirklich Basis neu aufbauen anstatt zu versuchen einen "FHEM all in one PC" im Docker abzubilden?

Das Basis Image ist eher ein rundum Sorglos Paket, da gebe ich dir Recht.
Die Idee mit dem minimal Image kam mir, da ich den ganzen nodejs Krams im FHEM Image nicht brauche.

Ein Basis Image mit nur benötigtem aufzubauen fände ich durchaus interessant. Bisher ist mir aber nicht gelungen festzustellen was wird alles benötigt.
Als Anwender könnte ich erwarten, dass alles was mit dem mitgelieferten FHEM an Modulen dabei ist auch funktioniert. Das fängt bei der Vielzahl an PERL Modulen an, geht aber weiter da einige Module dann z.B. Python Kommandos aufrufen. Jetzt können wir natürlich das wiederum jedem selbst übelassen seine benötigten Module nach zu installieren, aber welchen Nutzen hat das image dann überhaupt wenn es jeder Modifizieren muss.

Zitat von: Otto123 am 11 März 2022, 11:45:20
Ich habe die Image Dockerphilosophie mittlerweile als einzelne Scheibchen und nicht als ganze Brote verstanden.  :D
Vielleicht auch diesen Thread schließen und einen neuen aufmachen?

1) Neuer Thread gerne
2) Für die Scheiben brächte es eine Art Erweiterungsmöglichkeit. Es gibt da ja Ansätze von linuxserver.io hinsichtlich Mods Gänzlich verstanden habe ich es allerdings nicht und es ist mindestens eine Umstellung und größerer Aufwand für die Nutzer des Images.

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

Otto123

Zitat von: kadettilac89 am 11 März 2022, 18:41:42
Ich nutze den Minimal-Docker in dem weder npm noch google-home drin ist. Da reicht der Parameter. Ich weiß nicht ob in dem von dir genannten Image npm mit drin ist. Vermutlich schon, dann kannst npm weg lassen.

            NPM_PKGS: "npm gassistant-fhem"

Wenn ich den Code richtig lese: ist es eigentlich noch "schlimmer/komfortabler" :) er installiert einfach alles nach: nur alexa-fhem angeben, nodejs und npm kommen von selbst. also NPM_PKGS: "gassistant-fhem" sollte reichen. Aber eigentlich will ich das so nicht.
ZitatDie Idee mit dem minimal Image kam mir, da ich den ganzen nodejs Krams im FHEM Image nicht brauche.
Genau!
Ich denke Java und nodejs waren der Ausgangspunkt für die Entwicklung von docker. ;) Keiner will sich selbst um nodejs kümmern müssen. Insofern muss die Strategie sein: separate Container für jede nodejs Anwendung!
Aber im Falle alexa-fhem finde ich nur immer den Hinweis: der "Vereinsconnector " braucht alexa-fhem lokal - oder sagt bloß keiner wie es genau geht?
Na gut ich werde es testen  :-\ oder mich ergeben.
ZitatEin Basis Image mit nur benötigtem aufzubauen fände ich durchaus interessant. Bisher ist mir aber nicht gelungen festzustellen was wird alles benötigt.
Als Anwender könnte ich erwarten, dass alles was mit dem mitgelieferten FHEM an Modulen dabei ist auch funktioniert. Das fängt bei der Vielzahl an PERL Modulen an, geht aber weiter da einige Module dann z.B. Python Kommandos aufrufen. Jetzt können wir natürlich das wiederum jedem selbst übelassen seine benötigten Module nach zu installieren, aber welchen Nutzen hat das image dann überhaupt wenn es jeder Modifizieren muss.
Ich bin jetzt seit meinem ersten Schritt Anfang März auf einem ganz guten Stand. Aus meiner Sicht  bietet mein Image alles was ich so in FHEM bisher betreibe, vielleicht müssen noch ein paar Perl Libs rein. Ich habe auch ein paar Gimmicks eingebaut, die ich im offiziellen Image vermisst habe. Ich habe aber auch viele - aus meiner Sicht - Kompromisse weggelassen.
Jedes Stück Code was ich so gefunden und adaptiert habe, wurde konsequent hinterfragt und ich habe wirklich bei fast null begonnen. Ich glaube jetzt ist nichts überflüssig und es läuft.
Plattformabhängigkeit ist bisher von mir nicht berücksichtigt, die gibt es bisher vielleicht auch nicht? Ich habe bisher auf arm getestet, probiere dann mal noch intel.

Wo ich absolut noch keinen Plan habe ist github packages und der gesamte build Prozess den es da offenbar im Hintergrund gibt. Mir ist nicht klar wie aus den Dateien die auf github liegen die einzelnen packages werden. :-[

Das aber alles - was in FHEM so vorhanden sein könnte - auch in einem Container funktioniert, halte ich fast für nicht ausführbar. Das ist neben der Vielfalt auch der Wettlauf von Hase und Igel.

Python
Habe ich nicht drin, wäre an sich kein Ding, bläht das Image auf...
Warum?  ??? Kann man nicht fertige python Container nebenanstellen? Die python Entwickler haben doch alle eine Schnittstelle zu FHEM, das braucht doch nicht im gleichen Container laufen? Die können doch prima ein eigenes Image liefern?
Das meinte ich mit Scheiben. (Das fhem Basis Image ist derzeit ein komplettes Brot)  ;D

Den Benutzer etwas nachinstallieren zu lassen - halte ich für einen Designfehler! Das wirft das Container Konzept über den Haufen. Der Gedanke, dass ich wegen alexa-fhem beim "Container frisch machen" eine halbe Stunde auf nodejs und Co warten muss bringt mir das Gruseln.  :'(
Normalerweise muss es doch nur zwei updates beim FHEM Container geben:
um FHEM zu pflegen
update                 # in der FHEM Kommandozeile
um das System zu pflegen
docker compose pull    # irgendwann, zeitunkritisch, kann auch Stunden dauern
docker compose up -d   # zeitkritsch, weil die Hausautomatisierung neu startet


Was steht hier ganz oben?  8)
ZitatFHEM ist ein Perl Server für die Haustechnik.
Derzeit hat mein Image knapp 290 MB und ich meine es ist alles drin. :) ich würde mich freuen wenn es jemand anschauen mag.

Schönes Restwochenende noch
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

michisa86888

Hallo zusammen,
irgendwie bekomme ich es nicht hin auf mein /opt/fhem Verzeichnis zuzugreifen. So wie ich gelesen habe sollte man das Verzeichnis irgendwie ausserhalb des Containers legen?
Würde nun aber ungern mein FHEM nochmals neu auflegen. Wie kann ich aufs Verzeichnis zugreifen wenn es innerhalb des Containers liegt?
Habe mal ein Screenshot angehängt von meinem Volume details im Portainer.

Otto123

Hi,

was meinst Du mit zugreifen? Was willst Du denn tun?

Du kannst das auch umstellen und die Daten aus dem Docker Volume herauskopieren (der Pfad oben) diese in einem neuen Pfad (außerhalb der Docker Volumes) ablegen und diesen Pfad wieder in den Container mounten.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

michisa86888

Zitat von: Otto123 am 21 März 2022, 09:21:57
Hi,

was meinst Du mit zugreifen? Was willst Du denn tun?


Gruß Otto

Aktuell will ich mein Zertifikat für mein Worx_Robbi irgendwie nach /opt/fhem in den Container bringen. So wie ich das bis jetzt gelesen habe müsste das bei mir nur über docker -cp funktionieren da mein Volume innerhalb des Containers liegt? Hoffe das habe ich so richtig verstanden. Jetzt könnte ich aber mittels docker -cp das ganze Verzeichnis /opt/fhem aus dem Container herauskopieren - ein Verzeichnis auf dem Host wählen und das ganze auslagern vom Container. Damit wäre es später einfacher solche Sachen zu erweitern?

Wernieman

Dann sollte man grundsätzlich machen, das persistente Daten AUßERHALB des Containers liegen. Auch sich Ändernde Daten wie Logfiles etc. haben nichts in einem Container zu suchen. Das hat auch mit dem Schichtmodel des Containers zu tun  (Soll ich es wirklich hier ausbreiten?)
- 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

Otto123

Ok, dafür kannst Du aber jetzt auch unkompliziert die Konsole öffnen: Portainer / Containers / fhem Quick Actions auf Exec Console klicken. Dann nochmal auf connect und dort kannst Du die Datei auch klassisch mit scp kopieren ;)
scp user@host:DeinDateiname .Der Punkt am Ende ist wichtig! Damit landet die Datei im aktuellen Verzeichnis welches /opt/fhem sein sollte.

docker -cp hab ich noch nicht gemacht, geht sicher auch :)

Wie hast Du FHEM backup gelöst?
Alternative Idee: Mach ein backup mit FHEM, kopiere die Backupdatei mit scp weg und stelle sie außerhalb wieder her.

Viele Wege ... Aber wie Werner sagt: umstellen! Aber auch Zeit lassen und nichts kaputt machen :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

antonwinden

Ich wollte meine Docker-Instanz von fhem/fhem auf ghcr.io/fhem/fhem/fhem-docker:bullseye upgraden...
Nur will das ganze nicht mit der Fehlermeldung:
Starting FHEM ...
bash: line 1: cd: /opt/fhem: Permission denied
Can't open perl script "fhem.pl": Permission denied
Unable to start FHEM process - errorcode 13

Wenn ich wieder zurückgehe startet fhem ohne probleme...
Auch wenn ich das ganze praktisch nackt in einen neuen Ordner(ohne meine config) starten will ist das gleiche Problem.
Was mache ich falsch?
gruß anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

passibe

Schau mal nach welchem Benutzer dein FHEM-Verzeichnis/die Dateien darin gehören und unter welchem Benutzer der alte Container und unter welchem Benutzer der neue Container läuft.
Vermutlich ist da eine Diskrepanz und du kannst entweder den neuen Container so einstellen, dass der unter dem Benutzer des alten läuft oder du gibst per chown dem Benutzer des neuen Containers die Berechtigung für das FHEM-Verzeichnis.

Edit: Okay, bisschen komisch, dass es auch im leeren Ordner nicht funktioniert. Scheint ja aber alles ein Berechtigungsproblem zu sein, passen denn beim leeren Ordner die Berechtigungen?

antonwinden

beide haben den gleichen user und gleiche group (6061:6061)...
der einzige Unterschied ist der Mode der beim funktionierenden 2750 ist und bei dem leeeren neuen (der aber auch die gleiche Fehlermeldung zeigt) 0644
im ordner habe alle Mode 0640 außer fhem.pl das hat 0740 in beiden ordnern
gruß anton

läuft bei mir unter ubuntu server 20.04.4
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...