[Tuto] jeedom/jeedom:latest - Installation de Jeedom sur Synology avec docker en réseau Macvlan

Tags: #<Tag:0x00007f282e5f0c28> #<Tag:0x00007f282e5f0a48>

Mise à jour :
18/06/2020 : Tuto mis à jour suite à la nouvelle image jeedom/jeedom:latest sur le docker-Hub
05/05/2020 : Tuto obsolète suite à la suppression de l’image latest sur le Docker Hub
21/04/2020 : Maj partie Routage de l’adresse IP
18/04/2020 : création du tuto

Bonjour :wave:

Voici un tutoriel pour installer Jeedom sur un NAS Synology à partir de l’image jeedom/jeedom:latest disponible sur de docker-Hub

L’image comprend la base de donnée mysql. Il n’est donc plus utile d’utiliser phpMyAdmin

Vous pouvez également créer votre propre image Jeedom avec ce Tuto

Pour que Jeedom fonctionne correctement, il faut également créer un réseau docker macvlan

Pourquoi un réseau docker macvlan ?

Il existe deux réseaux bien connus avec Docker. Le Bridge et le Host.

  • Le Bridge est un réseau isolé qui empêche des plugins, qui doivent « écouter » en mode broadcast comme BLEA, Homebridge, Xiaomi, etc., de fonctionner

  • Le Host est ouvert au réseau extérieur mais limite son utilisation notamment avec la commande sudo pour des raisons de sécurité.

Le réseau docker macvlan va régler ses limitations.
Mais sa mise en place ne peut pas se faire avec l’interface graphique du paquet Docker de Synology !


------------------------------------------------------------------------------------
                                   Pré-requis
------------------------------------------------------------------------------------

:small_blue_diamond: Avoir un accès en SSH à son NAS. (voir doc Synology)
:small_blue_diamond: Connaitre l’IP de sa box / routeur
:small_blue_diamond: Connaitre l’IP de son NAS
:small_blue_diamond: Paquet Docker installé sur un NAS compatible
:small_blue_diamond: Drivers USB jadahl/drivers_6.2/ installé. Installation manuelle depuis le Centre de paquet
:small_blue_diamond: Créer un dossier jeedom-macvlan et un sous dossier html dans le dossier partagé docker de votre NAS Synology
:small_blue_diamond: Logiciel PuTTY
:small_blue_diamond: Logiciel notepad++

:small_orange_diamond: et un peu de patience …


------------------------------------------------------------------------------------
                           Création du réseau macvlan
------------------------------------------------------------------------------------

En préambule, je remercie infiniment @shad et @bruno78 du forum https://www.nas-forum.com/forum
Car ce sont eux qui m’ont donnés les éléments de ce qui suit :pray: :pray:

La création du réseau macvlan ne peut pas se faire avec l’interface graphique de Synology !
Nous allons utiliser le mode SSH et un logiciel comme PuTTY pour le créer.

Avant cela nous avons besoin de quelques données :

:small_blue_diamond: Connaitre l’IP de sa box / routeur :
Regarder dans votre box. En général c’est du genre 192.168.1.254

:small_blue_diamond: Connaitre le nom du réseau de notre NAS :
Lancer PuTTY
Connecter vous à votre NAS Synology avec votre nom utilisateur administrateur et saisissez votre mot de passe.
Lancer la commande sudo -i pour passer en mode root

Ressaisissez votre mot de passe
image

Lancer la commande ifconfig

image

Le nom du réseau est eth0 . Il est attaché à l’adresse IP de notre NAS


Voici les lignes de code pour créer notre nouveau réseau macvlan

docker network create \
-d macvlan \
--subnet=192.168.1.0/24 \
--ip-range=192.168.1.240/29 \
--gateway=192.168.1.254 \
--aux-address="host_bridge=192.168.1.241" \
-o parent=eth0 \
mymacvlan

Explication :
docker network create \ Commande docker pour créer un réseau
-d macvlan \ Utilisation du driver macvlan de Docker
--subnet=192.168.1.0/24 \ On utilise notre réseau existant
--ip-range=192.168.1.240/29 \ On attribue une plage d’adresse IP de 192.168.1.240 à 192.168.1.247
--gateway=192.168.1.254 \ On utilise le réseau de notre box
--aux-address="host_bridge=192.168.1.241" \ On réserve une adresse spécifique 192.168.1.241
-o parent=eth0 \ On le jointe au nom du réseau du NAS
mymacvlan On donne un nom à notre réseau mymacvlan

Dans PuTTY, faite un copier-coller du code et taper sur Entrer
image
Si tout va bien vous verrez une ligne avec pleins de caractères …

Vérifions avec la commande docker network ls
image

Notre réseau est créé ! :slightly_smiling_face:

Les adresses suivantes ne devront pas être utilisées
:small_orange_diamond:192.168.1.240 Réservé pour le NAS
:small_orange_diamond:192.168.1.241 Réservé pour le NAS


------------------------------------------------------------------------------------
                             Routage de l'adresse IP
------------------------------------------------------------------------------------

