Comment configurer Pihole dans un conteneur Docker

Peut-être êtes-vous importuné par des annonces publicitaires intempestives lorsque vous lisez un article sur un site web. Avec toutes ces annonces, comment les bloquer ? Installez Pi-hole dans Docker et utilisez Pi-hole comme un bloqueur de publicités à l’échelle du réseau pour améliorer les performances de votre réseau.

Dans ce tutoriel, vous apprendrez à configurer et à exécuter Pi-hole dans un conteneur Docker pour bloquer les publicités et les sites web. Cela vous semble excitant ? Continuez à lire pour en savoir plus !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir les éléments suivants :

  • Docker installé sur Windows 10 (mais tout système d’exploitation pris en charge fonctionnera).
  • A Windows 10 PC – This tutorial uses Windows 10 OS Build 19042.1165.

Création de deux volumes Docker persistants

Lors de la configuration de Pi-hole dans un conteneur Docker, vous devrez d’abord créer un volume Docker pour stocker l’application Pi-hole et la configuration DNS.

Ouvrez PowerShell en tant qu’administrateur, puis exécutez les commandes ci-dessous pour Docker afin de créer deux volumes (volume create) nommés pihole_app et dns_config. Vous pouvez également changer les noms selon vos préférences.

docker volume create pihole_app
docker volume create dns_config

Ensuite, vérifiez que les volumes Docker ont été créés avec succès en exécutant la commande suivante qui répertorie tous les volumes Docker disponibles sur votre machine.

docker volume ls

Ci-dessous, vous voyez deux volumes nouvellement créés nommés pihole_app et dns_config.

Creating two Docker Volumes for the Pi-hole Configurations.

Exécution de Pi-hole dans un conteneur Docker avec des variables d’environnement

Maintenant que vous avez deux volumes persistants disponibles, vous êtes prêt à exécuter un conteneur Docker en utilisant l’image Docker de base de Pi-hole. Mais d’abord, vous devez noter votre adresse IP locale.

Exécutez la commande ci-dessous pour obtenir votre adresse IP locale. Votre adresse IP locale est nécessaire pour exécuter correctement la commande Docker unique.

ipconfig /all

Ensuite, exécutez la commande ci-dessous pour tirer l’image de base pihole/pihole depuis Docker hub. Remplacez les valeurs en utilisant le tableau ci-dessous comme référence. Le tableau ci-dessous explique chaque drapeau de la commande.

docker run --name=pihole -e TZ=Asia/Manila -e WEBPASSWORD=password -e SERVERIP=YourIPAddressHere -v pihole_app:/etc/pihole -v dns_config:/etc/dnsmasq.d -p 81:80 -p 53:53/tcp -p 53:53/udp --restart=unless-stopped pihole/pihole

Drapeaux de Commande Docker de Pi-hole

Command Flags Definition
—name=pihole Names a Docker container as pihole. There will be an error if a container with the same name already exists on your machine
-e TZ=Asia/Manila Environment variable for time zone. Asia/Manila was used for this tutorial, but you can input anything that has the same format listed in on a GitHub gist.
-e WEBPASSWORD=password Sets a password for the Pi-hole interface.
-e SERVERIP=YourIPAddressHere Set your IP address for the Docker container. You will use this again later for making Pi-hole work.
-v pihole_app:/etc/pihole Mounts the volume pihole_app and use subdirectory /etc/pihole for storing the Pi-hole files
-v dns_config:/etc/dnsmasq.d Mounts the volume dns_config and use subdirectory /etc/dnsmasq.d for storing DNS configurations as required.
p 81:80 -p 53:53/tcp -p 53:53/udp Maps the ports of host machine to the ports of the Docker container (port 81 in host machine maps to port 80 of Docker container)
—restart=unless-stopped Sets a restart policy so the Docker container always restarts unless it is manually stopped by the user.
pihole/pihole Tells the docker run command to use the official pihole/pihole base image from Docker hub.

Ci-dessous, vous pouvez voir la commande qui extrait l’image de base pihole/pihole depuis Docker Hub. Une fois que l’image pihole/pihole est téléchargée sur votre machine, la commande continue automatiquement et suit les paramètres que vous avez définis dans la commande.

Downloading pihole/pihole image.

Après avoir extrait l’image de base pihole/pihole, vous verrez une sortie comme celle ci-dessous, ce qui indique que vous pouvez déjà exécuter le tableau de bord Pi-hole à partir du conteneur.

Seeing the Pi-hole Docker Container Running Properly.

Accéder à l’interface Web du tableau de bord Pi-hole

Une fois que le conteneur Docker que vous avez créé est en cours d’exécution, vous pouvez maintenant accéder au tableau de bord Pi-hole. Le tableau de bord Pi-hole est une interface graphique qui vous permet de configurer les publicités à bloquer soit via votre propre liste noire, soit via des listes noires maintenues par la communauté.

