Files
truenas-stacks/pihole/docker-compose.yaml
2026-05-15 15:37:35 +00:00

83 lines
2.5 KiB
YAML

services:
unbound:
image: mvance/unbound:latest
container_name: unbound-pihole-primary
network_mode: host
restart: unless-stopped
environment:
TZ: ${TZ}
UNBOUND_PORT: "5335"
volumes:
- ${APPDATA_UNBOUND_ROOT}:/opt/unbound/etc/unbound/
healthcheck:
test: ["CMD-SHELL", "hex=$$(printf '%04X' \"$$UNBOUND_PORT\"); grep -qi \":$$hex\" /proc/net/tcp /proc/net/tcp6 || exit 1"]
interval: 30s
timeout: 10s
retries: 6
start_period: 20s
pihole:
image: pihole/pihole:latest
container_name: pihole-primary
network_mode: host
restart: unless-stopped
depends_on:
unbound:
condition: service_healthy
environment:
TZ: ${TZ}
PIHOLE_WEB_PORT: ${PD_PIHOLE_WEB_PORT}
FTLCONF_webserver_api_password: ${PIHOLE_PASSWORD}
FTLCONF_dns_listeningMode: "LOCAL"
FTLCONF_dns_upstreams: "127.0.0.1#5335"
FTLCONF_webserver_port: ${PD_PIHOLE_WEB_PORT}
FTLCONF_ntp_ipv4_active: "false"
FTLCONF_ntp_ipv6_active: "false"
FTLCONF_ntp_sync_active: "false"
volumes:
- ${APPDATA_PIHOLE_ROOT}/etc-pihole:/etc/pihole
- ${APPDATA_PIHOLE_ROOT}/etc-dnsmasq.d:/etc/dnsmasq.d
cap_add:
- SYS_NICE
healthcheck:
test: ["CMD-SHELL", "hex=$$(printf '%04X' \"$$PIHOLE_WEB_PORT\"); grep -qi \":$$hex\" /proc/net/tcp /proc/net/tcp6 || exit 1"]
interval: 30s
timeout: 10s
retries: 6
start_period: 40s
keepalived:
image: osixia/keepalived:2.0.20
container_name: keepalived-pihole-primary
network_mode: host
restart: unless-stopped
depends_on:
pihole:
condition: service_healthy
cap_add:
- NET_ADMIN
- NET_BROADCAST
- NET_RAW
volumes:
- ./keepalived.conf:/usr/local/etc/keepalived/keepalived.conf:ro
nebula-sync:
image: lovelaze/nebula-sync:latest
container_name: nebula-sync
network_mode: host
restart: unless-stopped
depends_on:
pihole:
condition: service_healthy
environment:
PRIMARY: ${NEBULA_SYNC_PRIMARY}
REPLICAS: ${NEBULA_SYNC_REPLICAS}
FULL_SYNC: ${NEBULA_SYNC_FULL_SYNC}
RUN_GRAVITY: ${NEBULA_SYNC_RUN_GRAVITY}
CRON: ${NEBULA_SYNC_CRON}
SYNC_GRAVITY_GROUP: ${NEBULA_SYNC_GRAVITY_GROUP}
SYNC_GRAVITY_AD_LIST: ${NEBULA_SYNC_GRAVITY_AD_LIST}
SYNC_GRAVITY_AD_LIST_BY_GROUP: ${NEBULA_SYNC_GRAVITY_AD_LIST_BY_GROUP}
SYNC_GRAVITY_DOMAIN_LIST: ${NEBULA_SYNC_GRAVITY_DOMAIN_LIST}
SYNC_GRAVITY_DOMAIN_LIST_BY_GROUP: ${NEBULA_SYNC_GRAVITY_DOMAIN_LIST_BY_GROUP}