Pourquoi auto-héberger Pi-hole sur un VPS
Pi-hole est un résolveur DNS filtrant : il intercepte les requêtes de vos appareils et refuse de résoudre les domaines de publicité, de télémétrie et de pistage à partir de listes de blocage. Hébergé sur un VPS plutôt que sur un Raspberry à la maison, il vous suit partout : votre téléphone en 4G, votre portable au café, ou un serveur distant peuvent l'utiliser comme DNS et bénéficier du filtrage. Le VPS apporte ce que le matériel local ne peut pas : une IP publique stable accessible de n'importe où et une disponibilité permanente. La contrepartie est la sécurité — un résolveur DNS ouvert sur Internet est une cible. C'est tout l'enjeu de ce déploiement : exposer Pi-hole de façon contrôlée, jamais en DNS public ouvert.
Bénéfices concrets de Pi-hole sur VPS
- Filtrage publicitaire et anti-pistage pour tous vos appareils, où qu'ils soient, sans logiciel à installer.
- DNS chiffré possible (DNS-over-HTTPS / DNS-over-TLS) en amont via un résolveur comme cloudflared.
- Tableau de bord détaillé : visualisez en temps réel quels domaines vos appareils contactent.
- Listes de blocage personnalisables et règles allow/deny par client pour des politiques différenciées.
- Résolution plus rapide grâce au cache DNS local, partagé entre tous vos appareils.
- Réutilisable comme DNS pour vos autres VPS et conteneurs, avec journalisation centralisée.
Prérequis techniques
Pi-hole est extrêmement léger : 1 vCPU, 512 Mo à 1 Go de RAM et quelques gigaoctets de disque suffisent. Il faut Docker et Docker Compose. Le point critique n'est pas la puissance mais le réseau et la sécurité : Pi-hole écoute sur le port 53 (DNS, TCP et UDP) et expose une interface web d'administration. Ne jamais ouvrir le port 53 à tout Internet — un résolveur DNS ouvert sera abusé pour des attaques par amplification. Prévoyez donc soit un VPN (WireGuard) pour accéder au DNS de façon privée, soit une restriction par pare-feu aux seules IP autorisées. Un sous-domaine pihole.votredomaine.ma est utile pour l'interface en HTTPS.
Déployer Pi-hole pas à pas
Préparer la stack Docker
Sur le VPS, créez /opt/pihole et un docker-compose.yml basé sur l'image pihole/pihole:latest. Définissez la variable WEBPASSWORD, le fuseau TZ, et montez des volumes pour /etc/pihole et /etc/dnsmasq.d afin de persister la configuration.
Verrouiller l'accès DNS avant tout
Ne publiez pas le port 53 vers 0.0.0.0. Le plus sûr : déployez d'abord WireGuard sur le VPS et faites écouter Pi-hole uniquement sur l'interface VPN. À défaut, restreignez le port 53 par pare-feu (ufw) aux seules IP de confiance. Un résolveur ouvert est inacceptable.
Lancer Pi-hole
Démarrez avec docker compose up -d. Vérifiez que le service répond en interne : docker compose exec pihole dig @127.0.0.1 doubleclick.net doit renvoyer une réponse bloquée (0.0.0.0).
Sécuriser l'interface d'administration
Exposez l'interface web (port interne 80) uniquement derrière un reverse proxy HTTPS, jamais en clair. Avec Caddy : pihole.votredomaine.ma { reverse_proxy pihole:80 }. L'admin reste accessible sur /admin avec le mot de passe défini.
Activer un DNS amont chiffré
Ajoutez un conteneur cloudflared comme résolveur DoH et configurez Pi-hole pour l'utiliser comme upstream (127.0.0.1#5053). Vos requêtes sortantes sont alors chiffrées entre le VPS et le résolveur public.
Configurer vos appareils
Pointez le DNS de vos appareils (ou la config WireGuard) vers l'IP du VPS. Sur mobile, utilisez le profil VPN pour router le DNS via Pi-hole même en déplacement. Vérifiez le filtrage dans le tableau de bord en temps réel.
Combinez Pi-hole avec WireGuard sur le même VPS : faites écouter Pi-hole exclusivement sur l'interface wg0 et distribuez-le comme DNS dans la configuration des pairs WireGuard. Vous obtenez un DNS filtrant privé, chiffré, accessible depuis n'importe où, sans jamais exposer le port 53 à Internet — c'est la seule manière vraiment sûre d'avoir un Pi-hole « nomade ». Ajoutez ensuite des listes de blocage thématiques (par exemple les listes anti-télémétrie ou anti-traceurs régionaux) plutôt qu'une seule liste géante, pour garder un taux de faux positifs bas.