Jeedom sur docker

Nico Écris par Nico
  9 min de lecture

Cet Article a été vu ... fois

Jeedom sur docker

1- Installation des images et container mariadb/alpin et Adminer.

Prérequis pour pouvoir suivre ce tutoriel:

  • Avoir un nas avec openmediavault et docker d’installé
  • Avoir un accès ssh opérationnel
  • Faire la différence entre l’accès Nas en SSH et l’accès à son container en SSH

Tout d’abord, apprendre à se connecter en SSH.

Pour se connecter à son Nas/Raspberrypi à partir d’un terminal donc dans notre cas à Debian dans OMV » Valable pour toutes autres distribution basé sur debian » ( raspbian, ubuntu,mint… )

$ ssh -p 22 your_Nas_ip_address -l root

Connection au raspberrypi

$ ssh -p 22 your_raspberrypi_ip_address -l pi

une fois connecté on a comme entité

root@Name_Nas:~#

Ensuite on peut se connecter à notre docker qui a été créé et qui s’appelle jeedom

$ docker exec -it jeedom sh

on auras comme entité:

#

Dès cette instant toutes les commandes que vous rentrerez n’agiront plus sur debian de votre Nas mais sur debian de votre container Jeedom.

Pour sortir de son container et retourner sur notre nas il faut faire:

Ctrl+p Ctrl+q
ou
exit

D’abord, partons du principe que nous avons omv Nas d’installé avec docker. Connectons-nous en root sur notre Nas soit à l’aide d’un terminal soit à l’aide de Putty:

$ ssh -p 22 192.168.***.*** -l root

remplacez l’adresse ip par la votre et votre nom d’utilisateur par le votre. Par défaut sur omv le nom d’utilisateur est « root » et le mot de passe « openmediavault » .

Avec Putty:

connection à putty

Ensuite rentrez votre mot de passe.

Création du dossier mariadb

$ sudo mkdir -p /sharedfolders/Appdata/mariadb

Création de la base de donnée mariadb qui va accueillir Jeedom.

docker run --name mariadb \
-v /Your_mysql_path:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Your_password_root \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
-e MYSQL_DATABASE=jeedom \
--detach \
--publish 3306:3306 \
--restart always \
yobasystems/alpine-mariadb:latest

Remplacez:
your_mysql_path par un un dossier sur votre disque dur ex: /opt/mysql.
your_name_database par un nom de base de donnée ex: jeedom
your_password_root par un mot de passe administrateur
your_user par un nom d’utilisateur
your_password par un mot de passe utilisateur

création docker mysql

Installation de Adminer sur le docker.

afin de paramétrer mariadb à l’aide d’une interface graphique ultra légère 29Mb compressé

docker run -d --name adminer --link mariadb:db -p 8080:8080 --restart always adminer

Si le port 8080 est pris sur votre hôte vous pouvez le remplace par un autre, exemple 8480:8080.

Vérifiez l’accès à votre base de donnée en vous connectant à l’adresse ip de votre NAS http://192.168.X.X:8080 et accédez à votre table nommé Jeedom avec votre user et password créé dans le container.

À ce stade nous avons sur notre docker deux container l’un pour mariadb, nommé mariadb et l’autre avec adminer nommé Adminer

ligne de commande installation adminer

2- Installation de jeedom sur docker

Après installation et paramétrage de mariadb/adminer sur docker nous sommes prêt à installer Jeedom et paramétrer.

Avant d’appliquer la commande de lancement du docker, connectez vos clés z-wave, rfxcom, zigbee, etc… sur votre matériel.

Nous allons dès à présent rechercher le matériel en se connectant à nouveau à notre système en ssh en tant qu’utilisateur root:

ssh -p 22 192.168.***.*** -l root

Identification des périphériques USB:

Vous pouvez sauter cette étape si vous n’avez rien de connecté au port usb. il est toujours possible de modifier le container ultérieurement pour installer des périphériques.

Nous allons rechercher l’identifiant unique du périphérique, car beaucoup plus stable qu’une association simple par périphérique du type /dev/ttyUSB1, ainsi pour trouver les périphériques nous allons taper la commande:

$ ls -l /dev/serial/by-id

Ce qui va retourner dans notre cas les valeurs suivantes:

lrwxrwxrwx 1 root root 13 nov.  27 16:36 usb-0658_0200-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 nov.  27 16:36 usb-Cartelectronic_Interface_USB_1_TIC_DA33DTBE-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 nov.  27 16:36 usb-RFXCOM_RFXtrx433_A1XSV19D-if00-port0 -> ../../ttyUSB2
lrwxrwxrwx 1 root root 13 déc.   3 13:28 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00194309AD-if00 -> ../../ttyACM1

on peut voir ci-dessus la liste de no périphériques usb:

  1. usb-0658_0200-if00 -> ../../ttyACM0 correspond à notre clé z-wave z-stick aeontech gen5, valeur à intégrer dans la création de l’image docker:
--device=/dev/serial/by-id/usb-0658_0200-if00:/dev/ttyACM0
  1. usb-Cartelectronic_Interface_USB_1_TIC_DA33DTBE-if00-port0 -> ../../ttyUSB1 correspond au module de suivi de consommation éléctrique Cartelectronic, valeur à intégrer dans la création de l’image docker:
--device=/dev/serial/by-id/usb-Cartelectronic_Interface_USB_1_TIC_DA33DTBE-if00-port0:/dev/ttyUSB1
  1. usb-RFXCOM_RFXtrx433_A1XSV19D-if00-port0 -> ../../ttyUSB2 correspond à notre clé rfxcom fréquence 433mhz, valeur à intégrer dans la création de l’image docker:
