meta données pour cette page
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
- Avoir un accès en SSH à son NAS. (voir doc Synology)
- Connaitre l’IP de sa box / routeur
- Connaitre l’IP de son NAS
- Paquet Docker installé sur un NAS compatible
- Drivers USB Installation manuelle depuis le Centre de paquet. SynoCommunity
- Suivant l’architecture du NAS De quel type de CPU mon Synology NAS est-il équipé ? - Synology Centre de connaissances
- Installation des drivers pour DSM 7 : voir ici Jeedom sur Synology sous Docker et mise à jour DSM7?
- Créer un dossier
jeedom-macvlan
dans le dossier partagédocker
de votre NAS - Créer un sous dossier
\docker\jeedom-macvlan\html
- Créer un sous dossier
\docker\jeedom-macvlan\db
- Logiciel PuTTY ou autre logiciel qui permet une connexion SSH
- Logiciel notepad++
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 :