Tuto: Installer Pi-hole et Unbound avec Docker ; gérer les publicités et les requêtes DNS de manière efficace.

l’Almanet doLys Gnu/Linux – Open Source – Entreprises Forums L’almanet doLys Open Source Tuto: Installer Pi-hole et Unbound avec Docker ; gérer les publicités et les requêtes DNS de manière efficace.

  • This topic is empty.
Affichage de 1 message (sur 1 au total)
  • Auteur
    Articles
  • #12633
    nam1962nam1962
    Keymaster

      Introduction

      Je vais vous montrer ici comment mettre en place Pi-hole, un serveur DNS qui bloque les publicités, en utilisant Docker, tout en configurant Unbound comme résolveur DNS local. Cette configuration vous permettra de naviguer sur Internet sans être dérangé par les publicités indésirables.

      Mais ce n’est pas tout ! En contrôlant votre propre infrastructure DNS, vous devenez souverain de vos données. Vous évitez ainsi plusieurs types de menaces courantes :

      – Les indiscrétions : Vos requêtes DNS sont souvent interceptées et analysées par des tiers. Avec votre propre serveur, vous gardez le contrôle de ces informations sensibles.
      – Les DNS menteurs : les FAI sont sous contrôle des administrations et censurent, redirigent, surveillent les requêtes. Votre serveur DNS personnel préserve l’intégrité de vos connexions.
      – Les scripts indiscrets : De nombreux sites web chargent des scripts aux actions diverses et jamais utiles pour vous. Pi-hole peut bloquer ces scripts, renforçant ainsi votre confidentialité en ligne.

      Cette configuration donne donc un triple avantage : elle bloque les publicités, améliore votre sécurité et renforce votre souveraineté numérique.

      Ce tutoriel vous permettra aussi de découvrir Docker et les conteneurs, une technologie de virtualisation légère qui simplifie grandement le déploiement d’applications et… le jour où vous vous amusez à avoir un serveur autohébergé, vous permettra de proposer le service à tous vos appareils connectés.

      Prérequis

      Avant de commencer, assurez-vous d’avoir :

      – Un système Manjaro ou Debian à jour.
      – Docker et Docker Compose installés.
      – Accès à un terminal avec des privilèges sudo.

      Étape 1 : Installer Docker et Docker Compose

      Si vous n’avez pas encore installé Docker et Docker Compose, voici comment procéder :

      Pour Manjaro

      Ouvrez votre terminal et exécutez les commandes suivantes :

      
      sudo pacman -S docker docker-compose
      sudo systemctl start docker
      sudo systemctl enable docker
      

      Pour Debian

      Pour Debian, utilisez ces commandes :

      
      sudo apt update
      sudo apt install docker-ce docker-compose
      sudo systemctl start docker
      sudo systemctl enable docker
      

      Étape 2 : Créer la structure de répertoires

      Je vais créer un répertoire pour mon projet et y ajouter les fichiers nécessaires :

      
      mkdir -p ~/docker/pihole
      cd ~/docker/pihole
      

      Étape 3 : Créer le fichier docker-compose.yml

      Dans le répertoire ~/docker/pihole, je crée un fichier docker-compose.yml :

      
      services:
      pihole:
      container_name: pihole
      image: pihole/pihole:latest
      network_mode: host
      env_file:
      -.env
      volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
      - './adlists.list:/etc/pihole/adlists.list'
      cap_add:
      - NET_ADMIN
      restart: unless-stopped
      deploy:
      resources:
      limits:
      cpus: '0.5'
      memory: 512M
      reservations:
      cpus: '0.2'
      memory: 256M
      

      Étape 4 : Créer le fichier .env

      Je vais maintenant créer un fichier .env pour stocker mes variables d’environnement (remplacez truc123 par votre mot de passe à vous ! ):

      
      WEBPASSWORD=truc123
      TZ=Europe/Paris
      PIHOLE_DNS_=127.0.0.1#5335
      

      Étape 5 : Installer Unbound

      Unbound n’est pas en Docker, il vient des paquets officiels. Pour l’installer, j’exécute la commande suivante :

      Pour Manjaro

      
      sudo pacman -S unbound
      

      Pour Debian

      
      sudo apt install unbound
      

      Étape 6 : Configurer Unbound

      Je vais maintenant configurer Unbound. J’ouvre le fichier de configuration d’Unbound :

      
      sudo nano /etc/unbound/unbound.conf
      

      J’ajoute ou modifie les lignes suivantes pour configurer Unbound :

      
      
      server:
      # Network settings
      interface: 0.0.0.0
      interface: ::0
      port: 5335
      do-ip4: yes
      do-ip6: yes
      do-udp: yes
      do-tcp: yes
      
      # Access control
      access-control: 127.0.0.0/8 allow
      access-control: ::1/128 allow
      access-control: 172.24.0.0/16 allow # Docker network
      access-control: 192.168.0.0/16 allow # Common home network range
      access-control: 10.0.0.0/8 allow # For potential VPN or other
      
      # Basic settings
      verbosity: 1
      num-threads: 2
      outgoing-range: 8192
      so-rcvbuf: 4m
      so-sndbuf: 4m
      edns-buffer-size: 1472
      msg-cache-size: 200m
      rrset-cache-size: 400m
      cache-min-ttl: 30
      cache-max-ttl: 86400
      cache-max-negative-ttl: 5
      do-not-query-localhost: no
      
      # Privacy and security
      hide-identity: yes
      hide-version: yes
      harden-glue: yes
      harden-dnssec-stripped: yes
      harden-algo-downgrade: yes
      harden-short-bufsize: yes
      use-caps-for-id: yes
      qname-minimisation: yes
      qname-minimisation-strict: yes
      minimal-responses: yes
      
      # DNSSEC
      root-hints: root.hints
      trust-anchor-file: trusted-key.key
      auto-trust-anchor-file: "/var/lib/unbound/root.key" # Correct path here
      
      # TLS settings
      tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
      tls-ciphersuites: "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
      tls-ciphers: "HIGH:!aNULL:!MD5:!3DES"
      
      # Performance optimizations
      prefetch: yes
      prefetch-key: yes
      serve-expired: yes
      aggressive-nsec: yes
      ratelimit: 1000
      
      # Module configuration
      module-config: "iterator"
      
      # Pi-hole forward zone
      forward-zone:
      name: "pi.hole"
      forward-addr: 127.0.0.1@53
      
      # Main forward zone with HTTPS upstream
      forward-zone:
      name: "."
      forward-tls-upstream: yes
      # DNS non censuré, évitant la surveillance des 14 yeux
      forward-addr: 198.180.150.12#rgnet-iad.anycast.censurfridns.dk # RGnet OU, Estonia
      forward-addr: 89.233.43.71#unicast.censurfridns.dk # UncensoredDNS, Denmark
      
      # OpenNIC, un projet qui offre des serveurs DNS alternatifs
      forward-addr: 185.121.177.177#ns1.any.dns.opennic.glue # OpenNIC, hors 14 yeux
      forward-addr: 161.97.219.84#ns2.any.dns.opennic.glue # OpenNIC, hors 14 yeux
      
      # DNS alternatif basé en Islande, hors 14 yeux et respectueux de la vie privée
      forward-addr: 89.187.100.11#dns.isnic.is # ISNIC, Iceland
      
      # DNS alternatif basé en Suisse, hors 14 yeux et respectueux de la vie privée
      forward-addr: 84.200.69.80#dns.watch # DNS.WATCH, Switzerland
      forward-addr: 84.200.70.40#dns.watch # DNS.WATCH, Switzerland
      
      # BlahDNS, pour une option supplémentaire axée sur la confidentialité, basée au Japon
      forward-addr: 104.238.191.243#dns.blahdns.com # BlahDNS, Japan
      forward-addr: 2001:19f0:7001:1b5b::1#dns.blahdns.com # BlahDNS, Japan (IPv6)
      

      Étape 7 : Démarrer le conteneur Pi-hole

      Maintenant que tout est configuré, je vais démarrer le conteneur Pi-hole. Je m’assure d’être dans le répertoire de Pi-hole, puis j’exécute :

      
      cd ~/docker/pihole
      sudo docker-compose up -d
      

      La commande

      docker-compose up -d

      va :
      1. Construire l’image si nécessaire
      2. Créer et démarrer le conteneur
      3. Le faire tourner en arrière-plan (-d signifie detached mode)

      Bien que nous ayons utilisé docker-compose, cela ne lance qu’un seul conteneur dans notre cas, car notre fichier docker-compose.yml définit uniquement un service nommé « pihole ».

      Il est important de noter que :
      – Nous utilisons docker-compose même pour un seul conteneur car cela facilite la gestion future si nous devions ajouter d’autres services.
      docker-compos` gère automatiquement les volumes, les ports, et autres paramètres définis dans le fichier docker-compose.yml.
      – La consommation de ressources (RAM et CPU) est extrêmement faible, ce qui rend cette configuration idéale pour les systèmes modestes ou les ordinateurs portables.

      Étape 8 : Vérification de l’installation

      Pour vérifier que tout fonctionne correctement, j’ouvre mon navigateur et je vais à l’adresse

      http://localhost:80

      . Je devrais voir l’interface de Pi-hole. Je me connecte avec le mot de passe que j’ai défini dans le fichier .env.

      Étape 9 : Configuration de votre routeur

      Pour que tous mes appareils utilisent Pi-hole pour les requêtes DNS, je configure mon routeur pour utiliser l’adresse IP de mon serveur comme serveur DNS principal.

      Conclusion

      Voilà, j’ai maintenant un système Pi-hole fonctionnant avec Unbound, prêt à bloquer les publicités et à gérer mes requêtes DNS de manière efficace. N’hésitez pas à explorer les différentes options de configuration pour adapter le système à vos besoins. Si vous avez des questions ou des problèmes, consultez la documentation officielle de Pi-hole et Unbound pour des conseils supplémentaires.

      Ce tutoriel vous a permis de découvrir Docker et les conteneurs, une technologie puissante pour déployer facilement des applications. J’espère que vous avez apprécié l’expérience et que vous pourrez réutiliser ces compétences pour d’autres projets.

      Commandes utiles

      – Pour arrêter les conteneurs :

      
      sudo docker-compose down
      

      – Pour voir les logs de Pi-hole :

      
      sudo docker logs pihole
      

      – Pour mettre à jour les images :

      
      sudo docker-compose pull
      

      J’espère que ce tutoriel vous a été utile. N’hésitez pas à partager vos expériences et vos questions dans les commentaires!

      Notes supplémentaires :

      – Documentation officielle de Pi-hole : https://docs.pi-hole.net/
      – Documentation officielle d’Unbound : https://www.nlnetlabs.nl/documentation/unbound/

      Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc

    Affichage de 1 message (sur 1 au total)
    • Vous devez être connecté pour répondre à ce sujet.