Inhalt
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
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.
0 Kommentare