Pi-hole est un puits DNS qui bloque les domaines publicitaires et de suivi au niveau réseau avant qu’ils n’atteignent vos appareils. Plutôt que d’installer une extension de navigateur sur chaque appareil, Pi-hole fonctionne sur un seul serveur — un Raspberry Pi, une VM Linux ou un conteneur Docker — et intercepte les requêtes DNS pour les domaines publicitaires connus, renvoyant une réponse vide. Chaque téléphone, tablette, smart TV, console de jeux et appareil IoT de votre réseau en bénéficie automatiquement. Ce guide couvre l’installation, la configuration du routeur, la gestion des listes de blocage, le DNS local et l’optimisation des performances de Pi-hole dans un environnement domestique ou de petite entreprise.
Prérequis
- Un Raspberry Pi (n’importe quel modèle 2+), une machine Linux de rechange ou un serveur/VM Linux existant
- Ubuntu 22.04/24.04, Debian 11/12 ou Raspberry Pi OS (64 bits recommandé)
- Adresse IP statique attribuée à l’hôte Pi-hole (via réservation DHCP du routeur ou configuration manuelle)
- Accès au panneau d’administration du routeur pour modifier les paramètres DNS
- Familiarité de base avec la ligne de commande Linux
curlinstallé (sudo apt install curl)
Installation de Pi-hole
La méthode la plus rapide pour installer Pi-hole sur un hôte Linux physique est le script d’installation officiel :
curl -sSL https://install.pi-hole.net | bash
L’assistant interactif vous demande de confirmer votre interface réseau, de sélectionner un fournisseur DNS en amont (Cloudflare 1.1.1.1, Google 8.8.8.8 ou autres), de choisir si vous souhaitez installer l’interface web d’administration et de définir un mot de passe administrateur. Acceptez les valeurs par défaut pour la plupart des options.
Après l’installation, notez l’adresse IP de votre Pi-hole. Le script l’affiche à la fin :
Pi-hole installation complete!
Admin console: http://192.168.1.50/admin
Installation de Pi-hole avec Docker
Si vous préférez les conteneurs, utilisez l’image officielle pihole/pihole avec Docker Compose :
# docker-compose.yml
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: "Europe/Paris"
WEBPASSWORD: "votre_mot_de_passe_sécurisé"
volumes:
- ./etc-pihole:/etc/pihole
- ./etc-dnsmasq.d:/etc/dnsmasq.d
restart: unless-stopped
docker compose up -d
L’approche Docker facilite les mises à jour (docker compose pull && docker compose up -d) et maintient Pi-hole isolé du système d’exploitation hôte. Un point d’attention : le port 53 peut entrer en conflit si l’hôte exécute systemd-resolved. Désactivez-le d’abord :
sudo systemctl disable --now systemd-resolved
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
Configuration du Routeur pour Utiliser Pi-hole
Pi-hole est inutile si les appareils n’envoient pas leurs requêtes DNS vers lui. La méthode la plus propre est de configurer le serveur DHCP de votre routeur pour annoncer l’IP de Pi-hole comme serveur DNS pour tout le réseau.
- Connectez-vous au panneau d’administration de votre routeur (généralement
192.168.1.1ou192.168.0.1). - Trouvez les Paramètres DHCP ou Paramètres LAN.
- Définissez le DNS Primaire sur l’IP statique de votre Pi-hole (ex.
192.168.1.50). - Optionnellement, définissez le DNS Secondaire sur
1.1.1.1comme secours (les appareils contourneront Pi-hole s’il est inaccessible — laissez vide pour un blocage strict). - Sauvegardez et redémarrez le service DHCP (les appareils connectés récupéreront le nouveau DNS au prochain renouvellement de bail ; forcez en vous reconnectant).
Vérifiez que le blocage fonctionne depuis n’importe quel appareil :
nslookup doubleclick.net 192.168.1.50
# Doit retourner 0.0.0.0 (bloqué)
Gestion des Listes de Blocage avec Gravity
La base de données de listes de blocage de Pi-hole s’appelle gravity. L’installation par défaut inclut la liste d’hôtes de StevenBlack (~180 000 domaines). L’étendre améliore significativement la couverture du blocage.
Ajout de Listes de Blocage via le Tableau de Bord
- Ouvrez
http://VOTRE_IP_PIHOLE/adminet connectez-vous. - Allez dans Adlists (dans la section Gestion des Groupes).
- Collez les URLs des listes de blocage et cliquez sur Ajouter. Listes recommandées de firebog.net :
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
https://v.firebog.net/hosts/Easylist.txt
https://v.firebog.net/hosts/Easyprivacy.txt
https://v.firebog.net/hosts/AdguardDNS.txt
- Après avoir ajouté les listes, mettez à jour gravity pour les télécharger et les compiler :
pihole -g
Une configuration typique avec 5-6 listes bloque entre 500 000 et 1 000 000 domaines. Évitez d’ajouter trop de listes se chevauchant — les rendements décroissants apparaissent rapidement au-delà de 1,5 million d’entrées.
Planification des Mises à Jour Automatiques
Ajoutez une tâche cron hebdomadaire pour maintenir gravity à jour :
sudo crontab -e
# Ajoutez cette ligne :
0 3 * * 0 pihole -g > /var/log/pihole_gravity.log 2>&1
Pi-hole vs. Alternatives
| Fonctionnalité | Pi-hole | AdGuard Home | NextDNS | Extension Navigateur |
|---|---|---|---|---|
| Couverture réseau complète | Oui | Oui | Oui | Non (navigateur seul) |
| Auto-hébergé | Oui | Oui | Non (cloud) | N/A |
| Blocage IoT/TV | Oui | Oui | Oui | Non |
| Complexité de configuration | Moyenne | Moyenne | Faible | Très faible |
| DNS local personnalisé | Oui | Oui | Limité | Non |
| Support DNSSEC | Oui | Oui | Oui | Non |
| Blocage par regex | Non | Oui | Limité | Selon extension |
| Coût | Gratuit | Gratuit | Gratuit/payant | Gratuit/payant |
AdGuard Home est une alternative intéressante avec blocage par regex et une interface plus moderne. NextDNS est excellent si vous souhaitez zéro maintenance de serveur. Pi-hole l’emporte pour les configurations auto-hébergées avec contrôle total.
Scénario Réel : Homelab avec Plus de 30 Appareils
Vous gérez un réseau domestique avec des smart TV, téléphones, tablettes, plusieurs serveurs Linux et des appareils IoT comme des ampoules intelligentes et des caméras. Avant Pi-hole, les journaux DNS de votre routeur montrent du trafic constant vers googleadservices.com, doubleclick.net et des points de terminaison de télémétrie du fabricant de votre smart TV.
Après avoir déployé Pi-hole sur un Raspberry Pi 4 avec l’IP statique 192.168.1.50 :
- Le DHCP de votre routeur annonce
192.168.1.50comme DNS. - Chaque appareil commence automatiquement à utiliser Pi-hole sans reconfiguration.
- Le tableau de bord montre que 25-40% de toutes les requêtes DNS sont bloquées — principalement des pubs et de la télémétrie.
- Vous ajoutez des entrées DNS locales pour que
nas.homerésolve l’IP de votre NAS etplex.homepointe vers votre serveur multimédia. - Votre smart TV cesse de communiquer avec des serveurs d’analyse.
Le journal des requêtes de Pi-hole vous permet d’auditer exactement quels domaines chaque appareil consulte, ce qui est inestimable pour repérer du trafic réseau inattendu de la part d’appareils IoT.
DNS Local et Enregistrements CNAME
L’une des fonctionnalités sous-estimées de Pi-hole est de servir de résolveur DNS local pour les noms d’hôtes du homelab. Naviguez vers Local DNS dans le tableau de bord :
- Enregistrements DNS — associe des noms d’hôtes à des IPs (ex.
nas.home → 192.168.1.100) - Enregistrements CNAME — crée des alias (ex.
fichiers.home → nas.home)
Cela vous permet d’accéder aux services par nom plutôt que par adresse IP, ce qui est particulièrement utile lorsque les adresses IP changent.
Pièges et Cas Particuliers
Pi-hole tombe et internet cesse de fonctionner. Cela se produit si vous configurez Pi-hole comme seul DNS et qu’il plante ou que l’hôte redémarre. Solutions : configurez une deuxième instance Pi-hole, ou configurez un DNS de secours dans votre routeur. Pour les environnements critiques, exécutez deux instances Pi-hole.
Les publicités HTTPS ne sont pas bloquées. Pi-hole ne gère que le DNS. Il ne peut pas inspecter le trafic HTTPS ni bloquer les pubs servies depuis le même domaine que le contenu (comme les pubs YouTube, qui utilisent des sous-domaines de youtube.com). Pour ceux-là, vous avez toujours besoin d’une extension de navigateur comme uBlock Origin.
Les clients ignorent vos paramètres DNS. Certains appareils (Chromecast, Google Home) ont l’IP de Google 8.8.8.8 codée en dur. Vous pouvez les intercepter avec une règle de pare-feu :
# Rediriger tout le trafic DNS vers Pi-hole (nécessite iptables sur routeur/pare-feu)
iptables -t nat -A PREROUTING -i br0 -p udp --dport 53 ! -d 192.168.1.50 -j DNAT --to 192.168.1.50:53
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 ! -d 192.168.1.50 -j DNAT --to 192.168.1.50:53
La mise à jour de gravity échoue après une mise à jour du système. Après la mise à niveau du système d’exploitation hôte, exécutez pihole -r (réparation) pour restaurer les fichiers de configuration de Pi-hole.
Le conteneur Docker perd sa configuration au redémarrage. Montez toujours /etc/pihole et /etc/dnsmasq.d comme volumes — ne comptez jamais sur le système de fichiers du conteneur pour les données persistantes.
Résolution de Problèmes Courants
Les pubs apparaissent toujours après la configuration. Vérifiez : (1) L’appareil utilise-t-il vraiment l’IP de Pi-hole comme DNS ? Exécutez nslookup google.com et regardez la ligne Server:. (2) L’appareil avait-il une réponse DNS en cache ? Videz le cache DNS de l’appareil. (3) La publicité est-elle servie depuis le même domaine que le contenu ?
Le tableau de bord Pi-hole renvoie 404. Le serveur web lighttpd n’est peut-être pas en cours d’exécution. Redémarrez : sudo systemctl restart lighttpd.
La mise à jour de gravity échoue avec des erreurs de certificat. Les certificats CA de votre hôte sont peut-être obsolètes. Correction : sudo apt update && sudo apt install ca-certificates.
Latence élevée des requêtes. Pi-hole ajoute ~1ms de latence. Si vous observez beaucoup plus, vérifiez que le cache des requêtes est activé (déjà activé par défaut) et que votre fournisseur DNS en amont est réactif.
Vérification du statut de Pi-hole :
pihole status
pihole -c # statistiques en temps réel
pihole tail # journal des requêtes en direct
pihole -q exemple.com # tester si un domaine est bloqué
Résumé
- Pi-hole est un puits DNS qui bloque les pubs et traceurs pour tous les appareils du réseau sans installer de logiciel sur chaque appareil individuellement
- Installez-le avec le script d’une ligne sur n’importe quel hôte Linux Debian/Ubuntu, ou déployez-le via Docker Compose
- Attribuez une IP statique à l’hôte Pi-hole et configurez le DHCP du routeur pour l’annoncer comme DNS
- Étendez la couverture en ajoutant des listes de blocage sélectionnées depuis firebog.net et en exécutant
pihole -gpour mettre à jour gravity - Utilisez la fonctionnalité DNS local de Pi-hole pour donner des noms mémorables aux services du homelab
- Pi-hole ne peut pas bloquer les pubs HTTPS servies depuis le même domaine que le contenu (YouTube) ; associez-le à uBlock Origin dans votre navigateur pour une couverture complète
- Pour la redondance, exécutez une deuxième instance Pi-hole ou configurez un DNS de secours pour que l’accès internet survive à une panne de Pi-hole