Aller au contenu

[TUTO] Docker : Introduction


.Shad.

Messages recommandés

Bonjour @Didier3L, @.Shad.

j'ai une bonne et une mauvaise nouvelle !

  • la bonne, c'est que j'ai pu faire fonctionner la solution basée sur Docker et réseau macvlan (non sans mal !!). Je n'ai pas d'équipement manageable via Jeedom ni de compte, donc je n'ai pas pu aller très loin, mais on passe bien les étapes de connexion et de configuration de la base de données, puis accès à l'application Jeedom elle même.
  • la mauvaise, ...... c'est que je n'ai plus le temps ce soir, et que je ne ferai une description de l'ensemble que demain 🙂

 

 

1907732648_jeedomecrancnx1.thumb.JPG.f0b48a99b2652a7d91de3022877867be.JPG1483615668_cnxdatabase.JPG.dcee2057584fb16c625f8e4e2f4ccc61.JPG91718748_jeedom2market.thumb.JPG.8830264ef6cdbc214ee027e2ae5b4ec4.JPG

Modifié par bruno78
Lien vers le commentaire
Partager sur d’autres sites

Bonne nouvelle !

Moi en relisant les messages @Didier3L, je me suis fait deux remarques :

  • Pourquoi avoir modifié le fichier /etc/hosts ? à aucun moment tu as essayé de joindre le conteneur par son nom plutôt que par son IP. D'autant que les changements manuels de /etc/hosts sont effacés à chaque redémarrage du NAS.
  • As-tu supprimé tous les fichiers présents dans les volumes montés entre chaque essai ?
  • As-tu essayé d'installer Jeedom autrement qu'avec le script ? comme moi je l'ai fait dans le post suivant

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

  • je vais donner le détail dans la journée, mais effectivement :
    • je n'ai pas eu besoin de modifier le fichier hosts
    • problème majeure rencontré : pas de résolution DNS (le DNS par defaut de Jeedom à l'installation est 127.0.0.11, ce qui ne va pas nous servir ici !) => nécessité de mapper un fichier /etc/resolv.conf personnalisé dés le démarrage du container (c'est en tout cas la solution la plus rapide que j'ai trouvée)
    • Pour la commodité, j'ai également mappé un fichier sources.list, c'est toujours ca de moins à faire en mode console
    • Ce qui donne dans le docker-compose.yaml :

    volumes:
       - "/volume1/docker/jeedom/html:/var/www/html"
       - "/volume1/docker/jeedom/etcresolv.conf:/etc/resolv.conf:ro"
       - "/volume1/docker/jeedom/aptsources.list:/etc/apt/sources.list:ro"

 

  • lors de la première connexion de Jeedom à la base de données, il faut utiliser le user root de la bdd.
  • et à la fin de l'installation, si elle se passe bien, un compte jeedom admin/admin est créé avec lequel on doit se reconnecter, et changer le mot de passe à la première connexion.
Lien vers le commentaire
Partager sur d’autres sites

Je vous présente ici la façon dont j'ai pu configurer un docker Jeedom, avec sa base associée mariaDB, sur un réseau docker de type macvlan.
En 2 mots, l'avantage du réseau macvlan est de configurer l'équivalent d'une vraie machine physique sur son LAN, avec ses adresses MAC et IP propres. Cela permet entre autre d'exposer les ports standards puisqu'il n'y a pas de doublons.
Il y a également quelques inconvénients, comme l'impossibilité de communiquer avec l'hôte (mais il y a un contournement possible)

1) ma configuration initiale :

Un réseau LAN en 192.168.1.0/24
Une box Freebox Révolution sur ce LAN en 192.168.1.1. Cette Box fait fonction de gateWay, et de serveur DHCP pour le LAN.
La plage IP allouée pour le DHCP est : [192.168.1.100 <=> 192.168.1.247]
Au niveau Docker du NAS :
Un réseau de type "bridge" qui est utilisé pour du monotoring (telegraf / influxdb / grafana). Ce n'est pas l'objet ici. (mais j'ai promis aussi de faire un tuto "monitoring freebox basé sur ce trio. Ca va venir, mais entre temps le disque dur de ma box a cramé. Ca m'a un peu ralenti !)
Un réseau de type "bridge macvlan" utilisé pour 2 dockers: serveur DNS/Pihole (192.168.1.250) et serveur Plex (192.168.1.249).

Cf. schéma ci-dessous.

Diapositive1.thumb.PNG.41f747e2abe18e007cbc20ad4a5cf0a9.PNG

