| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- services:
- {{ service_name | default('pihole') }}:
- container_name: {{ container_name | default('pihole') }}
- image: docker.io/pihole/pihole:2025.08.0
- {% if ports_enabled %}
- ports:
- - "{{ ports_dns_tcp | default(53) }}:53/tcp"
- - "{{ ports_dns_udp | default(53) }}:53/udp"
- - "{{ ports_dhcp | default(67) }}:67/udp"
- - "{{ ports_http | default(8081) }}:80/tcp"
- - "{{ ports_https | default(8443) }}:443/tcp"
- {% endif %}
- environment:
- - TZ={{ container_timezone | default('UTC') }}
- {% if pihole_webpassword -%}
- - FTLCONF_webserver_api_password={{ pihole_webpassword }}
- {% endif %}
- - FTLCONF_dns_upstreams={{ pihole_dns_upstreams | default('8.8.8.8;8.8.4.4') }}
- volumes:
- - config_dnsmasq:/etc/dnsmasq.d
- - config_pihole:/etc/pihole
- {% if network_enabled %}
- networks:
- - {{ network_name | default('bridge') }}
- {% endif %}
- {% if traefik_enabled %}
- labels:
- - traefik.enable=true
- - traefik.http.services.{{ service_name | default('pihole') }}.loadBalancer.server.port=80
- - traefik.http.routers.{{ service_name | default('pihole') }}-http.service={{ service_name | default('pihole') }}
- - traefik.http.routers.{{ service_name | default('pihole') }}-http.rule=Host(`{{ traefik_host }}`)
- - traefik.http.routers.{{ service_name | default('pihole') }}-http.entrypoints={{ traefik_entrypoint | default('web') }}
- {% if traefik_tls_enabled %}
- - traefik.http.routers.{{ service_name | default('pihole') }}-https.service={{ service_name | default('pihole') }}
- - traefik.http.routers.{{ service_name | default('pihole') }}-https.rule=Host(`{{ traefik_host }}`)
- - traefik.http.routers.{{ service_name | default('pihole') }}-https.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
- - traefik.http.routers.{{ service_name | default('pihole') }}-https.tls=true
- - traefik.http.routers.{{ service_name | default('pihole') }}-https.tls.certresolver={{ traefik_tls_certresolver }}
- {% endif %}
- {% endif %}
- restart: {{ restart_policy | default('unless-stopped') }}
- volumes:
- config_dnsmasq:
- driver: local
- config_pihole:
- driver: local
- {% if network_enabled %}
- networks:
- {{ network_name | default('bridge') }}:
- {% if network_external %}
- external: true
- {% endif %}
- {% endif %}
|