Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

Otto123

#1770
Hallo Gear,

sowas mache ich "extern" :) denn meiner Meinung macht es keinen Sinn in einem Docker Image Pakete zu installieren, es ist kein PC.
Siehe hier, ziemlich zum Schluss
Für ookla ist das ja ziemlich einfach ;)

Konsequenterweise könnte man auch einen Docker Container dafür bauen, es ist aber bloß eine Datei die nicht mal installiert werden muss. Ich verwende das dann so:
defmod MySpeedtest speedtest 1800
attr MySpeedtest comment {system ('ssh root@192.168.56.1 '.q('wget -qO speedtest.tgz https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz;;;;tar -zxvf speedtest.tgz speedtest;;;;./speedtest --accept-license --accept-gdpr -f json' &) ) }
attr MySpeedtest ookla 1
attr MySpeedtest path ssh root@192.168.56.1 ./
attr MySpeedtest room Status

In der Kommentarzeile steht das einmalige Setup "Script"

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

Sidey

#1771
Zitat von: Gear am 05 Januar 2023, 03:22:44
Wenn ich jetzt benötigte Pakete installieren möchte, wie bekomme ich die rein?

Normalerweise werden keine Pakete nachinstalliert.
Wenn es halt überhaupt nicht ohne geht, dann kannst Du es als Umgebungsvariable beim Start des Containers mit angeben:

-e APT_PKGS="package1"


Vielleicht gibt es aber auch ein separates Image in dem dein Speedtest läuft?

Edit:
Hier wäre eines:
https://hub.docker.com/r/phlak/speedtest

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

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

Gear

---- OT Start ----
Langsam kotz mich Docker schon so ziemlich an.
Also, wahrscheinlich wegen meiner eigenen Blödheit...  :o
Wollte den Containern eigene IP + MAC geben, funzt nicht, MQTT in separaten Container läuft nicht...
(Ja, ich weiß FHEM kann das eigenständig... Nutze das aber auch noch anderweitig und muss das so oder so installieren)
---- OT End ----

Naja, ich nutze für einige Dinge Python, welche ich via Update von GIT hole.
Hier muss z.B. das pip FHEM installiert werden, wie in dem Thema von mir: https://forum.fhem.de/index.php/topic,123963.msg1185197.html#msg1185197
Benötigt wird z.B.:
sudo apt-get install python3-pip
pip3 install fhem


Bin mich noch am reinfuxen, aber langsam echt demotiviert....
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Wernieman

ZitatWollte den Containern eigene IP + MAC geben
Hört sich danach an, das Du denkst, das Docker eine VM ist. Dann kann ich Dir garantieren, das Du entäuscht werden wirst. Docker ist KEINE VM! Ja man kann einen Container so betreiben, aber das ist "Home-Bastel-Arbeit" und führt längerfristig zu Problemen.

Um einen Container extern erreichbar zu machen gibt es 2 sinnvolle Möglichkeiten.
1. Port Exposen, d.h. extern erreichbar machen (docker-compose.yml oder bei Aufruf)
2. Einen Proxy aufs Hostsystem

Es gibt nur Probleme bei Protokollen, die Unicast verwenden. Mann kann zwar dort mit oben genannten "Privileg" arbeiten, besser aber solche Protokolle nativ auf dem System betreiben (z.B. dhcp) .. oder durch passende andere ersetzen.

Nur so als Hinweis:
Am besten ein Container eine Software. Leider gibt es fertige Container, die es anders machen, nur sinnvoller ist es so. Stichwort "Microservices".

@Sidey
der Speedtest-Container hat nur den Nachteil, das er praktisch wie ein CLI arbeitet, also nicht als Deamon. Mann kann einen Container aus einem Container aufrufen, nur würde ich einem Anfänger dieses nicht empfehlen ... und im falle des FHEM-Container definitif nicht machen .......
- 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

Sidey

Zitat von: Gear am 05 Januar 2023, 10:42:49

Hier muss z.B. das pip FHEM installiert werden, wie in dem Thema von mir: https://forum.fhem.de/index.php/topic,123963.msg1185197.html#msg1185197
Benötigt wird z.B.:
sudo apt-get install python3-pip
pip3 install fhem


