Parce qu'il y a toujours une solution...

Objectif de l'article - mettre en place Traefik en frontend et PiHole Fichier "traefik.toml". Pas de discours, du factuel.
J'ai décidé de mettre mon docker-compose dans le dossier "/srv/docker", avec un dossier "conf" pour y stocker les fichiers de configuration.

Vous pouvez être confronté à un problème de démarrage des conteneurs, notamment à cause du service "resolved" de votre Linux qui écoute déjà sur le port 53. Pour se faire, effectuez ces deux commandes :

systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service

Logiciels exploités :

  • Ubuntu 18.04 LTS
  • Docker CE = 19.03.8
  • Docker-compose = 1.25.4
  • Traefik = 2.2 "chevrotin"
  • PiHole = 4.4

Ci-dessous le fichier "traefik.toml" (/srv/docker/conf/traefik.toml)

[global]
  sendAnonymousUsage = false
  checkNewVersion = false

[api]
  insecure = true
  dashboard = true
  #debug = true

[log]
  level = "WARNING"

[providers]
  [providers.docker]
    endpoint = "unix:///var/run/docker.sock"
    exposedByDefault = false
    watch = true
    swarmMode = false

[entryPoints]
  [entryPoints.dns]
    address = ":53"

  [entryPoints.web]
    address = ":80"

  [entryPoints.websecure]
    address = ":443"

  [entryPoints.udpdns]
    address = ":53/udp"

Globalement, rien de particulier hormis l'ajout d'un "entryPoints" pour l'UDP (notez la différence avec un entryPoint "traditionnel").
Volontairement, l'API de Traefik est toujours active pour afficher le tableau de bord et contrôler le bon fonctionnement.


Pareil pour le fichier docker-compose, rien de particulier, hormis la configuration vis-à-vis de PiHole et les labels relatifs à Traefik.

Ci-dessous le fichier "docker-compose.yml" :

version: '3.7'
services:
  traefik:
    image: traefik:chevrotin
    restart: unless-stopped
    ports:
      - 53:53
      - 80:80
      - 443:443
      - 8080:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./conf/traefik.toml:/etc/traefik/traefik.toml:ro

  pihole:
    restart: unless-stopped
    image: pihole/pihole:latest
    environment:
      TZ: 'Europe/Paris'
      VIRTUAL_HOST: pihole.czs.local
      WEBPASSWORD: 'pouetpouet'
      #ServerIP: 192.168.48.6
    volumes:
      - datapihole:/etc/pihole/
      - datadnsmasqd:/etc/dnsmasq.d/
    cap_add:
      - NET_ADMIN
    dns:
      - 127.0.0.1
      - 1.1.1.1
    labels:
      traefik.enable: true
      traefik.http.routers.pihole-http.rule: Host(`pihole.czs.local`)
      traefik.http.routers.pihole-http.entrypoints: web
      traefik.http.services.pihole.loadbalancer.server.port: 80
      traefik.tcp.routers.pihole-dns.entrypoints: dns
      traefik.tcp.routers.pihole-dns.service: pihole
      traefik.udp.routers.pihole-udp.entrypoints: udpdns
      traefik.udp.routers.pihole-udp.service: pihole
      traefik.udp.services.pihole.loadbalancer.server.port: 53

PiHole ne nécessite pas de grosse configuration : quelques lignes d'environnement, les labels Traefik et le tour est joué.
N'oubliez pas de changer "pihole.czs.local" dans le label Traefik-HTTP-Router-Host, les deux variables d'environnement de PiHole (le mot de passe "WEBPASSWORD" et le "VIRTUAL_HOST").

Welcome @ PiHole !

Vous pouvez retrouver les scripts sur GitHub à cette adresse

Mettmett/docker-compose
Some examples used on ComputerZ Solutions... Contribute to Mettmett/docker-compose development by creating an account on GitHub.