summaryrefslogtreecommitdiff
path: root/playbooks/roles/pihole/templates/stacks/docker-compose.yml
blob: be3150e7c94173eb53ea10c2a66ce98f129654dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
version: '3.2'

services:
  pihole:
    image: pihole/pihole:latest
    volumes:
      - {{ pihole_base }}/volumes/pihole:/etc/pihole
      - {{ pihole_base }}/volumes/dnsmasq:/etc/dnsmasq.d
    environment:
      - TZ={{ timezone }}
      - FTLCONF_webserver_api_password={{ pihole_webpwd }}
      - FTLCONF_dns_upstreams={{ upstream_dns_servers | join(';') }}
    networks:
      - proxy
    deploy:
      mode: replicated
      replicas: 1
      labels:
        - traefik.enable=true
        - traefik.swarm.network=proxy
        - traefik.http.routers.piholeweb.tls=true
        - traefik.http.routers.piholeweb.tls.certResolver=letsencrypt
        - traefik.http.routers.piholeweb.rule=Host(`pihole.{{ traefik_domain }}`)
        - traefik.http.routers.piholeweb.entrypoints=websecure
        - traefik.http.services.piholeweb.loadbalancer.server.port=80
        # 53/udp
        - traefik.udp.routers.pihole-dns-udp.entrypoints=dns_udp
        - traefik.udp.routers.pihole-dns-udp.service=pihole-dns-udp
        - traefik.udp.services.pihole-dns-udp.loadbalancer.server.port=53
        # 53/tcp
        - traefik.tcp.routers.pihole-dns-tcp.rule=HostSNI(`*`)
        - traefik.tcp.routers.pihole-dns-tcp.entrypoints=dns_tcp
        - traefik.tcp.routers.pihole-dns-tcp.service=pihole-dns-tcp
        - traefik.tcp.services.pihole-dns-tcp.loadbalancer.server.port=53

networks:
  proxy:
    external: true