Bereitstellung Jessie + FHEM Docker Image

Begonnen von StefanP., 17 April 2015, 21:34:02

Vorheriges Thema - Nächstes Thema

StefanP.

Hallo zusammen,

fühlt sich jemand in der Lage, FHEM in ein (auf der x86 Architektur) lauffähiges Docker Image zu packen ?

Meine neue Synology wird mit dem nächsten Firmware Update (5.2) ein Paket zum Betrieb von Docker Containern erhalten.

Die Idee, FHEM auf der Syno im Container zu betreiben, hört sich für mich recht reizvoll an, v.a. weil man damit den diversen Synology Gängeleien (nicht passende perl Version, Serial Port nicht installierbar, Abhängigkeit von IPKG, das bei jedem Update überschrieben wird etc. etc.) entkommen kann... FHEM läuft dann einfach im Container in seiner eigenen Welt :-)

Ich hab nur (noch) keinen Plan, wie man diese Docker Images erstellen und auf den Docker Hub raufladen kann... Ihr vielleicht... ?

Schöne Grüße,
Stefan

StefanP.

Hallo zusammen,

aufgrund der Vielzahl an positiven Rückmeldungen hab ich mich mal selbst am Docker Image versucht  :)

Ihr findet ein auf Jessie (aktuell RC3) / amd64 (also 64bit) basiertes Docker Image inkl. folgender Zusatzpakete im Docker Hub unter "xiberger/jessie_fhem":
- nano
- mc (Midnight Commander)
- fhem 5.6

Die Anleitung zum Installieren, Erzeugen und Upload des Images liefere ich gleich mit, wenn sich jemand selbst daran versuchen möchte. Achtung: es muss ein 64bit Debian sein, und Jessie empfiehlt sich, weil der aktuelle 3.16 Kernel bereits installiert wird.

Download mit "docker pull xiberger/jessie_fhem"

Viele Grüße und viel Spaß beim Probieren, Feedback gern!
Stefan


