Adguard Home is a Pi-Hole like, free and open source, powerful network-wide ads & trackers blocking DNS server.
I have 2 instances running, on two different host, and sync them with https://github.com/bakito/adguardhome-sync.
services: adguardhome: container_name: adguard_app image: adguard/adguardhome restart: unless-stopped volumes: - /data/apps/adguard/workdir:/opt/adguardhome/work - /data/apps/adguard/confdir:/opt/adguardhome/conf ports: - 53:53/tcp - 53:53/udp - 3245:80 networks: - homelab labels: - traefik.enable=true - traefik.http.routers.adguard.rule=Host(`adguard.zrx.sh`) - traefik.http.services.adguard.loadbalancer.server.port=3245 - traefik.http.routers.adguard.middlewares=homelab-whitelist@file - traefik.http.routers.adguard.tls=true - traefik.http.routers.adguard.tls.certresolver=production - traefik.http.routers.adguard.tls.domains[0].main=zrx.sh - traefik.http.routers.adguard.tls.domains[0].sans=*.zrx.sh
adguardhome-sync: image: ghcr.io/bakito/adguardhome-sync container_name: adguardhome-sync command: run environment: LOG_LEVEL: 'info' ORIGIN_URL: 'https://adguard.zrx.sh' # ORIGIN_WEB_URL: 'https://some-other.url' ORIGIN_USERNAME: 'raphaelgc' ORIGIN_PASSWORD: ${ORIGIN_PASSWORD} REPLICA1_URL: 'https://adguard-jupiter.zrx.sh' REPLICA1_USERNAME: 'raphaelgc' REPLICA1_PASSWORD: ${ORIGIN_PASSWORD} CRON: '0 */12 * * *' # run every 2 hours RUN_ON_START: 'true' API_PORT: 8080 ports: - 8432:8080 restart: unless-stoppednetworks: homelab: external: true