Monter un serveur Jeedom sur NAS Synology (via Docker et container manager)

Installation réalisée grâce au tuto suivant : https://community.jeedom.com/t/tuto-installation-de-jeedom-sur-synology-avec-docker-et-reseau-macvlan/22039
J'en retranscris ici une grande partie.

Mise en place d'un réseau 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 macvlan de Docker va régler ces limitations.
L’accès à Jeedom se fera avec une adresse IP dédiée sur le réseau local. Mais sa mise en oeuvre ne peut pas se faire avec l’interface graphique du paquet Docker de Synology !
Il faudra utiliser les commandes docker en ssh

Pré-requis

Réseau macvlan

La création du réseau macvlan ne peut pas se faire via l’interface graphique de Synology.
Il faudra utiliser le service SSH et un logiciel comme PuTTY pour se connecter.
Avant de commencer, vous aurez besoin :

  • Connaitre l’IP de sa box / routeur / passerelle. En fonction des box, cela change. En règle général, c'est 192.168.1.1 ou 192.168.1.254
  • Connaitre le nom du réseau du NAS / l'adresse IP

Connecter vous à votre NAS Synology via Putty ou autre ; avec votre nom utilisateur (exemple : administrateur)
Lancer la commande sudo -i pour passer en mode root. Ressaisir le mot de passe.

La commande ifconfig permet de vérifier l'interface du réseau, ici c'est eth0 :

Création du réseau mcvlan

Il faudra adapter les commandes selon votre configuration.

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 \ ⇒ Désigne le réseau actuel
–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.1 \ ⇒ Désigne la passerelle : adresse IP de la box ou routeur. Bien souvent : 192.168.1.1 OU 192.168.1.254
–aux-address=“host_bridge=192.168.1.241” \ ⇒ On réserve une adresse spécifique pour un éventuel routage de l’adresse IP.
-o parent=eth0 \ ⇒ Associer à l'interface
mymacvlan ⇒ On donne un nom à notre réseau mymacvlan


L’adresse 192.168.1.241 servira notamment pour ceux qui utilisent le plugin BLEA avec la création d’une antenne déportée ou d’autres containeur Docker qui doivent communiquer avec Jeedom.

Exemple :

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

Je conseille de préparer le code adapté à votre configuration puis copiez collez le sur le NAS via Putty.
Si la création du réseau se fait correctement, il y aura une ligne avec plein de caractères.
Vérifier que le réseau est créé avec la commande :
docker network ls

Le réseau macvlan est créé.
ATTENTION !

Les adresses suivantes ne devront pas être utilisées (réservées pour le NAS) :
192.168.1.240
192.168.1.241


Si besoin, vous pouvez supprimer le réseau avec la commande docker network rm [ID]
Exemple :

docker network rm 864ddd55cac0

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 de mon fichier docker-compose.yaml en version 2 :

version: '2'

networks:
     default:
        name: mymacvlan

services:
    jeedom:
         container_name: jeedom-v4
#         build : ./
         image: jeedom/jeedom:4.3-buster
         privileged: false
         pid: "host"
         cap_add:
             - SYS_PTRACE
             - SYS_ADMIN
         tty: true
         hostname: jeedom
         mac_address: a0:ca:ab:cd:ef:04
         networks:
             default:
                 ipv4_address: 192.168.1.245
         volumes:
             - "/volume1/docker/jeedom-macvlan/html:/var/www/html"
             - "/volume1/docker/jeedom-macvlan/db:/var/lib/mysql"
         restart: unless-stopped
         environment:
             - TZ=Europe/Paris
             - PUID=1026
             - PGID=101
             - SYSTEMD_IGNORE_CHROOT=yes
             - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Le fichier est à adapter selon la configuration. J'ai choisi cette adresse IP pour mon serveur : 192.168.1.245 mais vous pouvez en choisir une autre (correspondant au range indiqué dans la configuration du réseau macvlan.

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

image: Image utilisée pour construire notre conteneur
Dans cette exemple on utilise jeedom/jeedom:4.3-buster

ipv4_address: 192.168.1.245 ⇒ Adresse IP pour joindre le serveur Jeedom

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

Il y a également une subtilité si vous utilisez une / des clés USB pour joindre vos équipements. Voir le tuto original indiqué au début de l'article.

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

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

Création du container JEEDOM

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

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

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

Lancer la commande docker-compose up -d pour créer le conteneur.

Container manager sur Synology

Vérifier dans l'application CONTAINER MANAGER que le conteneur est monté et UP :

Vérifier que la configuration du portail Web est correcte :

Côté webstation :

Interface Web

Vous pouvez maintenant joindre votre serveur Jeedom (via interface web) à l'adresse IP que vous lui avez attribué.

Pour ma part le 192.168.1.245 :