services: pihole: container_name: pihole # Root cause of the 2026-08 gravity.db corruption: default /dev/shm (64M) # was too small for FTL's shared-memory metrics. 1024M has been stable. shm_size: '1024M' image: pihole/pihole:latest hostname: pihole entrypoint: ["/usr/local/bin/gravity-validate.sh"] ports: - "53:53/tcp" - "53:53/udp" - "10002:80/tcp" - "10003:443/tcp" environment: TZ: 'America/Chicago' FTLCONF_webserver_api_password: '${PIHOLE_WEB_PASSWORD}' FTLCONF_dns_listeningMode: 'all' FTLCONF_dns_upstreams: '["8.8.8.8"]' volumes: - './etc-pihole:/etc/pihole' - './etc-dnsmasq.d:/etc/dnsmasq.d' - './gravity-validate.sh:/usr/local/bin/gravity-validate.sh:ro' cap_add: - SYS_NICE restart: always healthcheck: test: ["CMD-SHELL", "dig +short +norecurse @127.0.0.1 pi.hole >/dev/null 2>&1 && test -s /etc/pihole/gravity.db || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 60s labels: autoheal: "true" networks: - default - dnsnet autoheal: container_name: autoheal image: willfarrell/autoheal:latest environment: AUTOHEAL_CONTAINER_LABEL: autoheal AUTOHEAL_INTERVAL: 30 AUTOHEAL_START_PERIOD: 60 volumes: - '/var/run/docker.sock:/var/run/docker.sock:ro' restart: always networks: dnsnet: external: true