Comment installer et configurer Pi-Hole sur un Raspberry Pi 5

Note : Ce guide est conçu pour Pi-hole v6. Si vous utilisez une version plus ancienne (v5), certaines commandes de configuration et le comportement du serveur web peuvent différer.
Maintenant que nous avons un Pi 5 entièrement configuré, ajoutons quelques services. Le premier sera Pi-hole. C'est un serveur DNS auto-hébergé capable de bloquer les publicités à l'échelle du réseau. Fini les pubs, même sur votre téléphone, tant que vous êtes connecté à votre réseau local !
Qu'est-ce qu'un DNS et à quoi servent les serveurs DNS ?
Lorsque vous essayez d'accéder à des sites web et des services internet, votre navigateur ou une autre application réseau doit savoir où se trouve le serveur. Cela se fait via une IP, l'adresse IP d'un serveur est un identifiant unique qui mène à cette machine spécifique dans le monde entier.
Cependant, vous ne tapez pas 142.250.110.190 dans votre navigateur, ce serait difficile à retenir. À la place, vous tapez youtube.com. Par conséquent, quelque chose doit traduire cette URL en une adresse IP pour que votre PC sache où envoyer la requête. C'est le rôle d'un serveur DNS ; c'est en quelque sorte un grand annuaire pour traduire les URL.
En réalité, le DNS ne traduit pas l'URL entière, seulement le nom de domaine. Ainsi :
https://www.youtube.com/watch?v=Aq5WXmQQooo
Devient :
https://142.250.110.190/watch?v=Aq5WXmQQooo
Pour être précis, taper directement l'adresse IP ne fonctionnera même pas. C'est parce que de nombreux services peuvent se trouver à la même adresse IP avec le même port. Le nom de domaine est également envoyé dans la requête (via l'en-tête Host) pour que le serveur sache quel service fournir.
Comment un serveur DNS peut-il bloquer les publicités ?
Lorsque vous visitez un site web et que vous voyez une publicité, celle-ci provient en fait d'un autre serveur, dont l'adresse diffère de celle du site que vous consultez. Ces adresses sont connues et si vous savez qu'une URL est utilisée pour diffuser des publicités, vous pouvez la bloquer.
En pratique, Pi-Hole dispose d'une grande base de données de domaines et résoudra toujours ces domaines vers 0.0.0.0. Cela signifie qu'ils ne mènent nulle part et qu'aucune publicité n'est diffusée ! Comme Pi-Hole opère au niveau du réseau, la plupart des sites web ne peuvent pas le détecter; ils ne cherchent généralement que les extensions navigateur comme AdBlock. Cela rend Pi-Hole bien plus efficace.

Comment installer Pi-Hole ?
Dans cette série d'articles, mon projet est de configurer Kubernetes sur mon Pi pour héberger des applications web. Cependant, nous ne pouvons pas déployer Pi-Hole à l'intérieur de Kubernetes. Pourquoi ? Parce que Pi-Hole doit déjà être en marche avant le démarrage du cluster; c'est un problème de l'œuf et la poule. Le serveur DNS doit être joignable à une adresse IP connue, il doit donc tourner directement sur la machine hôte.
Étape 1 : Mettre à jour le Pi
Si vous suivez cette série, vous l'avez déjà fait, mais sinon, mettez toujours à jour votre distribution Linux pour obtenir les dernières applications :
Donc, via SSH dans le Pi 5, exécutez :
sudo apt update
sudo apt full-upgrade -y
sudo rebootAprès le redémarrage, reconnectez-vous par SSH.
Étape 2 : Définir une adresse IP statique pour votre Pi
Actuellement, vous avez un Pi sur votre réseau, il peut être connecté en Wi-Fi ou en Ethernet ; je recommande vivement de désactiver le Wi-Fi et d'utiliser uniquement une connexion Ethernet par câble. Cela signifie que votre Pi a reçu une IP aléatoire de votre routeur. Nous voulons que le Pi conserve la même IP locale pour nous assurer qu'il soit toujours à la même adresse.
Pour ce faire, vous devrez accéder à votre modem/routeur à la maison. La procédure varie beaucoup et dépend de votre fournisseur d'accès à Internet (FAI). Habituellement, vous pouvez essayer ces adresses directement dans votre navigateur, dans l'ordre des plus probables :
- 192.168.0.1
- 192.168.1.1
- 192.168.1.254
- 10.0.0.1
- 10.1.1.1
Si cela ne fonctionne pas, essayez de trouver la documentation de votre FAI et de votre routeur/modem.
Une fois que vous avez trouvé la bonne adresse IP, vous devriez voir quelque chose de similaire à ceci, en fonction de votre FAI. Vous devrez maintenant trouver le mot de passe, qui devrait se trouver sur la boîte ou dans la documentation de votre FAI.

Selon votre FAI, vous devriez trouver une page similaire à celle-ci, où vous pouvez définir une adresse IP fixe pour les différents appareils connectés à votre réseau. Cherchez des paramètres nommés "Bail statique", "Réservation DHCP" ou "IP statique". Ici, vous devez être prudent : un appareil n'est pas le Pi lui-même mais l'adresse MAC de l'interface réseau. Donc, si vous avez à la fois le Wi-Fi et l'Ethernet sur votre Pi, vous verrez votre Pi deux fois.
Exécutez cette commande :
ip -o link | awk '/link\/ether/ {print $2, $(NF-2)}'Et vous obtiendrez quelque chose comme :
eth0: 2c:cf:67:12:34:56
wlan0: dc:a6:32:ab:cd:ef
lo: 00:00:00:00:00:00 Utilisez l'adresse MAC de eth0 si vous voulez utiliser l'Ethernet filaire ou wlan0 pour utiliser le Wi-Fi. Ensuite, vous pouvez choisir une IP, je suggère de garder celle déjà utilisée. Pour moi, c'était 192.168.0.14.

Étape 3 : Installer Pi-Hole
Maintenant, installons Pi-Hole avec :
curl -sSL https://install.pi-hole.net | bashNote : Exécuter un script téléchargé depuis Internet avec
bashimplique de lui faire confiance. Si vous le souhaitez, Vous pouvez consulter le script d'installation sur GitHub avant de l'exécuter.
Pendant l'installation :
- choisissez votre interface réseau (celle avec une IP statique, donc soit
eth0, soitwlan0) - choisissez votre DNS en amont (Google ou Cloudflare conviennent, mais c'est à vous de décider)
À un moment donné, l'installateur vous donnera un mot de passe, n'oubliez pas de le noter. Vous pourrez le changer plus tard en utilisant :
sudo pihole setpasswordÉtape 4 : Déplacer le tableau de bord/API hors du port 80
Par défaut, le tableau de bord de Pi-Hole utilise le port 80 du Pi 5. Cependant, nous voulons garder ce port pour les services web que l'on déploiera sur Kubernetes dans un prochain chapitre. Par conséquent, nous allons déplacer le tableau de bord sur le port 8081 en exécutant ceci :
sudo pihole-FTL --config webserver.port "8081,[::]:8081"
sudo systemctl restart pihole-FTLVérifiez que le port 80 n'est plus utilisé par Pi-hole :
sudo ss -ltnp | grep -E ':80|:8081'Vous devriez voir Pi-hole écouter sur le port 8081, et non sur le 80.
Vous pouvez aussi vérifier le statut de Pi-hole :
sudo pihole statusEnsuite, ouvrez le tableau de bord en utilisant l'IP statique de votre Pi et connectez-vous avec votre mot de passe :
Pi-Hole devrait être en cours d'exécution maintenant !

Étape 5 : Configurer votre réseau pour qu'il utilise Pi-hole
Nous n'avons pas tout à fait terminé. Pi-Hole fonctionne, mais rien sur votre réseau ne l'utilise encore — c'est votre routeur qui décide quel serveur DNS utiliser. Vous pouvez également configurer le DNS au niveau de chaque appareil si vous le souhaitez, mais faisons-le sur le routeur.
Dans votre routeur, vous devriez trouver une page pour définir le DNS, qui ressemble à quelque chose comme ceci :

Pointez le DNS de votre routeur, ou le DNS de chaque client, vers l'adresse IP du Pi et sauvegardez !
Maintenant, nous devons nous assurer que le changement a été appliqué et que nous n'utilisons pas un DNS en cache. Vous pouvez redémarrer votre modem et votre PC pour ce faire. Vous pouvez également vider le cache DNS de votre PC :
Windows:
ipconfig /flushdnsLinux avec systemd-resolved:
sudo resolvectl flush-cachesmacOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderEnsuite, exécutez quelque chose comme :
nslookup youtube.comEt vous devriez maintenant être servi par votre Pi !
En cas de problème : Si votre connexion internet ne fonctionne plus après avoir changé le DNS, retournez dans les paramètres de votre routeur et remettez le DNS en automatique. Cela rétablira le fonctionnement normal le temps de déboguer.

Allez sur un site web connu pour avoir beaucoup de publicités et vérifiez si vous les voyez toujours, elles devraient avoir disparu !
Dans le tableau de bord de Pi-Hole, vous devriez pouvoir voir les requêtes bloquées et plus encore !

Rediriger les domaines .home.arpa vers votre Pi
Maintenant que nous avons un serveur DNS, mettons-le à contribution pour ne plus avoir à taper l'IP du Pi pour accéder au tableau de bord. Nous utilisons le domaine de premier niveau .home.arpa car c'est le choix standard pour les DNS de réseaux domestiques privés. En utilisant .home.arpa, vous vous assurez que votre domaine local n'entrera jamais en conflit avec un nom de domaine public.
Deux options s'offrent à vous selon votre configuration :
Option A : Rediriger un seul domaine
Si vous avez uniquement besoin d'une URL pratique pour Pi-Hole, redirigez seulement pihole.home.arpa vers le Pi :
sudo pihole-FTL --config misc.dnsmasq_lines '["address=/pihole.home.arpa/192.168.0.14"]'
sudo systemctl restart pihole-FTLLe tableau de bord est maintenant accessible (uniquement sur votre réseau local) à l'adresse :
http://pihole.home.arpa:8081/admin
Option B : Rediriger tous les *.home.arpa (mon choix)
Si votre Pi hébergera plusieurs services (par exemple via Kubernetes), vous pouvez rediriger tout ce qui se termine par .home.arpa vers lui :
sudo pihole-FTL --config misc.dnsmasq_lines '["address=/.home.arpa/192.168.0.14"]'
sudo systemctl restart pihole-FTLComme Kubernetes gère le routage interne, il saura quel service fournir pour quelle adresse sur le port 80.
Un effet secondaire : le tableau de bord de Pi-Hole devient accessible via n'importe quel domaine en .home.arpa sur le port 8081 (par ex. http://nimporte-quoi.home.arpa:8081/admin). Comme rien d'autre n'utilise ce port, ce n'est pas un problème.
Vérification
Quelle que soit l'option choisie, vérifiez que ça fonctionne :
nslookup pihole.home.arpaVous devriez voir l'adresse IP de votre Pi en réponse.
Et voilà ! Nous avons maintenant un serveur DNS auto-hébergé qui bloque les pubs sur tout le réseau, avec un routage local via .home.arpa. Je suis désormais le fier propriétaire de mon propre serveur DNS — et vous aussi si vous avez suivi ce tutoriel ! Dans le prochain chapitre, nous installerons Kubernetes sur le Pi.

Judicael Poumay (Ph.D.)
Suivez-moi sur LinkedIn pour du contenu hebdomadaire Judicaël Poumay
En tant que chercheur/développeur IA indépendant spécialisé en Traitement du Langage Naturel (NLP), j'ai une expertise complète dans le développement et l'intégration de systèmes d'IA, ainsi que l'analyse de données.
Votre entreprise cherche à intégrer des solutions IA, analyser des données ou renforcer son développement back-end ? Contactez-moi !
Articles Similaires

Comment configurer un Raspberry Pi 5 avec un HAT PoE et un SSD NVMe
Découvrez comment construire un serveur homelab compact et économe en énergie à l'aide d'un Raspberry Pi 5. Ce guide couvre le choix du matériel, l'assemblage d'un HAT PoE avec un SSD NVMe et la configuration initiale de démarrage.

Comment installer Kubernetes K3s sur un Raspberry Pi 5
Apprenez à installer et configurer K3s, une distribution Kubernetes légère, sur un Raspberry Pi 5. Ce guide couvre l'activation des cgroups, la mise en place du cluster et la configuration de l'accès à distance avec kubectl.

Comment déplacer l'OS du Raspberry Pi 5 sur un SSD NVMe
Apprenez à migrer manuellement votre système d'exploitation Raspberry Pi 5 d'une clé USB ou d'une carte SD vers un SSD NVMe plus rapide. Ce guide étape par étape couvre le partitionnement, la copie de fichiers, la mise à jour des configurations de démarrage et comment éviter les pièges courants.