##==============================================================================================
##                                                                                            ##
##                     Fichier docker-compose.yml pour Pi-Hole en macvlan                     ##
##                                                                                            ##
##==============================================================================================

##============================================================================================##
##                                                                                            ##
## Attention, il faut créer le réseau macvlan à l'aide du script : macvlan-network.sh         ##
## Ce dernier va créer un réseau macvlan ayant comme IP unique 192.168.2.211                  ##
## Cette IP doit être dans la plage d'IP mavclan définie dans le script de création du réseau.##
## Le conteneur sera donc vu comme une machine sur le réseau LAN, mais ne pourra pas être     ##
## joint par le NAS lui-même.                                                                 ##
## Pour celà, il faut utiliser le second script : boot-bridgemacvlan-interface.sh             ##
## Ce dernier va créer une IP-interface virtuelle qui pourra être accessible par le NAS.      ##
## Cette interface ne persiste pas au démarrage, il faudra mettre le script en tâche          ##
## planifiée avec le planificateur de tâches dans DSM.                                        ##
##                                                                                            ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/       ##
##                                                                                            ##
##                                         Attention !                                        ##
##                                                                                            ##
## Ces deux scripts ne sont à utiliser qu'une seule fois, quelque soit le nombre de           ##
## conteneurs qui en bénéficieront.                                                           ##
## Par exemple, si vous utilisez 2 conteneurs en macvlan, une fois le réseau macvlan créé     ##
## pour le 1er, il est inutile (et impossible) de le recréer.                                 ##
## Le script boot-bridgemacvlan-interface.sh ne doit être lancé qu'une seule fois, et à       ##
## chaque reboot. L'IP virtuelle est unique, il ne faut pas en recréer une seconde.           ##
##                                                                                            ##
##==============================================================================================


---
version: "2.4"
services:
  pihole_macvlan:
    image: pihole/pihole    # https://hub.docker.com/r/pihole/pihole
                            # https://github.com/pi-hole/docker-pi-hole
                            # https://github.com/pi-hole/docker-pi-hole/#environment-variables
    container_name: pihole_macvlan
    
    hostname: pi-hole-BLABLA  # C'est le nom que vous verrez en haut à droite dans l'UI.

    environment:
      - ADMIN_EMAIL=email@ndd.tld
      - TZ=Europe/Paris
      # Les deux lignes suivantes sont dépréciées, et ne doivent plus être utilisées. Voir ici : https://github.com/pi-hole/docker-pi-hole/#deprecated-environment-variables
      #- DNS1=80.67.169.12  # IP des serveurs DNS FdN
      #- DNS2=9.9.9.9       # IP Quad9
      # Les deux lignes précédentes sont remplacées par la suivante
      - PIHOLE_DNS_=80.67.169.12;9.9.9.9
      - DNSSEC=false              # Passer à true si les serveurs DNS gèrent le DNSSEC.
      - DNS_BOGUS_PRIV=true
      - DNS_FQDN_REQUIRED=true
      - DNSMASQ_LISTENING=local
      - INTERFACE=ovs_eth0            # Remplacer par votre interface réseau
      - REV_SERVER=true                   # Permet de recuperer les noms d hote des peripheriques du reseau
      - REV_SERVER_TARGET=192.168.2.1     # Voir paragraphe CONDITIONAL FORWARDING
      - REV_SERVER_CIDR=192.168.2.0/24    # Votre sous-reseau local
      #- REV_SERVER_DOMAIN=ndd.tld         # Domaine local (Je n'utilise pas, donc je commente)
      - TEMPERATUREUNIT=C
      - WEBUIBOXEDLAYOUT=boxed
      - ServerIP=192.168.2.211            # IP du conteneur Pi-hole
      - VIRTUAL_HOST=pi.hole              # Si on souhaite acceder a Pi-hole par un nom de domaine (proxy inverse par exemple)
      - WEBPASSWORD=xxxxxxxxxxxxxxxx
    
    volumes:
      - /volume1/docker/pihole_macvlan/etc-pihole:/etc/pihole/
      - /volume1/docker/pihole_macvlan/etc-dnsmasq.d:/etc/dnsmasq.d/
    
    # La section suivante ne me semble pas utile, compte tenu du fonctionnement du conteneur
    # Je la laisse mais en commentée.
    #dns:
    #  - 127.0.0.1
    #  - 80.67.169.12
    
    networks:
      macvlan-network:
        ipv4_address: 192.168.2.211     # Mettre ici l'IP macvlan dans la plage définie dans les scripts

    restart: unless-stopped

networks:
  macvlan-network:        # Ce réseau devra bien entendu être créé avant avec le script
    external: true