Anleitung:
    Download und Installation Debian 8 amd64 "Jessie"
    Login via ssh
    Erzeugen einer chroot Umgebung mittels debootstrap,
        siehe http://www.aossama.com/build-debian-docker-image-from-scratch/
        debootstrap jessie /vdisks/chroot/jessie http://ftp.us.debian.org/debian
    Wechsel in die chroot Umgebung:
        chroot /vdisks/chroot/jessie /bin/bash
        Installation mc, nano, fhem (siehe https://debian.fhem.de/), update fhem
        Start fhem: sudo /etc/init.d/fhem start
    Installation docker im Debian Host:
        apt-get install lxc
        wget https://get.docker.io/builds/Linux/x86_64/docker-latest -O docker
        chmod +x docker
        mv docker /usr/bin/
    Erzeugen und Upload des Docker Images
        tar -C /vdisks/chroot/jessie/ -c . | docker import – xiberger/jessie
        docker push xiberger/jessie_fhem


Zephyr

An sich 'ne sehr coole Idee. Ob man nun FHEM auf seinem NAS laufen lassen will oder nicht... Sei mal dahingestellt. Es schien nicht soooo viel Arbeit zu sein, kann das sein?

Eine Frage stellt sich mir: Warum musstest Du die Synology dafür bootstrappen?

VG
Zephyr
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433

StefanP.

Hi Zephyr,

das Image muss ja nicht notwendigerweise auf dem NAS laufen, sondern kann prinzipiell (auch als Dienst) auf jedem Host laufen, der Docker unterstützt - Windows, Linux, Mac OS, jetzt eben dann auch Synology, etc.
Von da her gesehen ist das Docker Konzept recht genial - schlank, schnell, universell einsetzbar. Leider noch sehr kommandozeilen-orientiert und eher weniger was für unbedarfte Endanwender.

Zur Vorgehensweise bei der Image Erstellung:
ich habe nicht die Syno gebootstrapt, sondern auf meinem PC eine neue Debian64 (Jessie RC3) VM aufgesetzt, und darunter dann über die debootstrap und chroot Tools das Docker Image aufgebaut.
Dieses Image habe ich dann auf dem Docker Hub hochgeladen.
Es wird dann über docker pull auf der Synology deployed, sobald die neue DSM 5.2 verfügbar ist.

Viele Grüße,
Stefan

StefanP.

#4
Hallo zusammen,

hier noch eine Kurzanleitung, wie man das Image nutzt:
(1) Installation Docker: siehe https://docs.docker.com/installation/
(2) Pull des Images: docker pull xiberger/jessie_fhem
(3) Start des Images: docker run -it -p 8083:8083 xiberger/jessie_fhem /bin/bash
(4) Start fhem: /etc/init.d/fhem start

Alternativ kann man das Image auch als Daemon im Hintergrund laufen lassen. Dazu habe ich ein kleines Shell Script geschrieben, das in einer Endlosschleife läuft, damit sich der Prozess, den man beim Start des Containers mitgibt, nicht beendet:
(3) Start des Images: docker run -d -p 8083:8083 xiberger/jessie_fhem /bin/bash -c /opt/fhem/fhem.sh

Anschließend kann fhem ganz normal über den gemappten Port 8083 unter der Host IP Adresse gestartet werden.

Mittlerweile hat Synology die Version 5.2 rausgebracht, allerdings ist der Build 5565 noch etwas buggy. Sobald die gröbsten Fehler ausgemerzt sind, werde ich der Sache mal einen Versuch geben.

Viele Grüße,
Stefan

graszegger

Hallo,

vielen Dank für dieses Image!
Leider bekomme ich meinen CUL nicht zum laufen.

Im Log finde ich nur folgendes:

2015.05.22 09:15:24 1: usb create starting
2015.05.22 09:15:24 1: PERL WARNING: Can't exec "lsusb": No such file or directory at ./FHEM/98_autocreate.pm line 366.
2015.05.22 09:15:24 1: usb create end


Auf der Seite FHEM.de steht, dass für CUL ein perl serial module benötigt wird (sudo cpan Device::SerialPort).
Ist es möglich, das dieses hier nicht installiert ist?

Viele Grüße,
Roland


StefanP.

Hallo Roland,

ich hab mich aufgrund der zahlreichen negativen Rückmeldungen zum 5.2er Release von Synology noch nicht getraut, es einzuspielen... und warte lieber noch die nächsten Updates ab. Es kann aber gut sein, dass die Installation noch nicht 100% komplett ist, ich hab das Docker Image bis jetzt immer nur "trocken" auf dem Laptop getestet.
Wird der CUL denn als USB Device auf der Synology erkannt ? Mögl.weise musst Du noch das "USB Serial Drivers" Package installieren ?

Gib mir noch ein paar Tage Zeit, dann trau ich mich an den Upgrade und probier's selbst...

Schöne Grüße,
Stefan

StefanP.

#7
Hallo noch einmal,

hab jetzt auf 5.2 aktualisiert, fhem läuft auf der Syno unter docker wie eine 1 (RAM: 45MByte).

Vorgehensweise noch einmal im Detail:
(1) Anstecken des CUL Sticks am USB Anschluss
(2) Check, ob der Stick erkannt wird:
- dmesg
- im Output am Ende nach Einträgen ähnlich zu "cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device" suchen
(3) Check /dev/ Verzeichnis, ob ttyACM0 Device vorhanden (ls -l ttyA*)
(4) Erweitern der Rechte, um dem fhem User Zugriff auf das device zu geben: chmod 666 ttyACM0
(5) Start des Docker Images mit zusätzlichen Parametern:
- "--device=/dev/ttyACM0": Freigabe des USB Devices (CUL Stick)
- "-v /volume1/public:/mnt/public": Mounten des "public" Verzeichnisses (wenn man z.B. eine bestehende fhem Installation migrieren möchte)
- nicht vergessen, die Ports 8083 ff übers GUI im Docker Package freizugeben
(6) Setzen der Timezone (das Docker Image läuft als Default auf der UTC Kernel Zeit):
- "echo Europe/Berlin > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata"

Anschließend: Check der Installation, das Logfile sieht dann aus wie im Anhang.

Viel Spaß & Grüße,
Stefan

P.S.: ich habe alle Docker Operationen direkt über ssh in der Command Line abgesetzt

P.P.S.: Logfile (Auszug):
2015.05.27 09:02:35 1: Including fhem.cfg
2015.05.27 09:02:35 3: WEB: port 8083 opened
2015.05.27 09:02:35 3: WEBphone: port 8084 opened
2015.05.27 09:02:35 3: WEBtablet: port 8085 opened
2015.05.27 09:02:35 3: telnetPort: port 7072 opened
2015.05.27 09:02:35 2: eventTypes: loaded 1660 events from ./log/eventTypes.txt
2015.05.27 09:02:35 3: Opening CUL_0 device /dev/ttyACM0
2015.05.27 09:02:35 3: Setting CUL_0 baudrate to 9600
2015.05.27 09:02:35 3: CUL_0 device opened
2015.05.27 09:02:35 3: CUL_0: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2015.05.27 09:02:35 2: Switched CUL_0 rfmode to HomeMatic
2015.05.27 09:02:36 1: Including ./log/fhem.save
2015.05.27 09:02:36 1: usb create starting
2015.05.27 09:02:36 1: PERL WARNING: Can't exec "lsusb": No such file or directory at ./FHEM/98_autocreate.pm line 368.
2015.05.27 09:02:36 1: usb create end
2015.05.27 09:02:36 0: Server started with 115 defined entities (version $Id: fhem.pl 8574 2015-05-14 07:59:32Z rudolfkoenig $, os linux, user fhem, pid 1077)
2015.05.27 09:02:36 3: telnetForBlockingFn: port 34102 opened
2015.05.27 09:02:41 3: Device HM_Fensterkontakt_WZ added to ActionDetector with 028:00 time
2015.05.27 09:02:41 3: Device HM_RaumTemp_WZ added to ActionDetector with 000:10 time
2015.05.27 09:02:41 3: Device HM_SteckdoseWZ added to ActionDetector with 000:10 time
2015.05.27 09:02:41 3: Device HM_Thermostat_Hobby added to ActionDetector with 000:10 time
2015.05.27 09:02:41 3: Device HM_Thermostat_Keller added to ActionDetector with 000:10 time
2015.05.27 09:02:41 3: Device HM_Thermostat_Kueche added to ActionDetector with 000:10 time
2015.05.27 09:02:41 3: Device HM_Thermostat_WZ added to ActionDetector with 000:10 time

overkill2010

#8
Hallo,

vielen dank für das Docker Image. Coole Idee...

Hänge zurzeit hier fest:

dmesg

[21781.648881] cdc_acm 2-1:1.0: ttyACM0: USB ACM device


cd /dev

ls -l ttyA*

crw-rw-rw-    1 root     root      166,   0 May 27 12:27 ttyACM0

anschliessend kommt:

"--device=/dev/ttyACM0"
-ash: --device=/dev/ttyACM0: not found

hat jemand eine Idee ?

PS: habe ebenfalls eine Synology 415+ mit DSM 5.2-5565 Update 1 drauf

StefanP.

Die komplette Anweisung zum Starten des Docker Images lautet:
docker run -it -v /volume1/public:/mnt/public -p 8083:8083 --device=/dev/ttyACM0 xiberger/jessie_fhem /bin/bash

Der "--device" Parameter wird beim "run" Aufruf mit übergeben.

Viel Spaß & Grüße,
Stefan

overkill2010

Super viele dank hat geklappt.

musste nur noch:

/etc/init.d/fhem start

ausführen.

Wie kann ich dies nun im Autostart einfügen? Mein Synology fährt automatisch um 23.00 runter und startet um 7.00 Uhr wieder.


StefanP.

Hallo,

statt dem Parameter "-it" (für interactive) müsstest Du "-d" (als Daemon) mitgeben + mein Start Script ausführen:
docker run -d -v /volume1/public:/mnt/public -p 8083:8083 --device=/dev/ttyACM0 xiberger/jessie_fhem /bin/bash -c /opt/fhem/fhem.sh

Schöne Grüße,
Stefan


overkill2010

Sorry ich nochmal

kann es sein das meine Diskstation nach einen Neustart folgende rechte vergisst ?

HDD1> cd /dev
HDD1> ls -l ttyA*           
crw-------    1 root     root      166,   0 May 27 13:11 ttyACM0
HDD1> chmod 666 ttyACM0
HDD1> ls -l ttyA*
crw-rw-rw-    1 root     root      166,   0 May 27 13:12 ttyACM0

dadurch stand bei mein CUL_0 STATE disconnected


StefanP.

Hi,

sorry, da muss ich passen... sieht so aus, ja, aber warum und weshalb - am besten Onkel Google oder das Synology Forum befragen... sorry...

Schöne Grüße,
Stefan

overkill2010

#14
Danke trotzdem..

bin ja schon recht weit dank deiner Hilfe gekommen.

Super Job

PS

Habe nun einen Job erstellt der jeden morgen ausgeführt wird.
( chmod 666 /dev/ttyACM0 )