Befehle für docker in fhem?

Begonnen von antonwinden, 19 Mai 2026, 16:43:07

Vorheriges Thema - Nächstes Thema

antonwinden

Kann ich in Fhem (läuft in docker) einen befehl an docker eingeben um einen anderen docker container zu stoppen und zu starten?
Hintergrund:
frigate läuft für die kameras in 1 Container und denn will ich nur bei Abwesenheit laufen lassen.
{system('docker stop frigate')} ergibt nur -1
gruß Anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

passibe

Nicht auf diese Weise, weil das Programm docker im FHEM-Image gar nicht installiert ist.
Der einfachste Weg ist, die Docker Socket (/var/run/docker.sock) an den FHEM-Container weiterzugeben und damit zu interagieren (einfach googeln, wie man das macht, habe das selbst noch nicht implementiert; kenne nur andere Images, die das nutzen (z.B. Watchtower)).

Aber Achtung, das ist ein recht großes Sicherheitsrisiko, weil der FHEM-Container damit quasi den gesamten Host steuern kann. Du solltest auf jeden Fall einen Socket-Proxy dazwischenschalten, ganz ideal wäre vielleicht sogar eine Middleware, die nichts anderes kann als Frigate zu starten und zu stoppen und mit der FHEM z.B. per HTTP interagiert. Dann kannst du Frigate mit einem einfachen HTTP-Request aus FHEM starten/stoppen (idealerweise ist das Docker-Netzwerk dieser Middleware dann auch nur noch mit FHEM verbunden und es handelt sich um ein --internal-Netzwerk).

Wenn dir diese ganzen Sicherheitsthemen aber egal sind, z.B. weil dein FHEM-Server sowieso nicht von außen erreichbar ist o.ä., dann einfach die docker.sock so nutzen (bzw. mit einem Proxy nutzen, der ist schnell aufgesetzt).

Sidey

Du könntest dir auch einen Systemd Dienst erstellen.

Entweder pollt dieser periodisch Fhem nach dem Stand und startet dann vom Host aus den anderen Container.
Oder Du lässt Fhem eine Datei schreiben.
Ein Systemd Job könnte die Datei überwachen und bei Änderungen den Inhalt auswerten.


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

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

Sany

Du kannst frigate per http-api und mqtt "fernsteuern". Muss ja nicht komplett gestoppt werden. Zumindest per mqtt kann man wohl laut Doku camera enabled set on oder off schicken, ansonsten kann man record, detect und snapshot auch ein und ausschalten. Das nutze ich bei mir für die Innencameras, die nur detecten und speichern wenn abwesend.

Bei disabled cameras hat frigate ja quasi nix mehr zu tun, dann kann der Container auch durchlaufen.


Gruß



Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, volvo2mqtt, MariaDB und Grafana. Sowie Homematic, FS20, mySensors, Tasmota (MQTT2), Shelly(MQTT2), kein Z-Wave mehr  ....

Otto123

#4
Man kann das mit der Sicherheit so und so sehen und sollte es nicht übersehen :) Bei den meisten FHEM Anwendern wird wohl kein Unterschied in der Sicherheitsbetrachtung zwischen Docker Host und Docker FHEM Container gemacht werden, genau wie bei einem native installiertem System.

Zitat von: antonwinden am 19 Mai 2026, 16:43:07Kann ich in Fhem (läuft in docker) einen befehl an docker eingeben ...

Ich mache sowas über ssh Zugriff auf den Host, damit geht quasi alles was sonst über system gehen würde. Man muss (und sollte ) nicht root verwenden, jeder user kann mit ssh public key verwendet werden. Also extra User auf dem Docker Host anlegen, mit definierten Rechten ausstatten und die Sicherheit bleibt gewahrt.
Zum Einrichten von ssh mit public Key muss man nicht mal "in den FHEM Container" eintauchen, das geht komplett über Browser und docker Host Terminal:
https://heinz-otto.blogspot.com/2020/09/ssh-mit-public-key.html
Und hier am Ende noch ein paar Beispiele für den Einsatz von ssh aus dem Docker FHEM Container heraus:
https://heinz-otto.blogspot.com/2022/04/andocken-dinge-die-man-auerhalb-docker.html

BTW: Das hier
Zitat von: antonwinden am 19 Mai 2026, 16:43:07{system('docker stop frigate')} ergibt nur -1
ist immer so, der system() Aufruf gibt unter FHEM bei Erfolg nur -1 zurück.
Und noch zum Verständnis: Dein Versuch wird im FHEM Container ausgeführt, Du wolltest aber den Befehl auf dem Host ausführen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)