Un routage d’adresse IP c’est dérouté une adresse vers une autre adresse
Pourquoi ? parce que SYNOLOGY interdit a un conteneur de contacter le NAS sur sa propre adresse IP pour des raisons de sécurité

Donc nous allons définir un réseau avec une deuxième adresse d’accès à notre NAS qui sera 192.168.1.241


Voici les lignes de code pour créer notre routage
Lancer ces 5 lignes dans PuTTY

ip link add macvlan-br0 link eth0 type macvlan mode bridge
ip addr add 192.168.1.241/32 dev macvlan-br0
ip link set dev macvlan-br0 address 0:1:2:3:4:5
ip link set macvlan-br0 up
ip route add 192.168.1.240/29 dev macvlan-br0

Lancer la commande ifconfig
image

Voila le réseau macvlan-br0 avec le routage vers l’adresse IP 192.168.1.241 est créé :slightly_smiling_face:

:warning: Le routage disparaît quand on redémarre le NAS :warning:

En cas de redémarrage il faudra relancer ces lignes de commande
ou
Créer un script de démarrage dans les paramètres du NAS. Voir la partie :
:low_brightness: Script de démarrage Routage de l’adresse IP :low_brightness:


------------------------------------------------------------------------------------
                    Création du fichier "docker-compose.yaml"
------------------------------------------------------------------------------------

Pour créer notre conteneur, nous allons utiliser la commande docker-compose et un fichier de configuration docker-compose.yaml

Voici le contenu du fichier docker-compose.yaml

version: '2'

networks:
    default:
        external:
             name: mymacvlan

services:
    jeedom:
        container_name: jeedom-macvlan
        image: jeedom/jeedom:latest
        privileged: true
        pid: "host"
        stdin_open: true
        tty: true
        hostname: jeedom
        mac_address: a0:ca:ab:cd:ef:01
        networks:
             default:
                ipv4_address: 192.168.1.242
        volumes:
             - "/volume1/docker/jeedom-macvlan/html/:/var/www/html"
        devices:
             - "/dev/ttyUSB0:/dev/ttyUSB0"
             - "/dev/ttyUSB0:/dev/ttyUSB1"
             - "/dev/ttyACM0:/dev/ttyACM0"
        restart: unless-stopped
        environment:
             - PUID=1032
             - PGID=101
             - TZ=Europe/Paris
             - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Explication :

networks: notre conteneur sera attaché à notre réseau mymacvlan

ipv4_address: 192.168.1.242 Adresse IP pour joindre Jeedom

volumes: Répertoire « miroir » où sera installé Jeedom
image

devices: Ce sont les ports USB utilisés pour vos clés Zwave, CP210X, etc …
Lancer la commande dmesg |grep tty pour voir vos ports USB utilisés
image

PUID et PGID ID de l’utilisateur propriétaire.
Lancer la commande id <votre nom utilisateur administrateur>
image

:small_orange_diamond: Lancer notepad++, faite un copier-coller du code et sauvegarder le fichier docker\jeedom-macvlan\docker-compose.yaml


------------------------------------------------------------------------------------
                           Création du conteneur Jeedom
------------------------------------------------------------------------------------

Lancer la commande docker pull jeedom/jeedom:latest pour télécharger l’image de Jeedom
image

Lancer la commande cd /volume1/docker/jeedom-macvlan pour changer de répertoire
image

Lancer la commande ls pour visualiser le contenu du répertoire
image

Lancer la commande docker-compose up -d pour créer le contener
image


Pour vérifier, allez dans le paquet docker du synology
qoDmDfeEba


------------------------------------------------------------------------------------
                               Lancement de Jeedom
------------------------------------------------------------------------------------

Saisissez dans votre navigateur 192.168.1.242
La page de jeedom doit s’afficher

La page de connexion s’ouvre
le Nom d’utilisateur est admin
le mot de passe est admin

image

:warning: Changer votre mot de passe admin :warning:


Dans Configuration / réseaux / Accès interne
Vérifier votre adresse IP

image

1 J'aime
------------------------------------------------------------------------------------
               Script de démarrage Routage de l'adresse IP 
------------------------------------------------------------------------------------

Télécharger le fichier en pièce jointe
creation-routage-macvlan.txt (299 Octets)
Copier le dans le répertoire \docker\jeedom-macvlan
Renommer son extension de .txt en sh

Dans DSM :
Ouvrir Panneau de configuration / Planificateur de tâches
Créer
image

Saisissez le nom de la tache
image

Saisissez le code du script à exécuter

bash /volume1/docker/jeedom-macvlan/creation-routage-macvlan.sh

image

------------------------------------------------------------------------------------
                                   Bon à savoir
------------------------------------------------------------------------------------

Si vous utilisez plusieurs dongle USB il faut les installer sur un hub USB alimenté


Mes clés USB ne fonctionnent plus :
Éteindre le NAS
Débrancher l’alimentation du Hub USB
Rebrancher l’alimentation du Hub USB
Allumer le NAS


Sur quels ports sont branchés mes périphériques USB ?