--device=/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1XSV19D-if00-port0:/dev/ttyUSB2
  1. Texas_Instruments_TI_CC2531_USB… -> ../../ttyACM1 correspond à notre clé zigbee avec antenne CC2531. ( nous ne l’intégrerons pas à la création du container docker, car celle-ci fonctionne avec zigbe2mqtt qui actuellement n’est pas soutenu comme plugin dans jeedom.

Création du container Jeedom en mode « host »

Le mode bridge est déconseillé car non présent sur le réseau hôte certains module. Comme celui de lunarok xiaomi ne fonctionneront pas et vous ne pourrez pas installer les modules zigbee de xiaomi par exemple.

Depuis peut le tag latest de l’image jeedom est régulièrement mis à jour, mais pour l’instant nous rencontrons encore des soucis d’installations, donc on utilisera le tag master qui reste pour l’instant l’image la plus stable pour réussir son installation.

sudo mkdir -p /sharedfolders/Appdata/Jeedom/html

Maintenant que nous avons identifié nos périphériques nous pouvons lancer la commande d’installation de l’image. Toujours sur notre système d’exploitation connecté en ssh en tant que root:

docker run -d --net host --name jeedom \
-v /.../Jeedom/html:/var/www/html \ # dans omv ce seras de préférence your_jeedom_path remplacé par /sharedfolders/Appdata/
-e ROOT_PASSWORD=PASSWORD \ # à remplacer par votre mot de passe root
-e APACHE_PORT=9080 \
-e SSH_PORT=9022 \
-e MODE_HOST=1 \
--cap-add=SYS_ADMIN \ # ajout des accès bluetooth (module blea par exemple )
--device=/dev/net/tun \
--device=/dev/serial/by-id/usb-Cartelectronic_Interface_USB_1_TIC_DA33DTBE-if00-port0:/dev/ttyUSB1 \
--device=/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1XSV19D-if00-port0:/dev/ttyUSB2 \
--device=/dev/serial/by-id/usb-0658_0200-if00:/dev/ttyACM0 \
--restart always jeedom/jeedom:master

Remplacez: PASSWORD par un mot de passe root pour jeedom,
l’ajout des accès bluetooth est à mettre en place, si vous avez une carte bluetooth, intégré à la carte mère dans votre NAS afin de pouvoir utiliser les modules BLEA.

Installation du bluetooth embarqué

Prenons le cas d’une carte bluetooth Realtek. Ensuite installons le firmware sur debian si ce n’est pas fait.

$ sudo apt-get install firmware-realtek
$ cd /lib/firmware/rtlwifi
$ wget https://github.com/wkennington/linux-firmware/raw/master/rtlwifi/rtl8822befw.bin
$ sudo reboot
$ hcitool dev
Devices:
	hci0	D0:C5:D3:33:7C:52 # Notre carte bluetooth est bien reconnu
$ ls -l /sys/class/bluetooth # on cherche le composant bluetooth
hci0 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0 \ adresse unique de notre carte

De plus pour faire remonter le bluetooth dans le plugin BLEA de jeedom. Il faut installer sur votre Container le bluetooth.

$ ls -l /sys/class/bluetooth \ on regarde si la carte est reconnu
total 0
lrwxrwxrwx 1 root root 0 Dec 20 14:59 hci0 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0 # réponse ok
$ hctitool dev
Devices:
	hci0	D0:C5:D3:33:7C:52 \ bluetooth ok
$ apt install -y bluetooth bluez

Finalement le bluetooth remontera dans notre jeedom sans créer d’extra arg pour la création du container contrairement au port usb.

docker run -d --net host --name jeedom \
-v /your_jeedom_path:/Jeedom/html:/var/www/html \
-e ROOT_PASSWORD=PASSWORD \
-e APACHE_PORT=9080 \
-e SSH_PORT=9022 \
-e MODE_HOST=1 \
--restart always jeedom/jeedom:master

3- Lancement de jeedom et paramétrage et affinage

à ce stade nous avons installé sur omv 3 containers ( mariadb avec utilisateur, phpmyadmin et jeedom ). Enfin il ne nous reste plus qu’à nous connecter dans notre navigateur.

rendez-vous sur notre page jeedom en se connectant dans un navigateur à l’adresse de notre NAS http://192.168..:9080

Important !

Remplacez dans « database hostname » localhost par 127.0.0.1 sinon une erreur sql va être généré. Toutefois après le lancement du container jeedom patientez quelques minutes avant de lancer le script d’installation.

Puis, on rempli bien Database username, password et name. Avec les mêmes caractéristiques lors de la création de la base de données plus haut. On laisse faire l’installation puis on se connecte à jeedom avec login et mot de passe par défaut admin:admin

Paramétrage mysql initial jeedom

Ensuite à l’invite de commande on modifie le mot de passe. Puis on rentre ses coordonnées jeedom market pour pouvoir passer à l’étape suivante.

connection à Jeedom

Une fois les étapes de connections bien remplies, nous allons jeter un oeil sur l’onglet /Analyse/santé et si tout s’est bien passé nous devrions avoir ceci:

connection au market Jeedom

On s’aperçoit que la configuration réseau n’est pas bonne donc Rendez-vous dans l’onglet /Réglage/Système/Configuration/Réseaux et paramétrez comme l’image ci-dessous:

  • Accès interne: votre adresse ip de votre carte réseau soit une adresse du type 192.168.xxx.xxx et non 127.0.0.1 vous rencontrerez des conflits avec certains plugins ( exemple xiaomi )
  • Cochez: désactivez la gestion du réseau par jeedom
  • rajoutez si nécessaire dans le masque ip vos adresses docker les notre sont en 172.17 ce qui donnerait 127.0.0.1; 192.168.*.*; 10.*.*.*; 172.16.*.*; 172.17.*.*

Enfin revérifiez votre Santé Jeedom et tout devrait être au VERT.

Si vous rencontrez des problèmes de droits sur dossier/fichier ou après le lancement d’une sauvegarde. Alors sur votre container jeedom fraîchement créé il faudra faire les manipulations suivantes:

Commande a exécuter pour les droits Jeedom

$ ssh -p 22 192.168.***.*** -l root
$ docker exec -it jeedom sh
$ sudo chown -R www-data:www-data /tmp/jeedom/ /var/www/html/

Pour conclure, après avoir fait ça on peut retourner sur notre jeedom et vérifier que l’état de santé est ok.

Nico

Nico

Membre fondateur du site Haade, un passionné de domotique avec toutes les astuces qui vont biens.

commentaires