Les configurations correspondantes sont les suivantes :

        docker-compose.yaml    
                
                version: '2'
                
                networks:
                  brw_network:
                    driver: macvlan
                    driver_opts:
                      parent: ovs_eth0
                    ipam:
                      config:
                        - subnet: 192.168.1.0/24            
                          gateway: 192.168.1.1                   
                          ip_range: 192.168.1.248/29        
                                  
                services:
                  pihole:
                    container_name: pihole-pihole1
                    image: pihole/pihole:latest
                    hostname: pihole
                    domainname: xxxxx.eu             
                    mac_address: d0:ca:ab:cd:ef:01
                    cap_add:
                      - NET_ADMIN
                    networks:
                      brw_network:
                           ipv4_address: 192.168.1.250
                    volumes:
                       - /volume1/docker/compose/piconfig/pietc:/etc/pihole
                       - /volume1/docker/compose/piconfig/pidnsmasq:/etc/dnsmasq.d
                    dns:
                      - 127.0.0.1
                    ports:
                      - 443/tcp
                      - 53/tcp
                      - 53/udp
                      - 67/udp
                      - 80/tcp
                    environment:
                      ServerIP: 192.168.1.171              # <-- Update (match NAS ipv4_address)
                      DNS1: 80.67.169.12
                      DNS2: 80.67.169.40
                      VIRTUAL_HOST: pihole.xxxxx.eu   # <-- Update (match hostname + domainname)
                    restart: unless-stopped
                    
                  plex:
                    image: linuxserver/plex:latest
                    container_name: PlexLesMongets
                    mac_address: d0:ca:ab:cd:ef:02
                    networks:
                      brw_network:
                           ipv4_address: 192.168.1.249
                    dns:
                      - 192.168.1.250     # <- .250 PiHole
                    hostname: PlexLesMongets
                    volumes:
                      - /volume1/docker/compose/plexconfig:/config
                      - /volume1/music:/docker/musiquedocker
                      - /volume1/homes/momuser/Drive/Moments:/docker/photodocker
                      - /volume1/video:/docker/videodocker
                
                    environment:
                      - VERSION=latest
                      - TZ=Europe/Paris
                    restart: unless-stopped
 

Script de routage vers le réseau macvlan, à lancer au demarrage du NAS. C'est ce qui permet aux dockers sur ce réseau de communiquer vers l'exterieur.

        #!/bin/sh
        # permettre au docker PiHole cree selon la méthode dite Tony Lawrence
        # a l'addresse 192.168.1.250/32
        # http://tonylawrence.com/posts/unix/synology/free-your-synology-ports/
        # de communiquer avec l'hote cad le NAS DNS-server
        #
        # creation non persistante
        # a relancer a chaque demarrage du NAS
        
        #Set timeout to wait host network is up and running
        
        sleep 60
        
        #Host macvlan bridge recreate
        
        ip link add bridgemacvlan link ovs_eth0 type macvlan  mode bridge
        ip addr add 192.168.1.251/32 dev bridgemacvlan
        # address MAC. cf https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax
        # il faut que le premier octet soit PAIR
        # cela permet d'avoir a chaque redemarrage la meme addr MAC, sinon elle change
        # cela facilite les stats dans PiHole onglet >network
        ip link set dev bridgemacvlan address 0:1:2:3:4:5
        ip link set bridgemacvlan up
        #
        ip route add 192.168.1.248/29 dev bridgemacvlan

2) La cible :

Ajouter et configurer les 2 containers, Jeedom et MariaDB, sur le réseau macvlan.
Cf. figure ci-dessous

Diapositive2.thumb.PNG.22309147b26473ae478a731f328da7b7.PNG


3) Jeedom & mariaDB : préparation du fichier docker-compose.yaml dédié.

Jeedom a besoin d'une base de données, je prendrais donc MariaDB10. J'ai dejà le paquet Syno MariaDB installé, mais par mesure de sécurité je préfère dissocier. Donc je vais également monter un docker MariaDB dédié à Jeedom.

Image Jeedom : jeedom/jeedom:master
Image MariaDB : mariadb:latest

Service Jeedom :
    adresse MAC (arbitraire) : a0:ca:ab:cd:ef:01
    adresses IP sur le réseau macvlan : 192.168.1.252
    limite utilisatin mémoire (soyons prudents) : 500M
    montage fichiers (persistence) :
            volumes:
                - "/volume1/docker/jeedom/html:/var/www/html"

    montage fichier (resolution DNS, indispensable !):
            volumes:
                - "/volume1/docker/jeedom/etcresolv.conf:/etc/resolv.conf:ro"

    montage volume (listes sources, c'est juste du confort pour la suite):
            volumes:
                - "/volume1/docker/jeedom/aptsources.list:/etc/apt/sources.list:ro"

Service MariaDB :
    adresse MAC (arbitraire) : a0:ca:ab:cd:ed:10
    adresses IP sur le réseau macvlan : 192.168.1.253
    limite utilisatin mémoire (soyons prudents) : 500M
    montage fichiers (persistence de la database) :
            volumes:
                - "/volume1/docker/mariadb/db:/val/lib/mysql"

    variables d'environnement mariadb:création compte root et mot de passe et nom de la databse.
            environment:
                - MYSQL_ROOT_PASSWORD=toto
                - MYSQL_DATABASE=jeedomdb

Réseau pour les 2 dockers : il faut indiquer que l'on fait appel au réseau macvlan existant (compose_brw_network), défini en dehors de ce docker-compose, de la façon suivante pour chaque docker:
       networks:
          default:
               ipv4_address: 192.168.1.252 (ou 253 suivant le service)

Récapitulatif : fichier docker-compose.yaml complet pour les 2 dockers Jeedom et mariaDB:

            # test jeedom
            
            version: '2'
            
            networks:
                default:
                    external:
                        name: compose_brw_network
                              
            services:
              jeedom:
                container_name: jeedom-server
                image: jeedom/jeedom:master
                hostname: jeedom
                mac_address: a0:ca:ab:cd:ef:01
                networks:
                  default:
                       ipv4_address: 192.168.1.252
                mem_limit: 500M
                volumes:
                   - "/volume1/docker/jeedom/html:/var/www/html"
                   - "/volume1/docker/jeedom/etcresolv.conf:/etc/resolv.conf:ro"
                   - "/volume1/docker/jeedom/aptsources.list:/etc/apt/sources.list:ro"
                restart: unless-stopped
            
              mariadb:
                   container_name: mariadb
                   image: mariadb:latest
                   hostname: mariadb
                   mac_address: a0:ca:ab:cd:ed:10
                   networks:
                      default:
                           ipv4_address: 192.168.1.253
                   environment:
                       - MYSQL_ROOT_PASSWORD=toto
                       - MYSQL_DATABASE=jeedomdb
                       - MYSQL_USER=user
                       - MYSQL_PASSWORD=toto
            
                   mem_limit:500M
                   volumes:
                       - "/volume1/docker/mariadb/db:/val/lib/mysql"

4) resolution DNS: fichier resolv.conf

A l'installation du docker Jeedom, ce dernier ne connait comme serveur DNS "que" 127.0.0.11. Or le docker Jeedom à besoin de résolution DNS dés son démarrage. Du coup je lui impose le fichier resolv.conf suivant :

        root@ds918blam:/volume1/docker/jeedom# cat etcresolv.conf

            nameserver 192.168.1.250 # PiHole

        root@ds918blam:/volume1/docker/jeedom#

En fait je dis ici au container Jeedom de s'adresser au container PiHole pour la résolution DNS. Sachant qu'ensuite le PiHole s'adresse aux DNS FDN.

5) liste des sources apt:

Lors de l'installation de Jeedom, on installe et on met à jour la plateforme linux, ce qui nécessite de connaitre les sources externes de paquets. Cette édition peut se faire dans le terminal de Jeedom, mais si elle est faite avant, c'est toujours cela de gagné, et cela évite les fautes de frappe.

        root@ds918blam:/volume1/docker/jeedom# cat aptsources.list

            # deb http://snapshot.debian.org/archive/debian/20190326T120000Z stretch main
            deb http://deb.debian.org/debian stretch main non-free
            # deb http://snapshot.debian.org/archive/debian-security/20190326T120000Z stretch/updates main
            deb http://security.debian.org/debian-security stretch/updates main non-free
            # deb http://snapshot.debian.org/archive/debian/20190326T120000Z stretch-updates main
            deb http://deb.debian.org/debian stretch-updates main non-free
            #
            # tuto
            #
            deb-src http://deb.debian.org/debian stretch main non-free
            deb-src http://deb.debian.org/debian stretch-updates main non-free
            deb-src http://security.debian.org stretch/updates main non-free

        root@ds918blam:/volume1/docker/jeedom#

6) Installation

    on vient se placer dans le répertoire /volume1/docker/jeedom qui contient le fichier docker-compose.yaml
    
    Puis on lance les commandes : /!\ ATTENTION : pas de caractère <TAB> dans le fichier .yaml. Que des espaces /!\
        * chargement des images : $docker-compose pull
        * démarrage des dockers : $docker-compose up -d

       *  on vérifie que les dockers sont bien lancés :


            root@ds918blam:/volume1/docker/jeedom# docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                  PORTS            NAMES
