Pi-Hole sur un Nas Synology via Docker
mercredi 27 août 2025, 08:01 Objectif Linux Lien permanent
Cet article est une mise à jour de mon précédent billet publié il y a trois ans, et devenu obsolète avec les évolutions du DSM (Synology DiskStation Manager). C'est aussi l'occasion de voir comment créer des conteneurs sur un Nas Synology et de faire les mises à jour. Et c'est enfin pour moi l'occasion de reprendre l'écriture sur ce blog que j'ai dû mettre entre parenthèses ces dernières années, dans la dernière ligne droite de mon activité professionnelle et la préparation de mon changement de Région pour une retraite que j'estime avoir bien méritée ;-).
Rappel sur Pi-Hole :
Pi-Hole est une application qui permet de protéger son réseau en filtrant les adresses IP à partir de listes noires en ligne qui lui sont adressées, et de listes noires locales. On peut configurer Pi-Hole pour ne laisser passer que les noms de domaines pleinement qualifiés (FQDN), et de sécuriser les données envoyées en utilisant le protocole DNSSEC.
Pi-Hole peut assurer d'autres services, il peut jouer le rôle de DHCP et il permet surtout de grouper les machines en fonction de leurs IP et de blacklister les domaines en fonction des groupes créés. On pourra par exemple déclarer un groupe de toutes les machines utilisées par les enfants de la maison et blacklister les sites adultes pour ce groupe.
On voit que Pi-Hole est bien plus qu'un filtre publicitaire, rôle auquel on le réduit bien souvent, un rôle qu'il ne peut assurer totalement, car il ne permet pas de filtrer les publicités émanant de la même IP que le site consulté. On ne pourra pas, par exemple, filtrer les publicités sur YouTube.
Prérequis :
Pour installer Pi-Hole sur Docker, il faut au préalable :
- Installer Docker Manager dans le Centre de Paquets.
- Créer un espace pour héberger les données qu'on souhaite externaliser. Ce sont principalement les données de configuration et les logs qui pourraient être écrasés lors des mises à jour.
Dans File Station, on crée un dossier docker pour stocker toutes données des conteneurs. On crée ensuite un dossier pihole, propre à Pi-Hole, et enfin, à l'intérieur de ce dossier, on crée un dossier pihole et un dossier dnsmasq.d.
On devrait avoir l'arborescence suivante :
/─ volume1
└── docker
└── pihole
└── pihole
└── dnsmasq.d
Téléchargement de Pi-Hole Docker:
Tout se fait maintenant dans Container Manager.
- On va dans Container Manager > Registre et on cherche l'image pihole
- On choisit l'image officielle, et on télécharge la dernière version en gardant bien la désignation latest. Cet intitulé sera inscrit dans la configuration et facilitera la mise à jour :

Une fois le téléchargement terminé, on doit retrouver l'image dans Container Manager > Image.

Création du projet :
On va ensuite dans Container Manager > Projet et on crée le projet.
- Nom du projet : pihole
- Chemin : /docker/pihole
- Source : Créer un fichier docker-compose.yml

- On complète le script de configuration comme ci-dessous :
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "8080:80/tcp"
- "8443:443/tcp"
- "53:53/tcp"
- "53:53/udp"
environment:
TZ=Europe/Paris
FTLCONF_webserver_api_password: 'mon_mot_de_passe;' # entre guillemets
volumes:
- '/volume1/docker/pihole/pihole:/etc/pihole'
- '/volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d'
cap_add:
- SYS_NICE
restart: unless-stopped # démarrer Pi-Hole au démarrage du Nas
network_mode: bridge
On voit que :
- ports : Pi-Hole sera accessible directement via l'adresse IP du Nas sur les ports 8080 ou 8443
- 53:53 TCP/UDP : Port DNS standard. Obligatoire pour que Pi-hole fonctionne comme résolveur DNS du réseau.
- TZ : réglé sur l'heure de Paris
- FTLCONF : on indique ici le mot de passe entre guillemets
- La configuration est externalisée vers /volume1/docker/pihole/..
- On ajoute la capacité Linux SYS_NICE, permettant d’ajuster la priorité CPU (nice value) pour améliorer les performances et la réactivité.
- restart : Pi-Hole redémarrera sauf si on l'arrête manuellement
- bridge : Pi-Hole aura sa propre adresse IP. Notez qu'il ne verra pas dans cette configuration les IP des autres machines, car il ne sera pas dans le même réseau.
On clique sur "Suivant", puis de nouveau sur "suivant", sans cocher "configurer le portail Web".