Naviguez sur http://localhost:81 dans votre navigateur, car vous avez précédemment associé le port 81 de la machine hôte au port 80 du conteneur Docker. Ce faisant, votre navigateur web redirige la page vers le tableau de bord Pi-hole.

Si vous avez défini un port différent lors de l’exécution de la précédente commande docker, modifiez le port pour accéder au tableau de bord Pi-hole. Par exemple, http://localhost:n où ‘n’ représente le numéro de port.

Maintenant, connectez-vous au tableau de bord Pi-hole avec le mot de passe que vous avez défini en exécutant la commande docker dans la section « Exécution du conteneur Docker Pi-hole avec des variables d’environnement ». Pour ce tutoriel, le mot de passe est « password » (sans guillemets).

Accessing the Pi-hole dashboard.

Comme vous pouvez le voir ci-dessous, le conteneur Pi-hole ne bloque pas activement les publicités et est en mode veille en attente de ce qu’il appelle des « requêtes » ou des demandes de publicités à évaluer.

Viewing Pi-hole dashboard Default Page.

Pointer le serveur DNS de l’hôte vers l’adresse IP de Pi-hole

Avec le serveur Pi-hole en cours d’exécution, comment bloquer les publicités sur votre système local ? Vous devez indiquer à votre système local de router toutes les demandes vers l’adresse IP de Pi-hole et de bloquer toutes les publicités correspondantes. Continuez à lire pour apprendre comment faire !

1. Cliquez avec le bouton droit de la souris sur l’icône des paramètres réseau dans la barre d’état système de Windows et choisissez Ouvrir les paramètres réseau et Internet pour voir la liste de tous les adaptateurs réseau de votre machine.

Accessing Network & Internet Settings

2. Ensuite, cliquez avec le bouton droit de la souris sur votre adaptateur réseau et choisissez Propriétés. La fenêtre des paramètres de votre adaptateur réseau s’ouvrira.

Accessing Network Adapter Properties.

3. Sélectionnez Version 4 du protocole Internet (TCP/IPv4) dans la liste sous l’onglet Réseautage, puis cliquez sur le bouton Propriétés.

Accessing IPv4 Properties.

4. Configurez les propriétés IPv4 comme suit :

  • Sélectionnez l’option Utiliser l’adresse IP suivante pour définir une adresse IP statique. L’attribution d’une adresse IP statique à la machine hôte permet à d’autres appareils de se connecter et d’utiliser le bloqueur de publicités. La passerelle par défaut du routeur diffère selon les paramètres de votre fournisseur d’accès à Internet (FAI) dans votre pays.
  • Sélectionnez l’option Utiliser les adresses de serveur DNS suivantes pour configurer votre serveur DNS, et ajoutez un serveur DNS dans le champ Serveur DNS préféré. Entrez l’adresse IP du serveur Docker que vous avez définie à partir de la commande docker précédente sous la section “Exécution du conteneur Docker Pi-hole avec des variables d’environnement”.
  • Ajoutez un serveur alternatif comme le serveur Google 8.8.8.8 dans le champ Serveur DNS alternatif, et cliquez sur OK. Le serveur DNS alternatif sert de serveur DNS au cas où le conteneur Docker Pi-hole tomberait en panne pour une raison quelconque. Vous pouvez donner une autre valeur au serveur DNS alternatif que vous préférez.
Configuring IPv4 Properties

Configuration du DNS d’un seul appareil

En supposant que vous avez un smartphone ou tout autre appareil connecté au même réseau, vous pouvez pointer le serveur DNS de cet appareil pour correspondre à l’adresse IP de l’hôte. Dans ce tutoriel, un smartphone est connecté au même réseau.

1. Dans les paramètres de réseau sans fil du smartphone, appuyez sur Manuel et entrez l’adresse IP de la machine hôte. Vous pouvez également ajouter des adresses IP alternatives au cas où Pi-hole échouerait.

L’interface des paramètres de réseau sans fil sur les smartphones diffère les uns des autres.

Configuring DNS server on smartphone

2. Maintenant, visitez certains sites web qui sont lourds en publicités dans le navigateur web de votre smartphone.

Pour cet exemple, les sites web du Daily Mail et du New York Times ont été visités à plusieurs reprises pendant 5 à 10 minutes. L’administrateur du navigateur en direct sur le tableau de bord Pi-hole affiche le nombre de publicités bloquées provenant de l’appareil, comme indiqué ci-dessous.

Les graphiques à barres sont une nouveauté de la dernière version de Pi-hole à l’heure de la rédaction de ce texte. Certaines versions plus anciennes utilisent des graphiques linéaires à la place.

