Bonjour à tous,

Aujourd’hui on se retrouve pour un tuto semblable à celui concernant l’installation de Pi-Hole sur une VM, mais cette fois ce sera sous Docker.

Jusqu’alors je n’étais pas très à l’aise avec Docker, spécialement pour les mise à jour des conteneurs. Il s’avère que c’est plutôt simple au final en utilisant un conteneur spécial qui vous facilite la vie.

L’avantage ici c’est de se passer d’une VM qui sera d’office plus gourmande en ressources. MAIS vous êtes exactement dans la même situation, mais sans la VM!

Pour info, mon NAS est un Synology DS1817+

0. Prérequis

  • Posséder un NAS Synology compatible avec Docker. Voir le site Synology pour vous en assurer.
  • Installer Docker sur votre NAS via le « centre de paquets » si ce n’est pas encore fait.

1. Les logiciels nécessaires / téléchargements

2. Installation de Portainer

  • Connectez-vous à votre NAS et activez le SSH (assurez vous que le port 22 est ouvert si vous avez activé le Firewall sur NAS)
  • Créez un dossier « portainer » dans votre dossier Docker à l’aide de File Station.
  • Connectez-vous à votre NAS en SSH à l’aide de votre logiciel favori (pour moi c’est MobaXterm).
  • Il faut passer en root avec la commande suivante (votre mot de passe va être redemandé) :
sudo su -
  • Ensuite on crée le conteneur avec la commande suivante (ATTENTION : dans cet exemple, Docker a été installé sur le volume 1 et donc le dossier Docker se situe également sur le volume 1, ce n’est peut-être pas le cas chez vous => vérifiez bien et adaptez le n° de volume en fonction)
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer:/data portainer/portainer-ce
  • Une fois terminé, vous pouvez ouvrir votre navigateur internet et vous rendre à cette adresse : http://ipdevotrenas:9000 pour accéder à Portainer. Ne fermez pas la session SSH, on va en avoir besoin dans peu de temps 😉
  • Il vous faut maintenant créer un Administrateur, là c’est vous qui mettez ce que vous voulez, mais souvenez-vous en car vous en aurez besoin pour vos futures connexions.
  • Maintenant Portainer vous demande comment il va se connecter à votre Docker afin d’en « prendre la gestion ».
  • Cliquez sur « Local » puis « Connect »
  • Et voilà, vous avez configuré Portainer. Vous vous trouvez maintenant sur la page d’accueil. Cliquez sur la ligne « local » regroupant les infos de votre Docker. Vous pourrez voir que vous avez au moins un conteneur actif: portainer.
  • C’est à partir de là que l’on va créer d’autres conteneurs, comme Pi-Hole. Mais avant il faut faire autre chose si vous voulez bénéficier d’une autre IP pour votre Pi-Hole!

3. Création de l’interface réseau pour Pi-hole

  • Toujours en étant connecté en SSH à votre NAS (je vous avais dit de ne pas vous déconnecter du SSh ^^), utilisez la commande suivante pour connaitre le nom de votre interface réseau :
ip route |grep default
  • Maintenant on va créer l’interface MACVLAN qui sera l’interface reliée à notre conteneur Pi-hole :
docker network create --driver=macvlan --gateway=IP DE VOTRE ROUTEUR --subnet=VOTRE RESEAU/24 --ip-range=IP POUR PIHOLE/32 -o parent=NOM DE VOTRE INTERFACE RESEAU NOM DE VOTRE NOUVELLE INTERFACE

Ce qui donne ceci pour quelqu’un qui a un routeur en 192.168.1.1 et qui souhaite que pi-hole soit en 192.168.1.254 et que l’interface se nomme Eth-PiHole :

docker network create --driver=macvlan --gateway=192.168.1.1 --subnet=192.168.1.0/24 --ip-range=192.168.1.254/32 -o parent=ovs_eth0 Eth_PiHole
  • Pour être certain que ça ait bien fonctionné, on peut taper cette commande :
docker network ls
  • Vous devriez alors voir apparaitre le réseau MACVLAN que vous venez de créer.

4. Création du conteneur Pi-hole

  • Vous pouvez faire cela depuis le paquet Docker sur votre NAS directement, depuis Portainer, ou en SSH ce que nous allons faire.
  • Mais avant il faut utiliser « File Station » pour créer les dossiers pour Pi-hole. Donc dans le dossier Docker, vous créez un dossier « Pihole », et dans ce dossier, vous créez les 2 dossiers suivants : « config » et « dnsmasq.d »
  • Il ne vous reste plus qu’à copier/coller et exécuter le code ci-dessous après l’avoir personnalisé bien sûr :