7e82241f42db        jeedom/jeedom:master      "/root/init.sh"          21 hours ago        Up 5 hours                               jeedom-server
114dfbf02702        mariadb:latest            "docker-entrypoint.s…"   22 hours ago        Up 5 hours                               mariadb

    Jeedom :

        on se connecte dans un terminal (bash) :

            on contrôle le fichier /etc/hosts : normalement rien à modifier
                                                                                                                                            
                    root@jeedom:/# cat /etc/hosts  
                            127.0.0.1       localhost  
                            ::1     localhost ip6-localhost ip6-loopback
                            fe00::0 ip6-localnet  
                            ff00::0 ip6-mcastprefix
                            ff02::1 ip6-allnodes
                            ff02::2 ip6-allrouters
                            192.168.1.252   jeedom

                    root@jeedom:/#

            on contrôle le fichier /etc/apache2/ports.conf : normalement rien à modifier => on peut garder le port 80 sans problème.

                    root@jeedom:/# cat /etc/apache2/ports.conf
                            Listen 80
                    root@jeedom:/#

            on vérifie le fichier hostname : rien à modifier

                    root@jeedom:/# cat /etc/hostname
                            jeedom
                    root@jeedom:/#

            on vérifie le fichier /etc/apt/sources.list : c'est celui que l'on a déjà rempli sur le NAS

                      root@jeedom:/# cat /etc/apt/sources.list
                            # deb http://snapshot.debian.org/archive/debian/20190326T120000Z stretch main
                            deb http://deb.debian.org/debian stretch main non-free
                            # deb http://snapshot.debian.org/archive/debian-security/20190326T120000Z stretch/updates main
                            deb http://security.debian.org/debian-security stretch/updates main non-free  
                            # deb http://snapshot.debian.org/archive/debian/20190326T120000Z stretch-updates main
                            deb http://deb.debian.org/debian stretch-updates main non-free
                            #  
                            # tuto
                            #
                            deb-src http://deb.debian.org/debian stretch main non-free  
                            deb-src http://deb.debian.org/debian stretch-updates main non-free
                            deb-src http://security.debian.org stretch/updates main non-free

                    root@jeedom:/#      

            on vérifie la connectivité réseau : en particulier, on ping le DNS, on ping la gateway, on ping le container mariadb, et on ping l'exterieur, google par exemple. Si tout est bon, on peut passer à l'installation de Jeedom proprement dite.
                                                                                                                                            
                            root@jeedom:/# ping -c 5 192.168.1.250
                            PING 192.168.1.250 (192.168.1.250) 56(84) bytes of data.
                            64 bytes from 192.168.1.250: icmp_seq=1 ttl=64 time=0.088 ms
                            64 bytes from 192.168.1.250: icmp_seq=2 ttl=64 time=0.083 ms
                            64 bytes from 192.168.1.250: icmp_seq=3 ttl=64 time=0.067 ms
                            64 bytes from 192.168.1.250: icmp_seq=4 ttl=64 time=0.071 ms  
                            64 bytes from 192.168.1.250: icmp_seq=5 ttl=64 time=0.082 ms
                        
                            --- 192.168.1.250 ping statistics ---
                            5 packets transmitted, 5 received, 0% packet loss, time 3999ms
                            rtt min/avg/max/mdev = 0.067/0.078/0.088/0.009 ms


                            root@jeedom:/# ping -c 5 192.168.1.253   
                            PING 192.168.1.253 (192.168.1.253) 56(84) bytes of data.
                            64 bytes from 192.168.1.253: icmp_seq=1 ttl=64 time=0.087 ms  
                            64 bytes from 192.168.1.253: icmp_seq=2 ttl=64 time=0.078 ms   
                            64 bytes from 192.168.1.253: icmp_seq=3 ttl=64 time=0.065 ms  
                            64 bytes from 192.168.1.253: icmp_seq=4 ttl=64 time=0.078 ms
                            64 bytes from 192.168.1.253: icmp_seq=5 ttl=64 time=0.062 ms  
                                                                          
                            --- 192.168.1.253 ping statistics ---   
                            5 packets transmitted, 5 received, 0% packet loss, time 3999ms
                            rtt min/avg/max/mdev = 0.062/0.074/0.087/0.009 ms
                            root@jeedom:/#


                            root@jeedom:/# ping -c 5 192.168.1.1
                            PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
                            64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.610 ms
                            64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.257 ms
                            64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.254 ms
                            64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.262 ms
                            64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.248 ms
                                                                         
                            --- 192.168.1.1 ping statistics ---    
                            5 packets transmitted, 5 received, 0% packet loss, time 4000ms
                            rtt min/avg/max/mdev = 0.248/0.326/0.610/0.142 ms


                            root@jeedom:/# ping -c 5 google.com   
                            PING google.com (216.58.213.174) 56(84) bytes of data.
                            64 bytes from par21s04-in-f14.1e100.net (216.58.213.174): icmp_seq=1 ttl=58 time=2.90 ms
                            64 bytes from par21s04-in-f14.1e100.net (216.58.213.174): icmp_seq=2 ttl=58 time=3.23 ms  
                            64 bytes from par21s04-in-f14.1e100.net (216.58.213.174): icmp_seq=3 ttl=58 time=2.66 ms
                            64 bytes from par21s04-in-f14.1e100.net (216.58.213.174): icmp_seq=4 ttl=58 time=2.86 ms
                            64 bytes from par21s04-in-f14.1e100.net (216.58.213.174): icmp_seq=5 ttl=58 time=2.69 ms
                                               
                            --- google.com ping statistics ---   
                            5 packets transmitted, 5 received, 0% packet loss, time 4005ms  
                            rtt min/avg/max/mdev = 2.667/2.873/3.230/0.203 ms
                            root@jeedom:/# 
 

            Installation de Jeedom : on suit le tuto de @Didier3L (https://community.jeedom.com/t/tuto-installation-de-jeedom-sur-synology-avec-docker-en-mode-host/5290), à savoir :
                    
                Lancer ces 3 commandes : (15 à 20 minutes en tout)

                            apt-get update && apt-get upgrade -y && apt-get -y build-dep pam                        
                            export CONFIGURE_OPTS=--disable-audit && cd /root && apt-get -b source pam && dpkg -i libpam-doc*.deb libpam-modules*.deb libpam-runtime*.deb libpam0g*.deb
                            apt-get remove --purge -y $(apt-mark showauto) && apt-get clean

                puis edition du fichier /root/init.sh pour mise à jour et vérifier que la fin du fichier contienne :

                            echo 'All init complete'
                            chmod 777 /dev/tty*
                            chmod 777 -R /tmp
                            chmod 755 -R /var/www/html
                            chown -R www-data:www-data /var/www/html
                                
                            echo 'Start apache2'
                            systemctl restart apache2
                            service apache2 restart
                              
                            echo 'Start sshd'
                            systemctl restart sshd
                            service ssh restart
                            service ssh start
                              
                            echo 'Start atd'
                            systemctl restart atd
                            service atd restart
                            service atd start
                              
                            /usr/bin/supervisord

                puis on redemarrare le docker jeedom (qui dans mon installation s'appelle donc jeedom-srv)

7) Finalisation

    Il ne reste plus qu'à finaliser !
    On se connecte (navigateur) à notre docker jeedom : http://192.168.1.252 (pas besoin de préciser le port puisque l'on utilise le port standard 80)
    Sur l'écran de connexion, on renseigne :

            database hostname    : 192.168.1.253
            database port               : 3306              (ce docker mariadb10 expose par default le port 3306 ...)
            database username    : root
            database password    : toto                (ce que vous avez configuré dans les variables du docker dans le fichier docker-compose)
            database name            : jeedomdb            (ce que vous avez configuré dans les variables du docker dans le fichier docker-compose)

        puis : PROCEED

        Et la normalement (!) le processus initial de configuration de la databse demarre pour quelques minutes, puis invite à se connecter avec le compte admin/admin, qui demandera lors de la première connexion de changer le mot de passe.

Voilà, c'est fait !

748083625_jeedomecrancnx1rootinstall.JPG.46656a489f4275a21be5648c75a15117.JPG

493451904_jeedom2market.thumb.JPG.61308e7361ff7979963be5352b6083b0.JPG

 

accueil.thumb.JPG.1d4155b252cdd681acb3c96fe661406c.JPG

PS:

  • Je n'ai pour le moment pas l'utilité de Jeedom puisque je n'ai pas de domotique, donc je ne peux pas aller au delà.
  • Je garde ma configuration opérationnelle, si besoin.
  • Il conviendra également surement de monitorer un peu les consommations mémoire des dockers, de façon à leur poser des limites raisonables (paramètre mem_limit:500M dans le docker-compose.yaml. 500M c'est peut-être un peu généreux ... à voir à l'usage)
  • J'espère ne pas avoir fait d'erreur de retranscription.
  • Enfin un dernier mot: n'étant pas expert, il se peut que j'emploie des méthodes qui sont plus des recettes que de l'état de l'art techniquement parlant. Je m'en excuse, et suis ouvert à tous commentaires.
  • Si il y a des points à modifier, corriger ou simplement améliorer, n'hésitez pas. (c'est le premier post de ce type que je fais, donc soyez indulgents)


