Réseau

Pi-hole sur Raspberry Pi — Bloquer les pubs sur tout le réseau

Guide complet pour installer Pi-hole sur un Raspberry Pi et bloquer publicités et trackers pour tous les appareils du réseau local via DNS.

Table des matières

Pi-hole est un bloqueur de publicités au niveau DNS qui protège l’ensemble de votre réseau — téléphones, TVs connectées, consoles, ordinateurs — sans installer quoi que ce soit sur chaque appareil.

Principe de fonctionnement

Appareil (téléphone, PC, TV...)
       │ Requête DNS : pub.example.com
       ▼
Pi-hole (serveur DNS local)
       │ Liste noire : pub.example.com → BLOQUÉ → 0.0.0.0
       │ Domaine légitime → forwarde vers 1.1.1.1
       ▼
Internet (uniquement pour les domaines légitimes)

Pi-hole répond 0.0.0.0 pour les domaines publicitaires — l’appareil ne charge jamais le contenu.

Matériel requis

  • Raspberry Pi (Zero 2W, 3B+, 4 ou 5)
  • Carte microSD ≥ 8 Go (classe 10)
  • Alimentation micro-USB ou USB-C selon le modèle
  • Connexion Ethernet (recommandé) ou Wi-Fi
Quel modèle choisir ?

Le Raspberry Pi Zero 2W (~18€) suffit amplement pour Pi-hole sur un réseau domestique. Le Pi 4 est surdimensionné pour cet usage mais permet d’héberger d’autres services en même temps.

Installation de Raspberry Pi OS

1. Téléchargez Raspberry Pi Imager

2. Dans l’imager, cliquez sur l’icône ⚙️ avant de flasher pour préconfigurer :

  • Activez SSH
  • Configurez votre Wi-Fi (SSID + mot de passe)
  • Définissez un hostname (ex: pihole)
  • Définissez un utilisateur/mot de passe

3. Flashez la carte SD avec Raspberry Pi OS Lite (64-bit)

4. Insérez la carte et démarrez le Pi. Connectez-vous en SSH :

ssh pi@pihole.local
# ou ssh pi@IP_DU_PI

Attribution d’une IP statique

Pi-hole doit toujours avoir la même IP pour servir de DNS :

# Option 1 : réservation DHCP dans votre box/routeur (recommandé)
# Trouvez l'adresse MAC du Pi dans l'interface de votre routeur
# et créez une réservation DHCP

# Option 2 : IP statique sur le Pi
sudo nano /etc/dhcpcd.conf

# Ajouter à la fin :
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=127.0.0.1

Installation de Pi-hole

curl -sSL https://install.pi-hole.net | bash

L’installateur interactif vous guidera :

  1. Interface réseau : eth0 (câble) ou wlan0 (Wi-Fi)
  2. DNS upstream : choisissez votre forwarder (Cloudflare, Quad9, etc.)
  3. Confirmation IP statique : validez votre IP
  4. Interface web : activez-la

À la fin, notez le mot de passe admin généré.

Mot de passe admin

Si vous ratez le mot de passe, vous pouvez le changer à tout moment avec : pihole -a -p nouveau-mot-de-passe

Configuration post-installation

Accéder à l’interface web

Ouvrez http://192.168.1.100/admin dans votre navigateur.

Mettre à jour les listes de blocage

pihole -g

Ajouter des listes supplémentaires

Dans l’interface : Group Management → Adlists, ajoutez :

https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://someonewhocares.org/hosts/zero/hosts
https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
https://adaway.org/hosts.txt

Après ajout : Tools → Update Gravity pour télécharger les listes.

Configurer votre box comme serveur DNS

C’est l’étape clé : tous les appareils du réseau doivent utiliser Pi-hole comme DNS.

Dans l’interface de votre box/routeur :

  • Paramètres DHCP → DNS primaire : 192.168.1.100 (IP du Pi)
  • DNS secondaire : laisser vide ou mettre 1.1.1.1 (fallback si Pi-hole tombe)

Sur certaines box, il faut redémarrer les appareils pour qu’ils obtiennent le nouveau DNS.

Résultats typiques

Après quelques heures de fonctionnement :

Métrique Valeur typique
Requêtes bloquées 20-35%
Domaines dans la liste noire 150 000 - 300 000
Latence DNS ajoutée < 1ms en LAN
RAM utilisée (Pi Zero 2W) ~80 Mo

Commandes utiles

# Statut Pi-hole
pihole status

# Voir les requêtes en temps réel
pihole -t

# Mettre à jour Pi-hole
pihole -up

# Désactiver temporairement (300 secondes)
pihole disable 300
pihole enable

# Whitelister un domaine
pihole -w domaine.com

# Blacklister un domaine manuellement
pihole -b domaine-pub.com

# Statistiques rapides
pihole -c

Dépannage courant

Un site est bloqué par erreur

# Chercher dans les logs
pihole -t | grep "nom-du-site.com"

# Whitelister
pihole -w nom-du-site.com

Les appareils n’utilisent pas Pi-hole

# Vérifier quel DNS un appareil utilise (depuis cet appareil)
# Windows :
nslookup google.com
# → Server: doit afficher l'IP de Pi-hole

# Linux/Mac :
dig google.com | grep SERVER

Pi-hole ne répond pas

# Vérifier le service
sudo systemctl status pihole-FTL

# Redémarrer si nécessaire
sudo systemctl restart pihole-FTL

Sur mon homelab

Sur mon Raspberry Pi, Pi-hole tourne en conteneur Docker avec vlmcsd (serveur KMS) sur la même machine :

services:
  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "80:80/tcp"
    environment:
      TZ: Europe/Paris
      WEBPASSWORD: votre-mot-de-passe
      PIHOLE_DNS_: 94.140.14.14;1.1.1.1
    volumes:
      - ./etc-pihole:/etc/pihole
      - ./etc-dnsmasq.d:/etc/dnsmasq.d

  vlmcsd:
    image: mikolatero/vlmcsd:latest
    container_name: vlmcsd
    restart: unless-stopped
    ports:
      - "1688:1688"
Résultat

Sur mon réseau, Pi-hole bloque en moyenne 28% des requêtes DNS — principalement de la publicité, des trackers et de la télémétrie Windows et Android.

Conclusion

Pi-hole est l’un des projets homelab avec le meilleur rapport effort/résultat. Une fois installé, il fonctionne de manière transparente pour tous les appareils du réseau sans aucune configuration côté client.

Comments