dmesg | grep tty

Problème avec les ports USB :

chmod 777 /dev/tty*

Pour voir les droits des ports USB

ls -lh /dev/ttyUSB0


La page santé indique mémoire disponible à 0%
C’est tout à fait normal

Super tuto, merci à toi, j’avais justement abandonné mon installation sur un NAS Synology à cause des limitations que celle-ci imposait concernant les plugins compatibles.
Pour remédier à cela j’avais rapatrié ma configuration sur un raspberry 3 qui était resté longtemps dans un fond de tiroir.
Ce sera avec grand plaisir que je suivrait ce tuto lorsque je me lancerais dans une installation fraîche.
Encore un grand merci car les syno (d’un point de vue hard) peuvent sans soucis soutenir un Jeedom.

Bonjour,

Tuto très complet. Merci pour le boulot !

Moi, j’'ai immédiatement une erreur à la création du macvlan.

Voici mon ifconfig

image

Bizarre que mon réseau soit en ovs_eth0 non ?

C’est normal, car tu fais certainement virtual machine sur ton syno ?

Non, pas de VM, par contre j’ai un VPN ?

Du coup dans

-o parent=eth0 \

Je mets

-o parent=ovs_eth0 \

à la place ?

Oui tu mets —

ok merci. J’essaye ça

Ok, bingo !

Bon, ok, je suis arrivé au bout. Jeedom est fonctionnel. J’ai récupéré ma sauvegarde.
Par contre j’ai un problème avec les USB. J’avais laissé les tiennes parce que lorsque je fais

dmesg |grep tty
Il me met ceci
image

image

Dans jeedom, mes ports usb ne fonctionnent pas.
Je viens de faire un dir du dossier /dev et il n’y a pas de ttyusb.
Pourtant mon syno en a 3, 2 derrière et une en face avant. Elles sont fonctionnelles, je les ai testé à l’instant avec un clé USB. Elle a été reconnue à chaque fois.
Aurais-tu une idée ?
Merci.

Bonjour,

Alors, ce matin j’ai redémarré mon Syno, et non seulement

dmesg |grep tty

ne retourne absolument rien, mais en plus jeedom n’est plus accessible. Voici la réponse de la page web

SQLSTATE[HY000] [2002] No route to host

Le conteneur est bien lancé dans Docker.
Je n’ai aucun message d’erreur dans le journal de Docker

Aurai-tu une ide du problème ?
Merci;

C’est tout à fait normal que tu ne puisse pas accéder à Jeedom
Le routage disparaît quand on redémarre le NAS

Il faut relancer les 5 commandes

Je mettre à jour le tuto …

Ah Ok ! Y’a t-il un moyen de lancer les instructions automatiquement ?

Et pour mon problème d’USB, une idée ?

Merci.

Oui il faut que je mette à jour le tuto

C’est quoi comme clé USB ?
Quand tu dis redémarré

tu as essayé avec une seule clé pour voir ?

Oui, absolument. C’est une cle de 64G que j’ai branchée alternativement dans chaque port puis éjectée proprement depuis DSM. Chaque fois elle apparaissait dans le gestionnaire de fichier. Je n’avait qu’elle branchée sur le syno en UB. Car par ailleurs, j’ai un disque de sauvegarde de 4T en usb. Je l’avais débranché pour les tests.

Peut-être que mes clés Zwave et RFXCom doivent réellement passer par un hub USB alimenté ?
Pourtant la clé zwave s’allume correctement…

Il faut faire un essai avec la clé zwave uniquement branché
Toutes les autres supprimées physiquement…

Stop tous les conteneurs
Éteins le nas
Redémarre le NAS
Démarre uniquement le conteneur Jeedom macvlan

Post une capture écran de la configuration des ports du plugin zwave

J’ai un peu travaillé dessus cette nuit :scream:

En fait le syno reconnait l’interface RFXCom mais pas la cle zwave.
En fait en regardant à nouveau le tuto, j’ai vu que tu demandais que les drivers USB de Jadahl devaient être installés, ce qui est mon cas. Mais du coup je me suis dit qu’il y a peut-être un rapport. J’ai vu dans le paquet qu’il est indiquéde faire lsusb -v et usb-devices.

J’ai analysé mes ports USB. L’interface RFXCom est reconnue mais pas la clé ZWAVE, branchés directement sur le port avant.

Du coup, je viens d’acheter un hub alimenté pour voir. Peut-être qu’elle pompe trop.

Je n’ai pas d’autres docker en service.

Bon, j’avance doucement. Je vois que tu as fait la mise à jour avec le script. C’est super. Merci.

Comment peut-on modifier les devices dans le fichier docker-compose.yaml ?
Finalement j’arrive à avoir une ttyUSB0, une ttyACM0 et une ttyACM1.
Est-ce que modifier le fichier dans le répertoire docker/jeedom-macvlan suffit ?

Oui.
tu supprimes ton conteneur
Après modification du fichier tu lances la commande docker-compose up -d

ok :+1:

Merci beaucoup