version: "3" networks: private_network: ipam: driver: default config: - subnet: 10.2.0.0/24 services: unbound: image: "mvance/unbound:latest" container_name: unbound restart: unless-stopped hostname: "unbound" volumes: - "./unbound:/opt/unbound/etc/unbound/" networks: private_network: ipv4_address: 10.2.0.200 wireguard: depends_on: [unbound, pihole] image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=America/Los_Angeles # Change to your timezone - SERVERURL=198.74.49.4 - SERVERPORT=51820 #- SERVERURL=my.ddns.net #optional - For use with DDNS (Uncomment to use) - PEERS=1 # How many peers to generate for you (clients) - PEERDNS=10.2.0.100 # Set it to point to pihole - INTERNAL_SUBNET=10.6.0.0 volumes: - ./wireguard:/config - /lib/modules:/lib/modules ports: - "51820:51820/udp" dns: - 10.2.0.100 # Points to pihole - 10.2.0.200 # Points to unbound sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped networks: private_network: ipv4_address: 10.2.0.3 pihole: depends_on: [unbound] container_name: pihole image: pihole/pihole:latest restart: unless-stopped hostname: pihole dns: - 127.0.0.1 - 10.2.0.200 # Points to unbound environment: TZ: "America/Los_Angeles" WEBPASSWORD: "" # Blank password - Can be whatever you want. ServerIP: 10.2.0.100 # Internal IP of pihole DNS1: 10.2.0.200 # Unbound IP DNS2: 10.2.0.200 # If we don't specify two, it will auto pick google. # Volumes store your data between container upgrades volumes: - "./etc-pihole/:/etc/pihole/" - "./etc-dnsmasq.d/:/etc/dnsmasq.d/" # Recommended but not required (DHCP needs NET_ADMIN) # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities cap_add: - NET_ADMIN networks: private_network: ipv4_address: 10.2.0.100