From f740b329615f2aa09c0a978ecae01b695d57f291 Mon Sep 17 00:00:00 2001 From: arnol Date: Wed, 22 Jul 2026 21:18:40 +0200 Subject: [PATCH] Move 02-ct100-adguard.md to wiki --- 02-ct100-adguard.md | 154 -------------------------------------------- 1 file changed, 154 deletions(-) delete mode 100644 02-ct100-adguard.md diff --git a/02-ct100-adguard.md b/02-ct100-adguard.md deleted file mode 100644 index 25c6600..0000000 --- a/02-ct100-adguard.md +++ /dev/null @@ -1,154 +0,0 @@ -# CT 100 — AdGuard Home — Rebuild-Runbook - -## 1. Container erstellen (via Proxmox Community Script) - -Interaktiv am PVE-Host ausführen (whiptail-Dialog): - -```bash -bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/adguard.sh)" -``` - -⚠️ **NICHT TUN:** `adguardhome.sh` als Dateiname verwenden — 404. Der korrekte Dateiname im Repo ist `ct/adguard.sh`. - -**Einstellungen im Advanced-Install-Dialog:** -- Unprivileged, Debian 13 -- 1 CPU-Core, **1024 MiB RAM** (Standard 512 MiB reicht nicht für die großen Filterlisten, siehe unten), 2 GB Disk -- Bridge `vmbr0`, statische IPv4 `/24` -- IPv6: none (Container bekommt trotzdem automatisch SLAAC-Adressen, unkritisch) -- Timezone Europe/Berlin, kein HTTP-Proxy - -Falls mit 512 MiB angelegt, nachträglich erhöhen: -```bash -pct set 100 --memory 1024 -``` - -## 2. Web-Wizard (einmalig, interaktiv unter `http://:3000` bzw. später Port 80) - -- Admin-User: `root` (oder eigener Name) -- Passwort: eigenes wählen -- Upstream-DNS: `https://dns10.quad9.net/dns-query` (Quad9 DoH) - -Alle folgenden Schritte patchen `/opt/AdGuardHome/AdGuardHome.yaml` direkt (kein Web-UI-Login nötig, da Root-Zugriff auf den Container besteht). **Immer:** -```bash -pct exec 100 -- systemctl stop AdGuardHome -# Datei anpassen (siehe unten) -pct exec 100 -- systemctl start AdGuardHome -``` - -⚠️ **NICHT TUN:** die Config bei laufendem Dienst editieren — Änderungen werden beim nächsten internen Save von AdGuard überschrieben. - -## 3. Conditional Forwarding für `fritz.box` - -In `dns:` → `upstream_dns:` ergänzen: -```yaml - upstream_dns: - - https://dns10.quad9.net/dns-query - - '[/fritz.box/]' -``` - -Private Reverse-DNS aktivieren (für Gerätenamen im Query-Log): -```yaml - local_ptr_upstreams: - - -``` -(Im Web-UI: Einstellungen → DNS-Einstellungen → Private Reverse-DNS-Server aktivieren, ``, privates Subnetz ``) - -## 4. Filterlisten - -`filters:`-Block (Filter-IDs müssen eindeutig sein, 1–2 sind Standard-AdGuard-Defaults): - -```yaml -filters: - - enabled: true - url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt - name: AdGuard DNS filter - id: 1 - - enabled: false - url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt - name: AdAway Default Blocklist - id: 2 - - enabled: true - url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt - name: HaGeZi's Pro Blocklist - id: 3 - - enabled: true - url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/tif.txt - name: HaGeZi's Threat Intelligence Feeds - id: 4 - - enabled: true - url: https://filters.adtidy.org/extension/chromium/filters/11.txt - name: AdGuard Mobile Ads filter - id: 5 - - enabled: true - url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_53.txt - name: AWAvenue Ads Rule - id: 7 - - enabled: true - url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_59.txt - name: AdGuard DNS Popup Hosts filter - id: 8 -whitelist_filters: - - enabled: true - url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/whitelist-referral.txt - name: HaGeZi's Allowlist Referral - id: 6 -``` - -⚠️ **NICHT TUN (bewusst weggelassen, nicht aus Versehen):** oisd NSFW, HaGeZi Anti-Piracy, ShadowWhisperer Dating List, HaGeZi Safesearch Not Supported (reine Content-Filter, kein Ad-Blocking-Zweck), HaGeZi DynDNS-Blocklist (Konflikt mit eigenem STRATO-DynDNS), HaGeZi Encrypted DNS/VPN/TOR/Proxy Bypass (Risiko für den Firmen-VPN-Tunnel der Ehefrau), Dandelion Sprout's Anti-Malware List + ShadowWhisperer's Malware List (redundant zu HaGeZi TIF, nur RAM-Verschwendung). - -## 5. DNS-Rewrites (interne Kurznamen) - -```yaml - rewrites: - - domain: nas.pve - answer: - enabled: true - - domain: adguard.pve - answer: - enabled: true -``` - -⚠️ **NICHT TUN:** das Feld `enabled: true` weglassen. AdGuard Home ergänzt es beim nächsten Neustart automatisch mit dem Default `enabled: false` — der Rewrite bleibt dann wirkungslos (Query geht bis zu den Root-DNS-Servern durch, NXDOMAIN), ohne erkennbaren Fehler in der Config selbst. - -## 6. Passwort-Reset (falls nötig) - -AdGuard speichert nur den bcrypt-Hash, keine Wiederherstellung möglich — neues Passwort setzen statt altes wiederherstellen: - -```bash -pct exec 100 -- apt-get install -y apache2-utils # für htpasswd -B -NEWPASS="" -HASH=$(pct exec 100 -- htpasswd -bnBC 10 "" "$NEWPASS" | tr -d ':\n') -# In AdGuardHome.yaml, Zeile "password:" unter users: ersetzen durch $HASH -``` - -Der von `htpasswd -B` erzeugte Hash hat `$2y$`-Präfix statt AdGuards eigenem `$2a$` — wird von Go/AdGuard-Home-bcrypt trotzdem korrekt akzeptiert. - -## 7. Fritzbox-DHCP umstellen (manueller Schritt am Router, kein CLI) - -Fritzbox-Oberfläche → **Heimnetz → Netzwerk → Netzwerkeinstellungen** → IPv4-Adressen bearbeiten → Abschnitt **DNS-Server** → „Andere DNSv4-Server verwenden" → Bevorzugter DNSv4-Server: ``. - -⚠️ **NICHT TUN (verworfene Variante):** Client fragt die Fritzbox, die AdGuard als Upstream nutzt. Stattdessen: Client fragt AdGuard direkt (wie oben), Fritzbox nur noch für `fritz.box`-Auflösung via Conditional Forwarding. - -## 8. IPv6-DNS aktivieren - -Standardmäßig lauscht AdGuard Home nur auf IPv4 (`bind_hosts: [0.0.0.0]`), obwohl der Container per SLAAC auch IPv6-Adressen bekommt — DNS-Anfragen über IPv6 werden dann gar nicht erst beantwortet, unabhängig davon, was die Fritzbox verteilt. - -```yaml -dns: - bind_hosts: - - 0.0.0.0 - - "::" -``` - -⚠️ **NICHT TUN:** direkt vom PVE-Host aus testen, falls der selbst kein SLAAC-IPv6 auf der Bridge hat (`ip -6 addr show vmbr0` prüfen — meist nur Link-Local vorhanden). Test stattdessen von einem Container aus, der eine globale IPv6-Adresse hat (z. B. `pct exec 101 -- dig @ google.com`). - -**Manueller Schritt an der Fritzbox:** Heimnetz → Netzwerk → Netzwerkeinstellungen → IPv6-Adressen bearbeiten → DNS-Server → eigenen DNSv6-Server eintragen. **Die ULA-Adresse verwenden** (`fd23:...`, per `ip -6 addr show eth0` im Container ermitteln — steht als "scope global dynamic mngtmpaddr"), **nicht** die GUA (`2a02:...`) — die ULA bleibt stabil, die GUA kann sich bei einem ISP-Präfixwechsel ändern und die Konfiguration stillschweigend brechen. - -## Verifikation - -```bash -dig @ doubleclick.net # sollte 0.0.0.0 liefern (geblockt) -dig @ google.com # normale Antwort -dig @ fritz.box # (Conditional Forwarding) -dig @ nas.pve # (Rewrite) -```