[TUTO] Docker et Macvlan - Avoir Jeedom sur son réseau local

Tags: #<Tag:0x00007fa7a89bd1b8>

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
  1. 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 …

  1. 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 faire nano 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 :stuck_out_tongue:
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 :slight_smile: amusez-vous bien, et surtout n’oubliez jamais d’apprendre.

Résumé

P’tite pub passagère :stuck_out_tongue:
Forum r-link : https://auboncoindurlink.fr
Forum zorinos (linux) : https://zorinos.fr


C’est presque pareil :joy::joy::joy::joy:

Presque … et pourtant j’ai passé pas loin d’une journée a décortiqué ce tuto qui m’a servi de support pour l’adapter a mon debian 10 …
Je me suis appuyé sur celui-ci aussi : [Tuto] ⏩ jeedom/jeedom:latest - Installation de Jeedom sur Synology avec docker en réseau Macvlan

Mais comme je te dis, avec les deux tuto, j’ai mis pas loin d’une journée, c’est pour ça que j’ai préféré fais un retour d’expérience :slight_smile:
Il y a quelque subtilité qui m’ont bien fait galérer lol

Oui c’est également mon tuto :joy:

Tu vois dans un des tuto il est indiqué privileged: true
Dans l’autre privileged: false
D’un côté on nous demande des identifiants mysql de l’autre non …
D’un côté de devices sont cité de l’autre ils sont en miroir …

Dès configurations qui fonctionne surement très bien sur synology mais sur debian ça m’a mis une de ces merdes lol … plein de petit détail a droite et a gauche comme ça :stuck_out_tongue: donc j’ai jugé nécessaire de faire un retour d’expérience sur ce que j’ai vécu lol

En tout cas merci pour tes TUTO ils m’ont servi de bon support, j’ai mis une journée avec, donc sans j’aurai mis beaucoup plus lol, et au moins le prochain qui veux faire sur Debian il pourra utiliser le mien directement :slight_smile: