Outils pour utilisateurs

Outils du site


tutoriaux:docker-related:stacks-pi-hole

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriaux:docker-related:stacks-pi-hole [2024/07/06 13:38] – [Cahier de charges] fratertutoriaux:docker-related:stacks-pi-hole [2024/07/31 09:59] (Version actuelle) frater
Ligne 3: Ligne 3:
 Il n'est plus nécessaire de présenter [[https://pi-hole.net|pi-hole.net]] tant cet outil rends le contrôle et la réduction des trackers/publicité facile. Il n'est plus nécessaire de présenter [[https://pi-hole.net|pi-hole.net]] tant cet outil rends le contrôle et la réduction des trackers/publicité facile.
  
-En migrant mon instance pi-Hole vers docker, je me suis heurté à un soucis imprévu, l'[[https://github.com/pi-hole/docker-pi-hole/#running-pi-hole-docker|image officielle]] ne contient pas de serveur "upstream" intégré; elle est parfaitement fonctionnelle avec des DNS upstream tel que google, quad9, cloudflare, mais si l'on veut réellement être indépendant, il manque son propre référentiel.+En migrant mon instance pi-Hole vers docker, je me suis heurté à un soucis imprévu, l'[[https://github.com/pi-hole/docker-pi-hole/#running-pi-hole-docker|image officielle]] ne contient pas de serveur "upstream" intégré (c'est en discussion pour une future révision); elle est parfaitement fonctionnelle avec des DNS upstream tel que google, quad9, cloudflare, mais si l'on veut réellement être indépendant, il manque son propre référentiel
 + 
 +il existe des images [[https://hub.docker.com/search?q=pihole-unbound|Pihole modifiées]], mais celle-ci peuvent ne pas suivre la cadence d'update ou contenir des packages en plus que l'on ne désire pas.
  
 Avec docker, il est très facile d'ajouter un container "unbound" et de le configurer en serveur upstream, pour ensuite faire pointer pi-Hole sur ce container. Avec docker, il est très facile d'ajouter un container "unbound" et de le configurer en serveur upstream, pour ensuite faire pointer pi-Hole sur ce container.
Ligne 9: Ligne 11:
 ===== Cahier de charges ===== ===== Cahier de charges =====
  
-Le stack doit être basé sur des images officielles et maintenues, pour l'image de pi-hole, c'est facile, ca sera l'image officielle, pour ce qui est unbound, il y a un peu plus de choix; j'ai choisis celle de [[ https://github.com/MatthewVance/unbound-docker|Matthew Vance]].+Le stack doit être basé sur des images officielles et maintenues, pour l'image de pi-hole, c'est facile, ça sera l'image officielle, pour ce qui est unbound, il y a un peu plus de choix; j'ai choisis celle de [[ https://github.com/MatthewVance/unbound-docker|Matthew Vance]].
  
 J'ai décidé de composer mon propre "stack" pour lier les deux containers tout en gardant une configuration un peu particulière: je veux que le serveur unbound soit sur un port différent : 5335 du serveur dns. J'ai décidé de composer mon propre "stack" pour lier les deux containers tout en gardant une configuration un peu particulière: je veux que le serveur unbound soit sur un port différent : 5335 du serveur dns.
Ligne 22: Ligne 24:
   * pi-hole web admin sur le port http#8053   * pi-hole web admin sur le port http#8053
   * recursive dns root query (no forwarder)   * recursive dns root query (no forwarder)
-  * recursive dns serveur interne sur le port udp#5335+  * recursive dns serveur interne sur le port udp#53
  
 ===== Architecture ===== ===== Architecture =====
Ligne 30: Ligne 32:
 cette architecture est décrite dans le fichier compose (en fin d'article), mais il est important de préciser quelques paramètres, notamment votre timezone pour les deux containers. cette architecture est décrite dans le fichier compose (en fin d'article), mais il est important de préciser quelques paramètres, notamment votre timezone pour les deux containers.
  
-=== unbound ===+==== unbound ====
 dans la partie service "unbound": dans la partie service "unbound":
  
Ligne 38: Ligne 40:
 </code> </code>
  
-=== pi-hole ===+==== pi-hole ====
 dans la partie service "pi-hole", il convient également de préciser le mot de passe de votre pi-hole, sans quoi pi-hole génèrera un mot de passe aléatoire qu'il faudra retrouver dans les logs. dans la partie service "pi-hole", il convient également de préciser le mot de passe de votre pi-hole, sans quoi pi-hole génèrera un mot de passe aléatoire qu'il faudra retrouver dans les logs.
 <code yaml> <code yaml>
Ligne 45: Ligne 47:
       - "WEBPASSWORD=[MONPASSWORD]"       - "WEBPASSWORD=[MONPASSWORD]"
 </code> </code>
- 
- 
  
 ===== unbound ===== ===== unbound =====
Ligne 63: Ligne 63:
 Je me suis inspiré de la documentation de pi-Hole concernant l'usage de [[https://docs.pi-hole.net/guides/dns/unbound/|unbound]] comme résolveur. Je me suis inspiré de la documentation de pi-Hole concernant l'usage de [[https://docs.pi-hole.net/guides/dns/unbound/|unbound]] comme résolveur.
  
-on va surtout modifier les paramètres d'écoute du serveur, en remplaçant le binding localhost ''127.0.0.1'' par tout les interfaces ''0.0.0.0'' et le port d'écoute ''53'' par notre port ''5335''+on va surtout modifier les paramètres d'écoute du serveur, en remplaçant le binding localhost ''127.0.0.1'' par tout les interfaces ''0.0.0.0'' et en vérifiant le port d'écoute ''53''
  
 <code yaml> <code yaml>
Ligne 69: Ligne 69:
     # and port.     # and port.
     interface: 0.0.0.0     interface: 0.0.0.0
-    port: 5335+    port: 53
     do-ip4: yes     do-ip4: yes
     do-udp: yes     do-udp: yes
Ligne 81: Ligne 81:
 <code yaml> <code yaml>
     healthcheck:     healthcheck:
-      test: drill @127.0.0.1 -p 5335 cloudflare.com || exit 1+      test: drill @127.0.0.1 -p 53 cloudflare.com || exit 1
       interval: 30s       interval: 30s
       timeout: 30s       timeout: 30s
Ligne 124: Ligne 124:
 ===== pi-hole ===== ===== pi-hole =====
  
 +Pour accéder à l'interface de Pi-Hole, il suffit de se connecter via un browser (en http) sur l'ip du host docker en précisant le port (8053) et l'uri /admin (par exemple: http://192.168.1.253:8053/admin), vous serez accueilli par une page de login:
  
 +{{ tutoriaux:docker-related:dns-pihole-login-page.png?200 }}
 +
 +il suffit de référencé votre mot de passe, et de se connecter, et de directement aller vers les "settings", "DNS":
 +
 +{{ tutoriaux:docker-related:dns-pihole-dns-settings.png?600 }}
 +
 +Par défaut, Pi-Hole ne réponds que aux clients situé sur le même réseau et sub-net (172.20.x.x), il transmet ensuite les requêtes aux serveurs de Google, ces paramètres ne conviennent pas, mais nous allons les changer:
 +
 +  * Désélectionner tout les serveurs par défaut (de google dans mon cas)
 +  * Définir notre "Upstream DNS Servers" en pointant vers notre containter unbound : ''172.20.0.200''; (si vous changer le port de ''unbound'' le format devient ''x.x.x.x#port'', ce format est très important).
 +  * Autoriser le serveur a répondre à tout nos client, pour ce faire, nous devons préciser l'option :''Permit all origins'', (''Respond only on interface eth0'' est sans doute suffisant, à vous de tester).
 +
 +Il nous suffit de configurer les clients pour utiliser ce serveur DNS Pi-Hole.
 ===== fichiers ===== ===== fichiers =====
  
-<code yaml name:stack-dns-pihole-unbound-custom.yaml>+<file yaml name:stack-dns-pihole-unbound-custom.yaml>
 networks: networks:
   infrastructure:   infrastructure:
Ligne 135: Ligne 149:
 services: services:
   unbound:   unbound:
- 
-    cap_drop: 
-      - "AUDIT_CONTROL" 
-      - "BLOCK_SUSPEND" 
-      - "DAC_READ_SEARCH" 
-      - "IPC_LOCK" 
-      - "IPC_OWNER" 
-      - "LEASE" 
-      - "LINUX_IMMUTABLE" 
-      - "MAC_ADMIN" 
-      - "MAC_OVERRIDE" 
-      - "NET_ADMIN" 
-      - "NET_BROADCAST" 
-      - "SYSLOG" 
-      - "SYS_ADMIN" 
-      - "SYS_BOOT" 
-      - "SYS_MODULE" 
-      - "SYS_NICE" 
-      - "SYS_PACCT" 
-      - "SYS_PTRACE" 
-      - "SYS_RAWIO" 
-      - "SYS_RESOURCE" 
-      - "SYS_TIME" 
-      - "SYS_TTY_CONFIG" 
-      - "WAKE_ALARM" 
  
     command:     command:
Ligne 165: Ligne 154:
  
     healthcheck:     healthcheck:
-      test: drill @127.0.0.1 -p 5335 cloudflare.com || exit 1+      test: drill @127.0.0.1 cloudflare.com || exit 1
       interval: 30s       interval: 30s
       timeout: 30s       timeout: 30s
Ligne 216: Ligne 205:
  
   dns-pihole:   dns-pihole:
- 
-    cap_drop: 
-      - "AUDIT_CONTROL" 
-      - "BLOCK_SUSPEND" 
-      - "DAC_READ_SEARCH" 
-      - "IPC_LOCK" 
-      - "IPC_OWNER" 
-      - "LEASE" 
-      - "LINUX_IMMUTABLE" 
-      - "MAC_ADMIN" 
-      - "MAC_OVERRIDE" 
-      - "NET_ADMIN" 
-      - "NET_BROADCAST" 
-      - "SYSLOG" 
-      - "SYS_ADMIN" 
-      - "SYS_BOOT" 
-      - "SYS_MODULE" 
-      - "SYS_NICE" 
-      - "SYS_PACCT" 
-      - "SYS_PTRACE" 
-      - "SYS_RAWIO" 
-      - "SYS_RESOURCE" 
-      - "SYS_TIME" 
-      - "SYS_TTY_CONFIG" 
-      - "WAKE_ALARM" 
  
     container_name: dns_pihole     container_name: dns_pihole
Ligne 302: Ligne 266:
   pihole_dnsmasq:   pihole_dnsmasq:
      
-</code> +</file>
- +
- +
- +
- +
- +
- +
tutoriaux/docker-related/stacks-pi-hole.1720265912.txt.gz · Dernière modification : 2024/07/06 13:38 de frater