Puis, on clique sur "effectué" en laissant "Démarrer le projet..."

Un terminal s'ouvre et on assiste au démarrage de Pi-Hole

Si tout s'est bien passé, on devrait avoir le message "container pihole started" suivi du message "Exit Code: 0". On clique sur "Fermer".
On peut aller dans Container Manager > Conteneur, et voir que le conteneur pihole a bien été créé et qu'il est en service (voyant au vert).

L'installation est terminée, il reste à configurer Pi-Hole
Accès à la configuration de Pi-Hole :
Pour accéder à l'interface de configuration de Pi-Hole, on saisit l'adresse du IP du Nas complétée du port 8080, en précisant bien /admin.
Exemple : http://192.168.1.200:8080/admin
Remarque : en mode bridge, l'accès se fait par défaut en http (non sécurisé). L'accès en https ne marche pas.
Problème de mot de passe :
Si pour une raison quelconque, le mot de passe ne marche pas. Il faut le réinitialiser :
- Dans Container Manager > Conteneur, pihole en service (voyant vert), on clique sur 'action' puis 'ouvrir le terminal'
- On crée un terminal qui sera nommé 'bash'
- On ouvre ce terminal et on saisit la commande :
sudo pihole set password 'mon_mot_de_passe'(mot de passe entre guillemets simples)
Mise en service de Pi-Hole sur le réseau :
Configuration du routeur :
Il faut maintenant configurer le routeur (la box) en allant dans la configuration du DHCP
Vous avez ci-dessous l'exemple de configuration sur une freebox :

Ça ne marche pas ! :
Il est probable qu'à ce stade le service ne marche pas : on essaie d'accéder à un site et la page ne se charge pas. On a tout simplement oublié de prendre en compte le routage des ports dans le pare-feu de la box.
Rassurez-vous, le Nas le fera pour vous dans la majorité des cas (testé chez free et SFR).
- On ouvre le panneau de configuration du Nas, et on va dans Accès externe > Configuration du routeur.
- On clique sur "Configurer le routeur" et on suit la procédure

Configuration de Pi-Hole :
La configuration à proprement parler fera peut-être l'objet d'un nouveau billet, quand j'aurai le courage ;-).
En attendant, le billet que j'avais rédigé en 2019 devrait rester à peu près valable :
Notez que la configuration de groupes de machines n'est pas possible en mode bridge. Je ferai un billet prochainement pour indiquer comment régler ce problème.
Mise à jour du conteneur :
Il est important de faire régulièrement les mises à jour des containers, d'une part pour bénéficier des dernières fonctionnalités, mais d'autre part et surtout pour intégrer les corrections des bugs et des problèmes de sécurité.
Quand une mise à jour est disponible, elle est signalée sur la page Container Manager > Image
Ci-dessous, on voit que je peux mettre à jour gitlab_ce

Notez quand même la version de Pi-Hole avant une mise à jour. On ne sait jamais...
Il suffit ensuite de cliquer sur Mise à jour disponible. La mise à jour se fait toute seule et peut prendre un certain temps : le temps de téléchargement, de recréation du conteneur et démarrage.
La mise à jour est terminée lorsque le voyant passe au vert dans la page Contenair Manager > Conteneur.
Problème de mise à jour :
Il arrive que la mise à jour se passe mal. Le conteneur ne démarre pas ou reboote en boucle. C'est le cas notamment quand on a laissé passé plusieurs mises à jour et qu'on tente le grand saut.
On peut tenter :
- d'arrêter le conteneur
- de recharger la version précédente de l'image
- d'effacer le conteneur
- d'adapter le fichier compose.yaml contenu dans /docker/pihole/. On remplace latest par le nom de la version téléchargée
- Dans 'Projet', cliquer sur 'Action > Créer'
- Ensuite, on reprend les mises à jour par paliers