Bruno78

 

 

cnx database.JPG

Modifié par bruno78
typo
Lien vers le commentaire
Partager sur d’autres sites

Merci Bruno78 pour ce tutoriel très interessant! Ca me donne envie de faire passer mon Jeedom à nouveau sur un Docker plutôt que la Machine Virtuelle qui reste lourde pour le système.

Le pire c'est que j'ai déjà un pi-hole en macvlan qui tourne et n'ai jamais pensé à y inclure Jeedom!

Je vais tenter la manoeuvre et faire une vérification des performances de Jeedom...si il n'y a pas trop de perte (je ne m'attend pas à un gain), je convertirai certainement tout vers Docker.

Lien vers le commentaire
Partager sur d’autres sites

Bon pour la mise en oeuvre, ca sera pour demain matin quand la petite famille dort encore car ma box ne me permet pas de gérer le DHCP, je vais renseigner mon routeur local en DMZ de ma box et configurer le DHCP sur mon routeur local...ce qui signifie une interruption du réseau pendant quelques minutes et en ces temps de confinement, toute la famille est occupée sur internet à l'instant. Je ne voudrai pas que ca soit eux qui me tue à la place du virus...

J'ai deux question (@bruno78) :

  1. J'ai déjà pas mal de serveurs configuré en adresse fixe mais dans la plage 0 à 99...je voudrai donc faire l'inverse de toi et déclarer la plage DHCP de 100 à 255 et garder mes serveurs sur la plage 0 à 99. Y a t'il un problème potentiel à cette approche?
  2. Je n'ai pas trop compris l'astuce du script au redémarrage du NAS...à quoi cela sert il exactement? Et surtout pourquoi y a t'il cette ligne dans ce script vu que tu n'as aucun serveur sur l'adresse 248 : "ip route add 192.168.1.248/29 dev bridgemacvlan"?

