networks: DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA external: true services: pihole-service: #LIBREPORTAL|SERVICE_TAG_1|pihole-service container_name: pihole-service image: pihole/pihole:latest #LIBREPORTAL|PIHOLE_VERSION_TAG|latest restart: unless-stopped hostname: pihole # GLUETUN_OFF_BEGIN ports: - "PORTS_DATA_1" #LIBREPORTAL|PORTS_TAG_1|PORTS_DATA_1 - "PORTS_DATA_2" #LIBREPORTAL|PORTS_TAG_2|PORTS_DATA_2 - "PORTS_DATA_3" #LIBREPORTAL|PORTS_TAG_3|PORTS_DATA_3 - "PORTS_DATA_4" #LIBREPORTAL|PORTS_TAG_4|PORTS_DATA_4 - "PORTS_DATA_5" #LIBREPORTAL|PORTS_TAG_5|PORTS_DATA_5 # GLUETUN_OFF_END labels: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA # TRAEFIK_PORT_1_BEGIN traefik.http.routers.pihole-service.entrypoints: web,websecure traefik.http.routers.pihole-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.pihole-service.tls: true traefik.http.routers.pihole-service.tls.certresolver: production traefik.http.services.pihole-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 traefik.http.routers.pihole-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 # TRAEFIK_PORT_1_END # Pi-hole v6 replaced almost every v5 variable with an FTLCONF_ equivalent # matching its new TOML config. The old names are accepted by the container # and then ignored, so a v5-style block looks fine and silently configures # nothing — including the admin password. environment: - TZ=TIMEZONE_DATA #LIBREPORTAL|TIMEZONE_TAG|TIMEZONE_DATA - FTLCONF_webserver_api_password=PIHOLE_ADMIN_PASSWORD_1_DATA #LIBREPORTAL|PIHOLE_ADMIN_PASSWORD_1_TAG|PIHOLE_ADMIN_PASSWORD_1_DATA - FTLCONF_webserver_interface_theme=PIHOLE_WEB_THEME_DATA #LIBREPORTAL|PIHOLE_WEB_THEME_TAG|PIHOLE_WEB_THEME_DATA # Upstream resolver. The old image bundled unbound and pointed here at # 127.0.0.1#5335; the official image bundles nothing, so this must be a # real resolver. Set it to the unbound app's address for full recursion # (no third party sees your queries) — see PIHOLE_UPSTREAM_DNS in the config. - FTLCONF_dns_upstreams=PIHOLE_UPSTREAM_DNS_DATA #LIBREPORTAL|PIHOLE_UPSTREAM_DNS_TAG|PIHOLE_UPSTREAM_DNS_DATA - FTLCONF_dns_dnssec=true # ALL, not single: in a bridge network the queries arrive from the docker # gateway rather than the container's own interface, and "single" drops them. - FTLCONF_dns_listeningMode=ALL # One combined value in v6: ,,, - FTLCONF_dns_revServers=true,PIHOLE_REV_SERVER_CIDR_DATA,PIHOLE_REV_SERVER_TARGET_DATA,local #LIBREPORTAL|PIHOLE_REV_SERVER_CIDR_TAG|PIHOLE_REV_SERVER_CIDR_DATA #LIBREPORTAL|PIHOLE_REV_SERVER_TARGET_TAG|PIHOLE_REV_SERVER_TARGET_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA volumes: - SOCKET_DATA #LIBREPORTAL|SOCKET_TAG|SOCKET_DATA # v6 keeps everything (config, databases, gravity) under /etc/pihole. The # old /etc/dnsmasq mount belonged to the bundled-unbound image and is no # longer read — v6 ignores /etc/dnsmasq.d unless explicitly re-enabled. - "./etc-pihole:/etc/pihole:rw" # GLUETUN_OFF_BEGIN networks: DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA ipv4_address: IP_DATA_1 #LIBREPORTAL|IP_TAG_1|IP_DATA_1 # GLUETUN_OFF_END # GLUETUN_ON_BEGIN # network_mode: "container:gluetun-service" # GLUETUN_ON_END # >>> libreportal-monitoring >>> #pihole-exporter: # container_name: pihole-exporter # image: ekofr/pihole-exporter:latest # restart: unless-stopped # environment: # - PIHOLE_HOSTNAME=pihole-service # - PIHOLE_PORT=PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 # - PIHOLE_PASSWORD=PIHOLE_ADMIN_PASSWORD_1_DATA #LIBREPORTAL|PIHOLE_ADMIN_PASSWORD_1_TAG|PIHOLE_ADMIN_PASSWORD_1_DATA # - INTERVAL=30s # - PORT=PORT_INTERNAL_DATA_6 #LIBREPORTAL|PORT_INTERNAL_TAG_6|PORT_INTERNAL_DATA_6 # networks: # DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # <<< libreportal-monitoring <<<