AdGuard Home

AdGuard Home ist ein selbst gehosteter DNS-Server, der ähnlich wie PiHole Werbung und Malware-Domains blockieren kann. Jedoch hat AdGuard einen entscheidenden Vorteil: AdGuard unterstützt nativ DNS-over-TLS, DNS-over-HTTPS und experimentell sogar DNS-over-QUIC. Diese Methoden der Traffic-Verschlüsselung ist auch mit PiHole möglich, jedoch wäre zusätzliche Software vonnöten.

Deshalb möchte ich euch heute zeigen, wie ihr AdGuard Home mit Docker und Traefik als reverse-proxy einrichten, sowie mittels DNS-over-TLS nutzen könnt.

Vorbereitungen

In dieser Anleitung wird davon ausgegangen, dass Docker sowie Traefik vorinstalliert sind.

AdGuard Home kann in deinem eigenem Netzwerk, aber auch auf einem remote Server laufen. Dieses Tutorial bezieht sich auf die Installation auf einem Server außerhalb unseres Heimnetzwerkes.

Da mein Router eine FritzBox ist, werde ich mich auf DNS-over-TLS beschränken, da die Fritzbox kein DNS-over-HTTPS unterstützt. Beide Protokolle helfen jedoch unsere DNS-Anfragen zwischen unserem Computer und dem externen Server zu verschlüsseln. Auf diese Weise kann euer ISP oder jemand im Netzwerk nicht herausfinden, welche DNS-Anfragen von euerem Gerät kommen.

Ok let’s go…

Als erstes werden wir ein paar Dateien und Ordner anlegen.
Ich lege meine Docker spezifischen sachen gerne unter etc/docker/container ab.

mkdir -p /etc/docker/container/adguard/conf
mkdir -p /etc/docker/container/adguard/work

AdGuard Home docker-compose.yml

Als nächstes erstellen wir unsere docker-compose.yml für AdGuard mit unserem Editor of choice.
Ich nutze neovim.

nvim /etc/docker/container/adguard/docker-compose.yml

version: '3'

services:
  adguard:
    image: adguard/adguardhome:latest
    container_name: adguard
    restart: unless-stopped
    networks:
      - web
    ports:
      - "53:53/tcp"
      - "53:53/udp"
    volumes:
      - /etc/docker/containers/adguard/work:/opt/adguardhome/work
      - /etc/docker/containers/adguard/conf:/opt/adguardhome/conf
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.adguard.entrypoints=websecure"
      - "traefik.http.routers.adguard.rule=Host(`${ADGUARD_URL}`)" # change with your own domain/sub domain or use environment variables
      - "traefik.http.routers.adguard.tls=true"
      - "traefik.http.routers.adguard.tls.certresolver=default"
      - "traefik.http.services.adguard.loadbalancer.server.port=3000" # change to 80 after initial setup
      - "traefik.docker.network=web"
      
      # DoT
      - "traefik.tcp.routers.adguard-dot.rule=HostSNI(`${HOSTNAME}`)" # change with your own domain/sub domain or use environment variables
      - "traefik.tcp.routers.adguard-dot.entrypoints=dnsovertls"
      - "traefik.tcp.routers.adguard-dot.tls=true"
      - "traefik.tcp.routers.adguard-dot.service=adguard"
      - "traefik.tcp.services.adguard.loadbalancer.server.port=53"
      
      - "com.centurylinklabs.watchtower.enable=true"
      
networks:
  web:
    external: true 

Erst muss Traefiks Proxy auf Port 3000 lauschen. Nach der Ersteinrichtung von AdGuard Home müssen wir den Port auf 80 ändern.

Starten des AdGuard Home Container

cd /etc/docker/container/adguard
docker compose up -d

Nun können wir unsere Seite über https://subdomain.yourdomain.tld aufrufen um die Ersteinrichtung abzuschließen. Wir folgen einfach den Schritten und erstellen einen Admin-Benutzer für später.

Wenn wir fertig sind, stoppen wir den Container noch einmal und kümmern uns um die finalen Anpassungen.

docker compose down

AdGuard Home DNS-over-TLS Einstellungen

AdGuard Home kümmert sich standardmäßig selber um die verschlüsselung von HTTP-Verbindungen. Da wir jedoch Traefik nutzen und uns damit die manuelle Erneuerung des SSL-Zertifikats ersparen (Traefik erledigt das für uns komplett automatisch), müssen wir nun ein paar Anpassungen an den Einstellungen vornehmen.

nvim /etc/docker/container/adguard/conf/AdGuardHome.yaml

Im Abschnitt „tls:“ müssen wir nun die TLS-Verbindungen aktivieren und unsere Domain in die Config schreiben, mit der wir AdGuard Home nutzen wollen. Wir müssen auch allow_unencrypted_doh: false auf true setzen.

tls:
  enabled: true
  server_name: yourdomain.tld # change here
  force_https: false
  port_https: 443
  port_dns_over_tls: 853
  port_dns_over_quic: 853
  port_dnscrypt: 0
  dnscrypt_config_file: ""
  allow_unencrypted_doh: true # this setting is important, since we are using a reverse proxy to access DoH
  certificate_chain: ""
  private_key: ""
  certificate_path: ""
  private_key_path: ""
  strict_sni_check: false
  

Speicher und schließe nun die Konfigurationsdatei. Wir editieren nun ein letztes Mal unsere docker-compose.yml.

Da die Ersteinrichtung bereits abgeschlossen ist, müssen wir nun den Port von 3000 auf 80 ändern, über den sich Traefik mit unserem Container verbinden soll.

# change this line
      - "traefik.http.services.adguard.loadbalancer.server.port=3000"
      
# to this
      - "traefik.http.services.adguard.loadbalancer.server.port=80"

Jetzt sind wir fertig und können die Datei speichern und unseren Container ein letztes Mal starten.

cd /etc/docker/container/adguard
docker compose up -d

Verwendung von AdGuard Home via DNS-over-TLS

Wenn wir nun unsere Domain in einem Browser eingeben können wir uns auf dem frontend von AdGuard Home anmelden. Im Menüpunkt „Einrichtungsassistent“ findet man kurzanleitungen, wie man AdGuard Home als sein DNS-Resolver nutzen kann.

Kategorien: How-To

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This website uses cookies. By continuing to use this site, you accept our use of cookies.