Running Docker Pi-hole in Action with a Smartphone Usage for 5-10 Minutes

Activation du blocage réseau à domicile via les paramètres du routeur

Au lieu de configurer un serveur DNS sur un seul appareil, essayez de configurer des serveurs DNS pour tous les appareils dans les paramètres de votre routeur. Selon votre routeur, il peut y avoir ou non une option permettant d’utiliser l’adresse IP.

Pour cette démonstration, le routeur n’autorisait pas l’accès à la modification des serveurs DNS et du DHCP. Par conséquent, la configuration du réseau domestique n’a pas été explorée en détail dans ce tutoriel en raison des contraintes du routeur.

Dans une vue d’administration d’exemple, vous pouvez être en mesure d’encoder l’adresse IP du serveur DNS de la même manière que cela a été fait sur un seul appareil. Cette démonstration utilise un routeur Prolink PRS1841U-v2 verrouillé par le FAI.

L’interface de configuration DNS diffère d’un routeur à l’autre, mais les paramètres ressemblent à ceux ci-dessous.

Manually setting a router DNS settings.

Vous pouvez également désactiver le serveur DHCP dans le routeur, puis activer le serveur DHCP dans Pi-hole à la place. Une discussion d’exemple dans la communauté Pi-hole montre cela plus en détail.

Blocage des sites Web via le tableau de bord Pi-hole

L’installation par défaut de Pi-hole bloque environ 92 725 sites Web par défaut, mais vous pouvez également ajouter plus de sites Web via les listes noires du fabricant de Pi-hole et d’autres listes partagées par les fans de Pi-hole.

1. Enregistrez les sites Web à bloquer dans un fichier texte avec le nom de votre choix. Pour cet exemple, le fichier est nommé blocklist.txt.

2. Exécutez la commande docker ci-dessous pour copier le fichier blocklist.txt (cp blocklist.txt) dans le volume du conteneur Docker dans un fichier nommé blacklist.txt. Gardez le fichier blacklist.txt sur le volume Docker afin que Pi-hole le détecte automatiquement.

docker cp blocklist.txt d70:/etc/pihole/blacklist.txt

3. Enfin, accédez à nouveau au tableau de bord d’administration de Pi-hole. Cliquez sur le menu Outils dans le panneau de gauche, puis sur le lien Mettre à jour Gravity. Enfin, cliquez sur Mettre à jour pour récupérer une liste mise à jour des URL à bloquer pour Pi-hole.

Showing Update Gravity on Pi-hole UI after Copying Additional Website Blacklists on Text File

A successful update will look like the one below.

Showing Display of Update Gravity Success

Mise à jour de la liste de blocage des sites Web via la console

Vous préférez peut-être exécuter des commandes console plutôt que de naviguer dans le tableau de bord de Pi-hole. Si c’est le cas, vous pouvez exécuter une commande Docker dans PowerShell pour bloquer des sites Web. Exécutez la commande docker exec ci-dessous pour créer une session de terminal interactive dans le conteneur Docker pihole_app, ce qui permet l’exécution de commandes.

docker exec -it pihole_app /bin/bash

Une fois la session terminal ouverte, exécutez la commande ci-dessous pour mettre à jour la liste noire des URL de Pi-hole.

pihole -g

Exécutez à nouveau pihole -g de temps en temps pour que votre bloqueur de publicités reste à jour.

Blocage des sites Web via des listes noires de URLs maintenues par la communauté

Certaines URLs sont dédiées à être régulièrement mises à jour par leurs contributeurs, et d’autres non, donc télécharger une liste noire à partir d’une ancienne liste peut ne pas refléter les derniers changements.

Tirez parti de la fonctionnalité de gestion de groupe de listes de blocage Adlist de Pi-hole. Sur le tableau de bord de Pi-hole, cliquez sur le menu Gestion des groupesListes d’annonces dans le panneau de gauche, puis cliquez sur Ajouter pour choisir la liste d’URL que vous souhaitez ajouter dans Pi-hole.

Adding a Community-Maintained Blacklists of URLs for Pi-hole to Block

Conclusion

Dans ce tutoriel, vous avez appris comment télécharger une image Docker Pi-Hole, tester une interface web Pi-hole en écoute active, tester un appareil externe pour se connecter à Pi-hole. Vous avez également appris comment bloquer les publicités et les sites web, et vous avez pu voir le tableau de bord de Pi-hole en action lorsqu’il les bloque.

Avec cette connaissance, pourquoi ne pas utiliser n’importe quelle machine hôte pour bloquer les publicités sur les autres appareils connectés sur le même réseau ?

Source:
https://adamtheautomator.com/pi-hole-in-docker/