Bis eben wusste ich nicht, dass es ein Python Paket mit dem Namen fhem gibt.
Wenn ich das richtig verstanden habe, fungiert es doch als eine Art Proxy.
Könnte das nicht problemlos in einem eigenen Container laufen und via TCP mit FHEM kommunizieren?

Ansonaten. Jeder Container bekommt eine eigene IPAdresse im Docker Netzwerk.

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

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

Gear

@Wernieman

Ich kenne das so vom QNAP Docker: MAC Generieren + Bridge wählen
Dann meldet sich an der FritzBox ein "Netzwerk Gerät" mit der IP und der MAC.

Aber auf OMV mit Docker und Portainer ist das alles irgendwie anders, bzw. ich bin zu blöd.  ;D
Hatte bisher alles auf einem RPi4 ohne Docker, nun bin ich auf einen ODRIOD H3 gewechselt, weil der Pi mit 2 GB langsam zu schwach war...

@Sidey
Ob man das Python-Scrip auslagern kann ist eine gute Frage, glaube aber eher nicht.
Das Script wird quasi wie ein Paket behandelt, also per Update von GIT auf FHEM heruntergeladen. (Einfacher wegen Updates)
Dann wird das direkt aus FHEM aufgerufen und läuft als eine Art SUB.
Vermutlich müsste ich dann mein Script komplett umbauen...

"python3 /opt/fhem/FHEM/98_BackUp2FTP.py <fhemIP> <fhemPort> <fhemProtocol> <fhemUser> <fhemPass> <BackUp-Device> &"
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Sidey

Zitat von: Gear am 05 Januar 2023, 11:09:18
@Wernieman


Dann wird das direkt aus FHEM aufgerufen und läuft als eine Art SUB.
Vermutlich müsste ich dann mein Script komplett umbauen...

"python3 /opt/fhem/FHEM/98_BackUp2FTP.py <fhemIP> <fhemPort> <fhemProtocol> <fhemUser> <fhemPass> <BackUp-Device> &"

Eine Variante von Otto wäre, dass das Script nicht im Container sondern beispielsweise auf dem Host oder in einem anderen Container läuft.

Container können volumes untereinander teilen. Diese können auch auf dem Host liegen.

Ich mache es mittlerweile ganz anders und das gefällt mir bisher am besten:

Ich habe einen duplicati Container, in dem ich das FHEM Verzeichnis eingebunden habe.
Der Duplicati Container erledigt das Backup völlig unabhängig von FHEM nach einem Zeitplan und kopiert es auch mittels sftp auf ein anderes System. Schmiert FHEM ab, läuft das Backup trotzdem.
Die Datenbank wird über das DBrep Modul bereinigt (deduplizieren)
Da ein Backup der Datenbank so eine Sache ist, fertige ich jeden Tag von dem Vortrag einen Export an (auch über DBrep) was mit in dem Duplicati Backup landet.

Es gefällt mir so, weil ich im Container keine Dinge nachinstallieren oder konfigurieren müsste.
Alles läuft über normale Prozeduren der jeweiligen Images und der Host hat damit auch nichts am Hut.

Vielleicht hilft dir das ja bei deiner Lösungsfindung weiter.

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

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

Otto123

Zitat von: Gear am 05 Januar 2023, 10:42:49
Wollte den Containern eigene IP + MAC geben, funzt nicht, MQTT in separaten Container läuft nicht...
Klingt nach Hostmodus? Braucht man normal nicht, nicht für FHEM.
MQTT gibt es doch jede Menge Container? Was läuft denn da nicht? Nicht gleich aufgeben und selbst für Blöd erklären. Nachfragen, Problem schildern - meist ist der Ansatz zur Lösung bloß etwas anders ;)

Wie schon gesagt: es ist keine VM oder PC - es ist Docker. Da ist es alles etwas anders.  ;)
Aber wenn man das so hin nimmt und versucht zu verstehen - ist es genial.
Sicher aber auch nicht die die universelle Lösung für alles.
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

Gear

Und wie mache ich das dann bei -e APT_PKGS="package1"?

sudo apt-get install python3-pip
pip3 install fhem


@Otto
Ne, ich gebe nicht auf, es frustriert nur...  :P

MQTT kann FHEM auch, ich weiß.
Nur nutze ich MQTT noch abseits von FHEM, darum brauche ich das separat.

MQTT wäre hier eher OT.
Theoretisch läuft es, also laut Portainer, wenn jetzt FHEM verbinden will, dann verbindet es, und verliert die Verbindung gleich wieder.
Habe das so auf einem anderen RPi ohne Docker getestet, da geht es, als von der Config her.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Zitat von: Gear am 05 Januar 2023, 13:55:37
MQTT kann FHEM auch, ich weiß.
Nur nutze ich MQTT noch abseits von FHEM, darum brauche ich das separat.

MQTT wäre hier eher OT.
Theoretisch läuft es, also laut Portainer, wenn jetzt FHEM verbinden will, dann verbindet es, und verliert die Verbindung gleich wieder.
Habe das so auf einem anderen RPi ohne Docker getestet, da geht es, als von der Config her.
Das ist doch völlig ok, wenn man den MQTT lieber separat haben will. Dann mach doch einfach einen separaten Thread auf und beschreibe kurz Dein Scenario und was Du versucht hast.
Das haben viele so laufen, auch unter Docker.
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

Wernieman

ZitatIch kenne das so vom QNAP Docker: MAC Generieren + Bridge wählen
Dann meldet sich an der FritzBox ein "Netzwerk Gerät" mit der IP und der MAC.
Also macht QNAP aus dem Container eine "Pseudo VM" ......

Der Vorteil von "fertigen" Containern ist normalerweise, das Du bei einem Update nicht den Container updatest, sondern einfach "nur" austauscht. Deshalb sollte der Container auch möglichst nachträglich nicht verändert werden .. denn nach jedem Update müsste man das bei seinen eigenen immer wieder machen.

Ansonsten stimme ich Otto zu, erkläre doch bitte nochmals, was Du genau willst ....
- 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

Gear

Zitat von: Wernieman am 05 Januar 2023, 14:19:30
Ansonsten stimme ich Otto zu, erkläre doch bitte nochmals, was Du genau willst ....

Also, auf meinem PRi4 (ohne Docker) nutze ich aktuell Python Scripte, um Dinge auszuführen.
Und um diese nutzen zu können, brauche ich "pip3 fhem", also vor der Nutzung muss ich das erstmal installieren:
sudo apt-get install python3-pip
pip3 install fhem


Meine Scripte möchte ich nicht in ein zusätzliches Docker auslagern, da installiere ich mir FHEM lieber direkt darauf ohne Docker.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

ch.eick

Zitat von: Gear am 05 Januar 2023, 15:19:08
Also, auf meinem PRi4 (ohne Docker) nutze ich aktuell Python Scripte, um Dinge auszuführen.
Und um diese nutzen zu können, brauche ich "pip3 fhem", also vor der Nutzung muss ich das erstmal installieren:
sudo apt-get install python3-pip
pip3 install fhem


Meine Scripte möchte ich nicht in ein zusätzliches Docker auslagern, da installiere ich mir FHEM lieber direkt darauf ohne Docker.
Moin,
ich habe das beim .yml so eingetragen

    environment:
      PIP_PKGS: "vallox_websocket_api fhem beautifulsoup4"
      CPAN_PKGS: "Crypt::OpenSSL::AES XML::Bare XML::Bare Protocol::WebSocket::Handshake::Server Crypt::Rijndael Crypt::Random --verbose"


Generell versuche ich immer alles aus Phyton direkt ins FHEM zu integrieren.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Gear

Moin!

Uh, ich glaube das kann mir helfen!
Muss ich gleich mal versuchen, Danke. :)

Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

fhemjan

Mal wieder eine kurze Frage von mir:
Möchte einen HmLAN einbinden. Muss ich dazu etwas am Cpntainer ändern um auf das Device im Netzwerk zugreifen zu können? Er gibt mir beim device ein disconnected in fhem.
Thread: https://forum.fhem.de/index.php/topic,130193.msg1256118.html#msg1256118