Merci d'avance pour toute aide.

Frederic

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @bruno78

Si j'ai bien compris on ne peut donc pas communiquer directement du conteneur Jeedom à la base MariaDB sans passer par l'ajout de PiHole ?
Dans ton descriptif, tu créé un docker pour la BD

C'est normal que Gateway (Freebox) soit en 192.168.1.1
Moi on m'a dit de mettre 192.168.1.254 

--gateway=192.168.1.254

Concernant l'image Jeedom : J'avais indiqué que l'image master n’était pas maintenu.
L'utilisation de cette image pose des problèmes et en mode Host on pas les droits SUDO pour que jeedom fonctionne correctement.
Cette contrainte est du apparemment à l’implémentation de Docker par Synology ...

C'est pour cela qu'on apporte des modifications au système pour avoir ces droits SUDO
Mais c'est modifications apportent un mode "dégradé" au système.

Alors si on applique mon tuto, jeedom est 100% fonctionnelle en mode Host.

mais je m’aperçois que la solution miracle du réseau macvlan n'est pas aussi simple que prévu ...
 

 

Modifié par Didier3L
Lien vers le commentaire
Partager sur d’autres sites

@Fredje_B

  1. pas de problème à utiliser une autre plage d'adresses que celle que j'ai pris. C'est totalement libre.
  2. adressage :
    1. le problème de la route additionnelle pour joindre le réseau macvlan, c'est que ce n'est pas permanent. Si tu le fait juste en console et que tu redémarres le NAS, c'est perdu. C'est pour cela qu'il faut placer ce script qui ne va s’exécuter qu'au démarrage du NAS, ainsi il te repositionnera la route nécessaire automatiquement.
    2. image.png.23ab665f34cb9002b33cc359e5b25509.pngimage.png.3bbf7939577a2c308da444a817836d88.png
    3. ensuite la commande elle même : la notation 192.168.1.248/29 représente un réseau de 8 adresses IP en tout (masque /29)
      1. 192.168.1.248/29 : réseau complet, les 8 adresses, de 192.168.1.248 à 192.168.1.255
      2. l'adresse individuelle 192.168.1.248 (encore notée 192.168.1.248/32) est réservé pour le réseau (comme 192.168.1.0 sur notre LAN)
      3. les 6 adresses individuelles 192.168.1.249 à 192.168.1.254 sont utilisables pour des machines / stations
      4. enfin la dernière adresses 192.168.1.255 est dite "adresse de broadcast", c'est elle qui représente sur ce réseau l'adresse de diffusion pour s'adresser à toutes les machines à la fois (pour les protocoles qui doivent découvrir une cible)

il y a pas mal de documentation sur le sujet, par exemple https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing

 

Bruno78

Bonjour @Didier3L

  • la gateway sur un réseau : tu prends exactement l'adresse que tu veux, il n'y a pas de contrainte technique. Cependant, par commodité et habitude, on prend en général la première (192.168.1.1) ou la dernière (192.168.1.254). Mais vraiment aucune différence de fonctionnement.
  • jeedom accède à mariadb sans passer par PiHole. D'autant que l'on adresse mariadb par son adresse IP directement. Mais pour que Jeedom puisse sortir sur le monde externe (deb.debian.org par exemple) on a besoin d'une résolution de noms, qui dans mon cas est assurée par le Pihole. Cependant, on peut très bien se passer du PiHole, et indiquer nameserver 8.8.8.8 # DNS google

image.png.6bddcd567836a0965203daa14c046d13.png

  • image jeedom:master : bon ben je n'ai pas vu qu'elle n' était pas maintenue. Il y a t'il une autre image plus récente ?
  • macvlan : je reconnais qu'à la première mise en place, pour pihole, j'en ai un peu bavé !
Modifié par bruno78
Lien vers le commentaire
Partager sur d’autres sites

@bruno78

Merci de ton retour, c'est intéressant de voir comment tu as procédé, j'aurais omis l'exemple de Pihole et Plex, ça embrouille plus qu'autre chose 😛 

@Didier3L & @bruno78

Pihole n'est là qu'à titre d'exemple pour comprendre comment il intègre un conteneur à un réseau macvlan dans un fichier compose.
Docker-compose permet de rendre plus lisible ce que tu écris avec tapant tes lignes de commande pour créer ton conteneur.

La décision d'utiliser un conteneur MariaDB se défend pour plusieurs raisons, mais pas de sécurité selon moi.
Quand on expose un conteneur sur un réseau macvlan, donc sur un réseau physique, on fait péter d'office le pare-feu du NAS, tous les ports sur ce conteneur sont exposés. Donc à moins d'avoir un routeur pare-feu type pfSense ou ajouter soi-même quelque chose du type firewalld au conteneur, c'est moins sécurisé.

Concrètement je pense que tu n'étais pas loin @Didier3L, car tu savais ping l'interface virtuelle de ton NAS depuis le conteneur et vice versa.

Je pense que l'erreur se situe dans ton script docker, je ne vois que cette possibilité, c'est l'occasion de t'essayer à compose si tu ne connais pas et de t'inspirer de ce que propose @bruno78

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir @.Shad.

  • tu as entièrement raison , j'aurais dû supprimer les références à Pihole et Plex qui n'ont rien à faire là, ... mais c'était mon existant et quand on a la tête dans le guidon, on ne s'en rend pas compte.
  • et oui, l'inconvénient du macvlan c'est de court-circuiter le firewall. Je n'y ai pas prêté attention. Je pense que ça va être mon prochain terrain de jeu. Que pourrais-tu proposer à ce sujet ? quelle solution techniquement abordable pour obtenir un résultat correct ? pfSense ?
Lien vers le commentaire
Partager sur d’autres sites

je commence avec docker-compose ...

version: '2'

networks:
    default:
    external:
    name: mymacvlan

services:
   jeedom:
    container_name: jeedom-test
    image: jeedom/jeedom:latest
    mac_address: a0:ca:ab:cd:ef:01
    networks:
        default:
        ipv4_address: 192.168.1.240
    volumes:
      - "/volume1/docker/jeedom-test:/var/www/html"
      - "/volume1/docker/jeedomconfig/etcresolv.conf:/etc/resolv.conf:ro"
    restart: unless-stopped
    environment:
      - PUID=1032
      - PGID=101
      - SSH_PORT=22
      - APACHE_PORT=80
      - SSH_PASSWORD=jeedom
      - ROOT_PASSWORD=jeedom
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

image.png.6036c3f8095bb391e9b5ef653e3bcd81.png

Lien vers le commentaire
Partager sur d’autres sites

il y a 30 minutes, bruno78 a dit :

et de mémoire il faut respecter l'indentation ....

Oui tout à fait, et c'est bien plus lisible de surcroît.
Pour ma part j'avais suivi les recommandations du guide dont j'avais donné le lien. J'avais dû donner un flag privileged au conteneur :

privileged: true

ou

--privileged

via le shell.

Un lien intéressant au sujet des implications de ce flag https://medium.com/better-programming/docker-tips-mind-the-privileged-flag-d6e2ae71bdb4

Autre chose, attention à l'utilisateur (www-data) qui est mappé depuis le conteneur vers les volumes sur le NAS, ce qui ne m'a posé aucun problème sur une Debian ne t'en a pas posé @bruno78 sur le NAS ? DSM est capricieux avec les permissions pour Docker... 😉

@bruno78 pfSense n'est pas la seule solution, mais peut-être une des plus documentées, il en existe plein d'autres : OPNSense, Sophos, Mikrotik, etc...
Si tu veux "tester", sur le site de Netgate tu peux trouver la VM prête à être installer, ça te permet déjà de voir à quoi ça ressemble (l'interface est nickel).
Si tu as un vieux PC, tu peux te faire un homelab avec pfSense installé dessus, il faut juste deux connecteurs Ethernet disponibles (une pour le WAN, une pour le LAN).

Avec le pare-feu, tu pourras tout à fait définir les ports ou les protocoles à bloquer vers un conteneur sur réseau physique par exemple, comme dans notre cas.
Pour ma part j'ai trouvé un Qotom i5 de seconde main (neuf en réalité) pour pas trop cher (200€ quand même, il était à 350€ sur Amazon).
J'ai la chance de connaître quelqu'un qui avait pu me montrer au préalable à quoi ça ressemblait et j'ai été de suite séduit.

Autrement c'est avec iptables dans le conteneur, mais bon faut aimer fourrer son nez là-dedans 😄 

Lien vers le commentaire
Partager sur d’autres sites

C’est normal que je n’arrive pas à faire un Ping du conteneur vers mon Synology 192.168.1.10 ?

j'utilise le paquet MariaDB sur le Synology Donc 192.168.1.10 port 3306

à la différence de vos exemples qui est avec une Bd en conteneur Docker

enfin quel est l’avantage d’utiliser docker compose ?
Super le formatage strict a l’espace près !!! 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Didier3L

pour être honnête, je ne sais pas si c'est normal, mais j'ai le même comportement :

image.png.c8b142588bb7433228aa0d05f689adae.png

Et c'est a priori la seule adresse que je n'arrive pas à pinguer depuis le docker jeedom. Idem pour tous les autres containers en mode macvlan que j'ai configurés. Cette adresse (192.168.1.10 pour toi, 192.168.1.171 pour moi le NAS) semble être la seule du réseau local 192.168.1.0/24 que l'on ne puisse pas atteindre. Il me semble avoir lu quelque part que c'était une mesure de sécurité, mais j'avoue ne plus me souvenir où je l'ai vu. Je vais rechercher.

Quant à l'avantage du fichier docker-compose ... C'est vrai que sa mise au point est "délicate", mais après c'est un vrai confort. Mais ce n'est pas la seule méthode, il y a des adeptes .... et surement des anti .... J'avoue m'en servir beaucoup. Une fois au point, ça va très vite à modifier et pour régénérer des container.

Lien vers le commentaire
Partager sur d’autres sites

@.Shad.

  • je n'ai pas eu besoin de passer le container en mode "privileged".
  • par contre oui, pour les users, je ne sais pas quelle patouille il me met !!
    • il a basculé les droits du repertoire ./jeedom en introduisant un groupe "33" qui vient de nulle part. En fait si, le groupe 33 est celui du user www-data sur le docker jeedom ....
      • image.png.4a20a5d190038cca2cba9b47b8cadbd5.png
      • et ensuite DSM me refusait l’édition des fichiers. Il fallait passer en direct par putty !

Merci pour les infos pfsense et autres .... je vais regarder en détail.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 10 heures, Didier3L a dit :

Super le formatage strict a l’espace près !!! 

Ce n'est pas le nombre d'espaces qui compte, simplement l'indentation, l'alignement qui doit différer 😉 

il y a 31 minutes, bruno78 a dit :

pour être honnête, je ne sais pas si c'est normal, mais j'ai le même comportement :

Heu... c'est la raison pour laquelle vous créez une interface virtuelle (avec ton script en l'occurence).
L'adresse IP de l'interface physique du NAS (eth0, ovs_eth0, eno1, qu'importe, celle qui correspond à votre prise Ethernet hors VLAN) ne sera JAMAIS accessible, par essence du driver macvlan.
Mais entrer l'adresse IP de l'interface virtuelle revient à cibler le NAS de la même manière que si l'on utilisait l'adresse IP de l'interface physique.

il y a 12 minutes, bruno78 a dit :

@.Shad.

  • je n'ai pas eu besoin de passer le container en mode "privileged".
  • par contre oui, pour les users, je ne sais pas quelle patouille il me met !!
    • il a basculé les droits du repertoire ./jeedom en introduisant un groupe "33" qui vient de nulle part. En fait si, le groupe 33 est celui du user www-data sur le docker jeedom ....
      • image.png.4a20a5d190038cca2cba9b47b8cadbd5.png
      • et ensuite DSM me refusait l’édition des fichiers. Il fallait passer en direct par putty !

Merci pour les infos pfsense et autres .... je vais regarder en détail.

Ok pour le mode privileged ! Le jour où j'emménage dans une maison et que je me lance dans l'IoT je saurai 😛 

La plupart des images ne sont pas prévus pour fonctionner avec des systèmes comme DSM qui se réserve les UID jusqu'à 1025 inclus.
Sur une distrib linux classique, l'UID/GID de l'utilisateur par défaut c'est 1000/1000.
Certains images comme celles de Linuxserver et d'autres introduisent le concept de PUID/PGID en variables d'environnement, cela permet de mapper l'utilisateur à l'intérieur du conteneur avec celui correspondant aux deux variables spécifiées sur l'hôte.
Ça règle la plupart des problèmes sur un Synology.
Sans ses variables, l'utilisateur du conteneur est aussi propriétaire des fichiers sur l'hôte. Si l'utilisateur existe sur le Synology, alors tu ne verras pas les nombres mais le nom et le groupe, ce n'est pas le cas ici.

Pour régler le problème, tu peux tester de chmod un des fichiers appartenant au groupe 33, ça va faire péter les ACL de la surcouche DSM (tu verras dr-xr-xr-x et plus dr-xr-xr-x+, signifiant que les ACL ne s'appliquent plus et que les permissions UNIX reprennent la main) et voir si tu sais manipuler le fichier depuis DSM avec un autre utilisateur, il faut s'assurer que tes permissions sont ok du coup, car dr-xr-xr-x tu n'as aucun droit d'écriture... 🙂

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Didier3L

peux-tu stp expliciter comment tu est arrivé là ? J'en conclus que la connexion à la BDD est OK ? à quoi correspond le nom de station 8e7b53c792cc ? de même pour resolv.conf, tu es revenu à la config d'origine ? Enfin je suis surpris de voir Mémoire disponible=0%

De mon côté pour la santé de Jeedom :

image.thumb.png.45a74e1f5aa66032bfffacfc032a28f4.png

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.