docker run --detach \
           --name pi-hole \
           --restart always \
           --volume /volumeX/docker/Pihole/config:/etc/pihole \
           --volume /volumeX/docker/Pihole/dnsmasq.d:/etc/dnsmasq.d \
           --cap-add NET_ADMIN \
           --dns=8.8.8.8 \
           --dns=8.8.4.4 \
           --env "DNS1=8.8.8.8" \
           --env "DNS2=8.8.4.4" \
           --env "ServerIP=IP CONFIGUREE PRECEDEMMENT" \
           --env "DNSMASQ_LISTENING=all" \
           --env "WEBPASSWORD=CE QUE VOUS VOULEZ" \
           --env "TZ=Europe/Paris" \
           --network NOM DU RESEAU CONFIGURE PRECEDEMMENT \
           --ip "IP CONFIGUREE PRECEDEMENT" \
           --mac-address "02:42:c0:a8:01:d7" \
           pihole/pihole:latest
  • Vous pouvez ouvrir un explorateur et entrer l’adresse IP que vous aviez configuré précédemment, vous devriez arriver sur Pi-Hole.

5. Bug du mot de passe

  • Il m’est arrivé de ne pas réussir à me logger avec le mot de passe configuré à la création du conteneur. Dans ce cas, rendez-vous dans portainer, cliquez sur votre conteneur Pi-hole, ouvrez la console et connectez-vous (c’est une sorte de SSH mais sur votre conteneur), utilisez juste cette commande pour changer le mot de passe :
pihole -a -p

6. Mettre à jour Pi-hole, comment ça marche?

  • He bien c’est simple comme bonjour grâce à Portainer. Il vous suffit de vous rendre sur Portainer, cliquez sur votre conteneur Pi-hole, stoppez le conteneur, puis cliquez sur « Recreate » (ou recréer le conteneur). Choisissez bien « Pull latest image » pour qu’il télécharge la mise à jour, puis Portainer s’occupe de supprimer, puis recréer et reconfigurer tout votre Pi-hole pour vous.
  • Pensez aussi à mettre à jour de temps en temps les « blocklist » depuis votre interface de Pi-hole => « Update Gravity »

Categories:

12 Responses

  1. salut et merci pour ce tuto.
    je lai suivi et pihole fonctionne, mais mon vpn je veux plus ce connecté.
    j’utilise celui du nas, ta un avis ?
    merci d’avance

  2. Bonjour,

    j’ai suivi les 4 premières étapes sans encombres mais il m’est impossible d’ouvrir la page pihole.
    J’ai essayé en désactivant temporairement le pare feu mais c’est pareil.

    le conteneur à bien la bonne addresse IP et l’ip Serveur et host est bien identique…

    Cordialement,

    • Bonjour Jean,

      Content de voir que vous avez trouvé la solution à votre problème, et de voir que tout fonctionne !

      Vous avez été plus rapide que moi pour trouver la solution 😉

  3. Bonjour,

    J’ai suivi votre tuto pour installer pi-hole et ensuite faire une redirection de mon site vers mon wordpress hébergé sur mon NAS Synology… Après j’étais obligé de changer d’ IP et depuis je n’arrive plus à accéder à mon site web de l’extérieur (Ext de mon réseau local) ?!
    Saviez-vous si la configuration du portainer avec l’ancienne IP est responsable de ce disfonctionnement ?
    Merci par avance

    • Bonjour,

      Je ne suis pas certain de bien comprendre ce que vous avez fait exactement.
      La redirection a été faite via Pi-Hole?
      Pour être certain de vous aider efficacement, je vous invite à nous rejoindre sur Discord, cela permettra de discuter plus facilement.
      http://discord.smartlan.net

    • Alors, question subsidiaire ^^
      Perso pour faire la mise à jour, je supprime le conteneur, l’image, et puis je la recrée en ligne de commande, comme lors de la première création.
      Si quelqu’un d’autre à une meilleure technique, je suis preneur 😉

      • Pour cela, en gros il te faut supprimer le conteneur Portainer et le recréer dans la foulée.

        docker pull portainer/portainer
        docker stop portainer
        docker rm portainer
        # et ensuite, tu utilises la même commande que pour ton installation, du genre :
        docker run -d -p 9000:9000 –name=portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer:/data portainer/portainer-ce:latest

  4. Bonjour . J’ai lutte pour installe ce container ca fonctionne mais quand je lance gravity update . J’ai un dns resolver non dispo.
    J’ai vu que c’est un probleme courant le /etc/resolv.conf me donne 127.0.0.11 au lieu de 127.0.0.1. J’ai pas coche les dns dans ce soft je dois passer par mon serveur dns qui est sur le nas (qui herberge ce container ). J’ai donc active le upstream en decochant les autres dns resolveurs. Bref … pourquoi et comment regler le probleme de gravity? Je ne sais pas comment modifier un fichier dans le container .

  5. Hello !

    Ca avançait tranquillement pendant le tuto, et au moment de créer le container pi-hole en ligne de commande, j’ai eu un souci que j’arrive pas à identifier :

    Le container est bien créé, mais il ne démarre pas vraiment, il reste quelques secondes en « unhealthy » et ne semble ouvrir aucun port.

    Lorsque je veux accéder à l’ip que j’ai affecté, je reçois une erreur 403 :/

    J’ai refait la manipulation quelques fois en ajustant différemment les parametres au cas où, mais sans succés.

    Une idée de ce qui peut arriver ?

Répondre à M-A david Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *