NAS Synology – Comment installer un serveur PXE iVentoy dans un conteneur Docker
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à déployer iVentoy dans un container Docker sur un NAS Synology, à l'aide de l'application Container Manager. Ceci va permettre d'avoir un serveur PXE sur notre NAS Synology ! iVentoy prend en charge des images ISO Windows, Linux, etc.
Pour en savoir plus sur le serveur PXE iVentoy, consultez cet article :
Avant de commencer, veuillez installer le paquet "Container Manager" (Docker) sur votre NAS Synology. Ici, un NAS sous DSM 7.2 est utilisé.
II. Installer iVentoy sur un NAS Synology
A. Créer un répertoire pour le conteneur iVentoy
Nous allons commencer par créer un répertoire dédié pour ce conteneur, ainsi que plusieurs sous-répertoires nécessaires pour transférer des données à l'application. Ainsi, dans le répertoire "docker", nous allons créer un répertoire nommé "iventoy". Au sein de celui-ci, trois autres répertoires sont à créer : "data", "iso", "log".
Ce qui donne l'arborescence suivante :
B. Copier les fichiers "data" d'iVentoy
Au sein du répertoire "data" que nous venons de créer, nous devons stocker deux fichiers : "iventoy.dat" et "mac.db". Sans cela, le conteneur ne fonctionnera pas. Où faut-il récupérer ces fichiers ? Bonne question ! Vous devez télécharger la dernière version d'iVentoy sur GitHub :
Dans l'archive obtenue, vous pourrez trouver un dossier nommé "data" avec ces deux fichiers. Il vous suffit de les envoyer vers le NAS. Comme ceci :
En complément, dans le dossier "iso", vous pouvez copier-coller les images ISO des systèmes d'exploitation que vous souhaitez déployer par le réseau avec iVentoy.
C. Créer le conteneur iVentoy
Désormais, nous allons pouvoir créer le conteneur iVentoy à partir de Container Manager. Cliquez sur "Projet" puis créez un nouveau projet.
Nommez ce projet "iventoy" et sélectionnez le chemin "/docker/iventoy" correspondant au répertoire racine créé précédemment. De plus, sélectionnez la valeur "Créer un fichier docker-compose.yml" pour l'option "Source" puisque nous allons utiliser une configuration Docker Compose.
Que faut-il indiquer ici ? Comme point de départ, nous allons utiliser la configuration Docker Compose disponible sur cette page GitHub. Mais, nous devons modifier cette configuration, car elle n'est pas adaptée pour Synology.
Nous devons personnaliser cette configuration, notamment car iVentoy doit communiquer en direct avec notre réseau local. En effet, comme il joue le rôle de serveur DHCP et serveur PXE, il doit être joignable par les hôtes du réseau.
Pour la couche réseau de ce conteneur, nous allons utiliser le pilote macvlan de Docker pour répondre à ce besoin : notre conteneur iVentoy aura une adresse IP statique sur notre réseau local. Un réseau nommé "macvlan" sera créé dans Container Manager.
Voici le code complet et, à la suite, des explications supplémentaires :
---
version: '3.9'
services:
iventoy:
image: ziggyds/iventoy:latest
container_name: iventoy
restart: always
privileged: true #must be true
ports:
- 26000:26000
- 16000:16000
- 10809:10809
- 67:67/udp
- 69:69/udp
volumes:
- /volume1/docker/iventoy/iso:/app/iso
- /volume1/docker/iventoy/data:/app/data
- /volume1/docker/iventoy/log:/app/log
environment:
- AUTO_START_PXE=true # optional, true by default
networks:
macvlan:
ipv4_address: 192.168.1.170
volumes:
iso:
external: true
data:
external: true
networks:
macvlan:
name: macvlan
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- subnet: "192.168.1.0/24"
ip_range: "192.168.1.192/28"
gateway: "192.168.1.254"
Pour vous aider à comprendre cette configuration Docker Compose, voici quelques indications.
Ce conteneur doit être exécuté en mode privilégié, ce qui explique la présence de cette ligne :
privileged: true #must be true
La section "volumes" sert à mapper les répertoires du conteneur avec ceux présents sur notre NAS. Le répertoire "iso" créé précédemment devra être utilisé pour stocker les images ISO que vous souhaitez utiliser dans iVentoy.
volumes:
- /volume1/docker/iventoy/iso:/app/iso
- /volume1/docker/iventoy/data:/app/data
- /volume1/docker/iventoy/log:/app/log
Le conteneur sera connecté au réseau "macvlan" et il aura l'adresse IP "192.168.1.170". Adaptez en fonction de votre réseau local.
networks:
macvlan:
ipv4_address: 192.168.1.170
Cette partie de la configuration vise à créer le réseau "macvlan" dans Docker. Il est associé au sous-réseau "192.168.1.0/24", à la passerelle par défaut "192.168.1.254" . Nous attribuons aussi la plage d'adresses IP "192.168.1.192/28" (soit 14 adresses IP) au conteneur. Pour rappel, la version FREE d'iVentoy est, de toute façon, limitée à 20 adresses IP.
networks:
macvlan:
name: macvlan
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- subnet: "192.168.1.0/24"
ip_range: "192.168.1.192/28"
gateway: "192.168.1.254"
Une fois que vous avez adapté cette configuration à votre environnement, poursuivez jusqu'à la fin pour créer le conteneur Docker.
Le conteneur iVentoy est actif, nous allons pouvoir tenter une connexion à l'interface web !
D. Accéder à l'interface web d'iVentoy
Pour accéder à l'interface de gestion d'iVentoy, nous devons spécifier l'adresse IP du conteneur, ainsi que le numéro de port (26000 pour la GUI Web).
http://192.168.1.170:26000/
Nous avons bien accès à l'interface d'administration. Si vous ne parvenez pas à accéder à l'interface d'iVentoy, vérifiez la configuration de votre pare-feu Synology, ainsi que votre fichier Docker Compose.
Il ne reste plus qu'à effectuer la configuration d'iVentoy avant de faire notre premier test de déploiement ! Pour cela, référez-vous à notre précédent tutoriel sur iVentoy, si vous avez besoin d'aide.
III. Conclusion
En suivant ce tutoriel, vous êtes en mesure de mettre en place un serveur PXE iVentoy sur votre NAS Synology grâce à un conteneur Docker ! Libre à vous de l'installer sur un NAS ou sur une machine Linux ou Windows puisque iVentoy est léger et qu'il peut être déployé sur différents systèmes.
On peut adapter ce tuto pour un Qnap ?
Du feu de dieu. Merci beaucoup pour ce tuto.
De mon côté, je ne comprenais pas pourquoi je n’avais pas Container et je me suis aperçu qu’il fallait que je fasse la MAJ manuel du NAS et après impeccable.
Bonjour, j’ai suivi le tuto et au moment de lancer le container j’ai un message ‘failed to create the macvlan port:device or exit code: 1
Pourrais tu me dire ou j’ai fait une erreur
Merci
Problème pour moi, j’ai la même erreur
même erreur et pas de solution .
Bonsoir,
C’est possible que ce soit lié à cette ligne : « parent: eth0 » – Elle sert à spécifier l’interface réseau physique à laquelle le réseau macvlan doit être attaché. Il faut aussi regarder que les adresses IP assignées au conteneur sur le réseau macvlan ne sont pas en conflit avec d’autres appareils sur le réseau.
J’ai vérifié et ce n’est pas un conflit d’ip . Pour le nom eth0 comment voir ou être sûr du nom ? J’ai un 1819+ et un 720+ j’ai la même erreur .
Bonjour,
J’avais le même problème (testé avec Container Manager comme dans le tuto ou avec Portainer)
Pour réupérer le nom de l’interface réelle sur les NAS et sur Linux en général, on peut se connecter en SSH avec un compte à privilège. Il suffit de taper la commande suivante : « ip a »
On récupère toutes les informations nécessaires. c’est ici que j’ai constaté que j’ai constaté que l’ip de mon NAS n’était pas portée par « eth0 » ou « eth1 » mais par « ovs_eth0 ». Une fois ce paramètre modifié sur le fichier de conf j’ai pu redéployer sans erreur.
J’espère que cela pourra vous aider.
Cordialement
Raph
moi aussi même erreur
Bonsoir,
J’ai suivi le tuto mais au démarrage il refuse de démarrer et quand je regarde dans journal j’ai cette erreur: exec /usr/bin/sh: exec format error
D’où est-ce que ça pourrait venir svp ?
Merci d’avance,
Bonne soirée.
J’ai la même chose que toi, impossible de démarrer le projet.
Bonsoir,
Comme d’habitude, le tuto est super clair et bien documenté (Merci). C’est tout à fait transposable sur Portainer. Après avoir rencontré un souci de déploiement lié au mauvais nommage de mon interface réseau dans le fichier de configuration tout a fonctionné une fois la modification effectuée (merci au SSh et à la commande « ip a »).
En revanche, j’ai constaté un phénomène étrange sur le pool DHCP car dans mon cas, j’ai opté pour la configuration suivante :
networks:
macvlan:
ipv4_address: 192.168.1.230
…
– subnet: « 192.168.1.0/24 »
ip_range: « 192.168.1.232/29 »
gateway: « 192.168.1.1 »
J’ai constaté dans l’interface graphique qu’il me proposait un ip pool (Begin) 192.168.1.200 et un ip pool (end) 192.168.1.219 ce qui ne colle pas avec l’ip range mentionné dans la configuration.
A modifier à la main avant de lancer et le tour est joué.
Merci encore pour ce tutoriel
Raph
Bonjour,
Merci infiniment pour les tuto, ils sont excellents
Question: je dispose d’un Synology DS1511+, visiblement le package n’est pas disponible Container Manager n’est pas disponible pour cette version, avez vous une solution de contournement ? pour pourvoir utiliser Docker Compose ?
Merci par avance
Hassane