Bonjour,
Je vais essayer de vous faire part de mon retour d’expérience ou j’ai passé pas loin de la journée pour configurer Macvlan avec jeedom, et wireguard pour avoir accès a mon jeedom depuis l’extérieur (hors de question d’ouvrir des ports).
Avantage d’utiliser macvlan :
- Votre conteneur est vu sur votre réseau local au même niveau que le reste de vos équipements et pas sur le sous réseau des dockers, ce qui permet de configurer des applications comme homekit et autre…
Prérequis :
- Avoir une machine sous debian 10
- Être connecté en SSH dessus
- Avoir docker et docker-compose d’installé
TUTO
PS : Si vous avez une petite connexion internet, vous pouvez lancer cette commande pendant que vous lisez le tuto cela permettra de télécharger l’image de Jeedom pendant votre lecture :
docker pull jeedom/jeedom:latest
- Donc on va commencer par créer le conteneur macvlan pour ce faire voici ma config :
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=enp0s31f6 \
mymacvlan
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.1 \ 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=enp0s31f6 \ On le jointe au nom du réseau du NAS
mymacvlan On donne un nom à notre réseau mymacvlan
Configuration à adapter a votre routeur/box …
- On va créer jeedom avec docker-compose.
Créer un dossier et fichier docker-compose.yml
en ce qui me concerne je crée : /sh/jeedom/docker-compose.yml
se mettre dans le dossier /sh/jeedom/ et fairenano docker-compose.yml
Puis y ajouter :
version: '2'
networks:
default:
external:
name: mymacvlan #ICI on dit de passer par le réseau mymacvlan précédement créer.
services:
jeedom:
container_name: jeedom-macvlan #On donne le nom du conteneur
image: jeedom/jeedom:latest #On utilise l'image docker de jeedom
privileged: false #On ne donne pas les droits previlège, j'ai passé beaucoup de temps a comprendre qu'il fallait mettre false ici.
pid: "host"
stdin_open: true
tty: true
hostname: jeedom
mac_address: a0:ca:ab:cd:ef:01 #Adresse MAC de notre conteneur
networks:
default:
ipv4_address: 192.168.1.51 #Adresse IP de notre conteneur
volumes:
- "/doker/jeedom/www:/var/www/html" #/dossier-de-config:/var/www/html
- "/doker/jeedom/db:/var/lib/mysql" #/dossier-de-base-de-donnée:/var/lib/mysql
devices: #En dessous on liste les prises USB à associer à jeedom.
- "/dev/ttyUSB0"
- "/dev/ttyUSB1"
- "/dev/ttyUSB2"
- "/dev/ttyUSB3"
restart: unless-stopped #On redémarre le conteneur avec la machine
environment:
- TZ=Europe/Paris
- PUID=1000 #A définir
- PGID=1000 #A définir
- SYSTEMD_IGNORE_CHROOT=yes #Important
- SHELL_ROOT_PASSWORD=PASSWORD #Mots de passe SSH du conteneur
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Explication :
volumes:
Répertoire « miroir » où sera installé Jeedom
devices:
Ce sont les ports USB utilisés pour vos clés Zwave, CP210X, Zigate, SMS etc …
Lancer la commande dmesg |grep tty
pour voir vos ports USB utilisés
PUID
et PGID
ID de l’utilisateur propriétaire.
Lancer la commande id <votre nom utilisateur administrateur>
(Pas root, utilisateur administrateur)
Si vous n’avez pas fait le PS du début c’est le moment de lancer : docker pull jeedom/jeedom:latest
Une fois le fichier docker-compose.yml créer, vérifier que vous vous trouvez bien dans le dossier pour moi /sh/jeedom/ et exectuer : docker-compose -f docker-compose.yml up --detach
Et voilà vous avez (dans mon cas toujours) jeedom qui tourne dans votre conteneur mais vu sur votre réseau local sous l’IP 192.168.1.51
Passons à WireGuard pour les intéressés d’avoir accès a leur réseau local via l’extérieur.
Tout le problème était d’avoir WireGuard qui se connecte également à Macvlan pour avoir accès a l’ensemble du réseau local, et donc aussi à jeedom et pas uniquement à ce qui se trouve sur le réseau docker.
Pour WireGuard, toujours dans mon cas, je vais le créer dans /sh/wireguard/docker-compose.yml
Je me rend donc dans /sh/wireguard/
et je fais un nano docker-compose.yml
Maintenant je renseigne ceci dans le fichier :
version: '3'
networks:
default:
external:
name: mymacvlan #Toujours le réseau Macvlan
services:
wireguard:
image: ghcr.io/linuxserver/wireguard:latest #L'image a utiliser.
container_name: wireguard-macvlan #Nom du conteneur
cap_add:
- NET_ADMIN #Important, accès admin au réseau
- SYS_MODULE #IDEM
sysctls:
- net.ipv4.conf.all.src_valid_mark=1 #Config préconsier par linuxserver/wireguard
hostname: wireguard
mac_address: a0:ca:ab:cd:ef:02 #Adresse MAC du conteneur wireguard, mettre différent de jeedom
networks:
default:
ipv4_address: 192.168.1.30 #Adresse IP du conteneur wireguard
volumes:
- "/doker/wireguard/config:/config" #dossier de config : /dossier-de-config/:/config
- "/lib/modules:/lib/modules" #Ne pas toucher
restart: unless-stopped #Redemarrer avec le démarrage de la machine
environment:
- TZ=Europe/Paris
- PUID=1000 #PUID a faire comme sur jeedom
- PGID=1000 #PGID a faire comme sur jeedom
- SYSTEMD_IGNORE_CHROOT=yes #Important
- SHELL_ROOT_PASSWORD=PASSWORD #mots de passe SSH
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin #Ne pas toucher
- SERVERURL=ADRESSEIP-OU-DNS #adresse IP ou DNS d'internet a chez vous (chez moi c'est un DDNS no-ip)
- SERVERPORT=51820 #Port du wireguard, ne pas toucher
- PEERS=5 #Nombre de fichier de configuration a créer (recommender d'en faire un par appareil)
- PEERDNS=auto #Pas toucher
- INTERNAL_SUBNET=10.13.13.0 #Config préconsier par linuxserver/wireguard
- ALLOWEDIPS=0.0.0.0/0 #Config préconsier par linuxserver/wireguard
Voilà j’ai bien commenté le fichier je pense que je n’ai pas besoin de faire d’explication
Vous enregistrez et si vous êtes bien dans le bon dossier alors vous pouvez faire :
docker-compose -f docker-compose.yml up --detach
Ensuite allez dans /dossier-de-config/
dans mon cas /doker/wireguard/config
et la vous aurez peer1 peer2 peer3 peer4 … qui sont les dossiers a récuprer (mais bien laisser aussi sur le serveur) peer1 est une configuration pour le wireguard, peer2 une autre configuration etc … comme je vous disez je vous recommande de faire une configuration = un appareil …
Bon courage amusez-vous bien, et surtout n’oubliez jamais d’apprendre.
Résumé
P’tite pub passagère
Forum r-link : https://auboncoindurlink.fr
Forum zorinos (linux) : https://zorinos.fr