<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Privacy – Serverküche</title><link>https://serverkueche.de/tags/privacy/</link><description>Privacy – Neueste Beiträge von Serverküche</description><generator>Hugo</generator><language>de-DE</language><managingEditor>feedback@serverkueche.de (Serverküche)</managingEditor><webMaster>feedback@serverkueche.de (Serverküche)</webMaster><copyright>2026 Serverküche</copyright><lastBuildDate>Mon, 17 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://serverkueche.de/tags/privacy/index.xml" rel="self" type="application/rss+xml"/><item><title>AdGuard Home: netzwerkweiter Werbe- und Tracking-Blocker</title><link>https://serverkueche.de/tutorials/adguard-home-werbeblocker/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/adguard-home-werbeblocker/</guid><description>AdGuard Home mit Docker aufsetzen: ein eigener DNS-Server, der Werbung, Tracker und Schadseiten für alle Geräte blockt – sicher nur übers VPN.</description><content:encoded><![CDATA[<p>Werbung und Tracker blockt man am wirkungsvollsten nicht im Browser, sondern <strong>im DNS</strong> – dort, wo
jedes Gerät nachfragt, welche IP zu einer Domain gehört. <strong>AdGuard Home</strong> ist ein selbstgehosteter
DNS-Server, der Anfragen an bekannte Werbe-, Tracking- und Schad-Domains einfach ins Leere laufen
lässt. Ein Server, alle Geräte – Handy, Fernseher, Laptop – ohne eine einzige App auf dem Client.</p>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Am Ende läuft <strong>AdGuard Home v0.107.78</strong> als DNS-Server auf deinem VPS. Er beantwortet DNS-Anfragen,
filtert dabei Werbung/Tracker/Malware anhand von Sperrlisten heraus und zeigt dir in einer
Weboberfläche live, was blockiert wurde. Konkret:</p>
<ul>
<li>ein <strong>DNS-Filter</strong> mit über 150.000 Regeln (Standard-Blockliste), erweiterbar um beliebige Listen,</li>
<li>eine <strong>Web-Oberfläche</strong> mit Statistik und Abfrageprotokoll, abgesichert hinter deinem Reverse Proxy,</li>
<li>der DNS-Dienst <strong>ausschließlich über deinen WireGuard-Tunnel</strong> erreichbar – nicht offen im Internet.</li>
</ul>
<p>Der letzte Punkt ist entscheidend und der Grund, warum dieses Tutorial WireGuard voraussetzt: Ein
<strong>offener DNS-Resolver</strong> im Internet wird binnen Stunden für <strong>DNS-Amplification-Angriffe</strong>
missbraucht. Deshalb binden wir den DNS-Port an das VPN-Interface, und nur deine eigenen Geräte
sprechen ihn über den Tunnel an.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein Server mit <strong><a href="/tutorials/docker-installieren/">Docker</a></strong> und einem laufenden
<strong><a href="/tutorials/reverse-proxy-traefik/">Traefik-Reverse-Proxy</a></strong> (für die Weboberfläche unter einer
eigenen Domain mit TLS).</li>
<li>Ein eingerichtetes <strong><a href="/tutorials/wireguard-vpn-einrichten/">WireGuard-VPN</a></strong> mit dem Server-Interface
<code>wg0</code> unter <code>10.8.0.1</code>. Darüber erreichen deine Geräte später den DNS-Server.</li>
<li>Grundverständnis von DNS (Domain → IP) hilft, ist aber kein Muss.</li>
</ul>
<p>AdGuard Home ist extrem genügsam – es kommt mit wenigen zehn MB RAM aus. Der kleinste Tarif reicht
locker, zumal er bei dir vermutlich ohnehin neben anderen Diensten läuft.</p>
<div class="not-prose my-6 overflow-hidden rounded-xl border border-paprika-200 bg-paprika-50 dark:border-paprika-800 dark:bg-paprika-900/20"
     data-track-content data-content-name="Affiliate-Box · /tutorials/adguard-home-werbeblocker/" data-content-piece="VPS 1000 G12">
  <div class="flex items-center justify-between border-b border-paprika-200 bg-paprika-100 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-paprika-700 dark:border-paprika-800 dark:bg-paprika-900/40 dark:text-paprika-300">
    <span>🍳 Empfehlung</span>
    <span title="Mit * markierte Links sind Affiliate-Links.">Anzeige</span>
  </div>
  <div class="flex flex-col gap-4 p-4 sm:flex-row sm:items-center sm:justify-between">
    <div>
      <p class="text-lg font-bold text-slate-900 dark:text-white">VPS 1000 G12</p>
      <p class="mt-1 text-sm text-slate-600 dark:text-slate-300">4 vCore · 8 GB RAM · 256 GB NVMe</p>
      <p class="mt-1 text-sm font-semibold text-paprika-700 dark:text-paprika-400">ab 10,36 €/Monat</p>
      <p class="mt-2 text-sm text-slate-600 dark:text-slate-400">Für AdGuard Home mehr als ausreichend.</p>
    </div>
    <a href="https://www.netcup.com/de/server/vps/vps-1000-g12-12m?ref=44083" rel="sponsored noopener" target="_blank"
   data-track-event="Affiliate|netcup: Affiliate-Box|VPS 1000 G12 · {page}"
   class="inline-flex shrink-0 items-center justify-center rounded-lg bg-paprika-600 px-5 py-2.5 font-semibold text-white transition-colors hover:bg-paprika-700">
  Zu netcup →
</a>

  </div><div class="px-4 pb-4"><p class="not-prose my-3 flex flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-herb-500/40 bg-herb-50 px-3 py-2 text-sm text-slate-700 dark:bg-herb-900/20 dark:text-slate-200">
  <span>💶 <strong>5 € Gutschein</strong> für netcup-Neukunden:</span><code data-track-voucher="36nc17844976032"
        class="rounded bg-white px-2 py-0.5 font-mono text-sm font-semibold text-herb-800 dark:bg-slate-800 dark:text-herb-400">36nc17844976032</code>
  <span class="text-xs text-slate-500 dark:text-slate-400">(nur Neukunden, keine Domains)</span>
</p></div>
</div>

<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<h3 id="schritt-1-ist-port-53-frei">Schritt 1: Ist Port 53 frei?</h3>
<p>AdGuard Home braucht <strong>Port 53</strong> – den DNS-Port. Auf manchen Systemen belegt ihn bereits
<code>systemd-resolved</code>. Prüfe das:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ss -tulpn <span class="p">|</span> grep <span class="s2">&#34;:53 &#34;</span></span></span></code></pre></div>
</div>
<p>Auf dem hier verwendeten netcup-Debian-13-Image war der Port <strong>frei</strong> (kein systemd-resolved aktiv),
die Ausgabe also leer. Bekommst du stattdessen eine Zeile mit <code>systemd-resolve</code>, musst du dessen
Stub-Listener abschalten – sonst startet AdGuard nicht („address already in use&quot;):</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo mkdir -p /etc/systemd/resolved.conf.d
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -e <span class="s2">&#34;[Resolve]\nDNSStubListener=no&#34;</span> <span class="p">|</span> sudo tee /etc/systemd/resolved.conf.d/adguard.conf
</span></span><span class="line"><span class="cl">sudo systemctl restart systemd-resolved</span></span></code></pre></div>
</div>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-amber-400 bg-amber-50 dark:border-amber-700 dark:bg-amber-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">⚠️</span>resolv.conf nicht vergessen
  </p>
  <div class="prose-kitchen text-sm">Schaltest du den Stub-Listener ab, zeigt <code>/etc/resolv.conf</code> unter Umständen noch auf <code>127.0.0.53</code>
und der Server selbst kann keine Namen mehr auflösen. Setze in dem Fall einen funktionierenden
Resolver ein, z. B. <code>nameserver 9.9.9.9</code> (oder den deines Providers), damit <code>apt</code> &amp; Co.
weiterarbeiten.</div>
</div>
<h3 id="schritt-2-docker-compose-anlegen">Schritt 2: Docker-Compose anlegen</h3>
<p>Leg den Projektordner an:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir -p /opt/adguardhome/work /opt/adguardhome/conf <span class="o">&amp;&amp;</span> <span class="nb">cd</span> /opt/adguardhome</span></span></code></pre></div>
</div>
<p>Erstelle die <code>compose.yaml</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">YAML</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">services</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">adguardhome</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">adguard/adguardhome:v0.107.78</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l">adguardhome</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">restart</span><span class="p">:</span><span class="w"> </span><span class="l">unless-stopped</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">./work:/opt/adguardhome/work</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">./conf:/opt/adguardhome/conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;10.8.0.1:53:53/tcp&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;10.8.0.1:53:53/udp&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">proxy</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;traefik.enable=true&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;traefik.http.routers.adguard.rule=Host(`DEINE_DOMAIN`)&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;traefik.http.routers.adguard.entrypoints=websecure&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;traefik.http.routers.adguard.tls.certresolver=le&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;traefik.http.services.adguard.loadbalancer.server.port=3000&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">networks</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">proxy</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">external</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span></span></span></code></pre></div>
</div>
<p>Das Wichtigste:</p>
<ul>
<li><strong><code>ports: &quot;10.8.0.1:53:53&quot;</code></strong> – der DNS-Port wird <strong>nur an die WireGuard-Adresse</strong> gebunden, nicht
an <code>0.0.0.0</code>. Damit ist der Resolver ausschließlich über den VPN-Tunnel erreichbar und <strong>niemals
offen im Internet</strong>. Diese eine Zeile ist der Unterschied zwischen „sicher&quot; und „wird für Angriffe
missbraucht&quot;.</li>
<li>Die <strong>Web-Oberfläche</strong> läuft auf Container-Port <strong>3000</strong> und wird über die vier Traefik-Labels
unter <code>DEINE_DOMAIN</code> mit TLS veröffentlicht. Ersetze <code>DEINE_DOMAIN</code> durch deine echte Domain.</li>
<li>Beide <code>volumes</code> (<code>work</code>, <code>conf</code>) machen Konfiguration und Statistik dauerhaft.</li>
</ul>
<p>Starte den Container:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker compose up -d</span></span></code></pre></div>
</div>
<p>Prüfe, dass er läuft:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker compose ps</span></span></code></pre></div>
</div>
<p>Du solltest <code>Up</code> sehen und dass Port 53 an <code>10.8.0.1</code> gebunden ist.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-paprika-400 bg-paprika-50 dark:border-paprika-700 dark:bg-paprika-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🔥</span>Niemals Port 53 offen ins Internet
  </p>
  <div class="prose-kitchen text-sm">Schreib <strong>nie</strong> <code>- &quot;53:53/udp&quot;</code> (das bindet an alle Interfaces) auf einem öffentlichen Server. Ein
offener Resolver wird automatisiert gefunden und für Amplification-DDoS gegen Dritte
missbraucht – dein Anbieter sperrt dich dann zu Recht. Immer an ein privates Interface
(<code>10.8.0.1</code>) binden.</div>
</div>
<h3 id="schritt-3-die-ersteinrichtung">Schritt 3: Die Ersteinrichtung</h3>
<p>Rufe deine Domain im Browser auf – du landest im <strong>Einrichtungsassistenten</strong>. Rechts unten kannst du
die Sprache auf <strong>Deutsch</strong> stellen.</p>
<p><figure class="my-6"><img src="/tutorials/adguard-home-werbeblocker/adguard-ersteinrichtung_hu_87a904eae84ec3c5.webp" srcset="/tutorials/adguard-home-werbeblocker/adguard-ersteinrichtung_hu_ff937fdb5b56d391.webp 480w, /tutorials/adguard-home-werbeblocker/adguard-ersteinrichtung_hu_87a904eae84ec3c5.webp 768w, /tutorials/adguard-home-werbeblocker/adguard-ersteinrichtung_hu_a0e27fec2a5fdef9.webp 1200w, /tutorials/adguard-home-werbeblocker/adguard-ersteinrichtung_hu_d8f0373d50d0a5ee.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/adguard-home-werbeblocker/adguard-ersteinrichtung_hu_fc51183f82121c7a.webp"
    alt="Der Willkommensbildschirm des AdGuard-Home-Einrichtungsassistenten." title="Der Einrichtungsassistent begrüßt dich – die Sprache stellst du unten rechts um."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Der Einrichtungsassistent begrüßt dich – die Sprache stellst du unten rechts um.</figcaption></figure></p>
<p>Klick dich durch die fünf Schritte. Zwei Angaben sind wichtig:</p>
<ul>
<li><strong>Admin-Weboberfläche:</strong> Als Port musst du <strong>3000</strong> eintragen (Alle Schnittstellen, Port <code>3000</code>) –
denn genau dorthin leitet Traefik. Der Vorschlag ist oft Port 80; änderst du ihn nicht, ist die
Oberfläche nach dem Setup über Traefik nicht mehr erreichbar.</li>
<li><strong>DNS-Server:</strong> Port <strong>53</strong> (Alle Schnittstellen). Die Beschränkung auf das VPN-Interface erledigt
bereits die Port-Bindung aus der Compose – innerhalb des Containers darf AdGuard ruhig auf allen
Schnittstellen lauschen.</li>
</ul>
<p>Danach legst du <strong>Benutzername und ein starkes Passwort</strong> für die Anmeldung an. Fertig – du wirst zur
Anmeldung weitergeleitet.</p>
<h3 id="schritt-4-das-dashboard">Schritt 4: Das Dashboard</h3>
<p>Nach dem Login siehst du die <strong>Übersicht</strong>: Zahl der Anfragen, wie viele davon gesperrt wurden, die
am häufigsten angefragten und die am häufigsten gesperrten Domains.</p>
<p><figure class="my-6"><img src="/tutorials/adguard-home-werbeblocker/adguard-dashboard_hu_5de9b2950b19662f.webp" srcset="/tutorials/adguard-home-werbeblocker/adguard-dashboard_hu_d8336e724fedc00e.webp 480w, /tutorials/adguard-home-werbeblocker/adguard-dashboard_hu_5de9b2950b19662f.webp 768w, /tutorials/adguard-home-werbeblocker/adguard-dashboard_hu_efa6349d6553e3f4.webp 1200w, /tutorials/adguard-home-werbeblocker/adguard-dashboard_hu_524d3d70b50cd133.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/adguard-home-werbeblocker/adguard-dashboard_hu_9ad8090b01144826.webp"
    alt="Das AdGuard-Home-Dashboard mit Anfrage-Statistik und Top-Domains." title="Das Dashboard zeigt live, wie viele Anfragen ankommen und wie viele gesperrt werden."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Das Dashboard zeigt live, wie viele Anfragen ankommen und wie viele gesperrt werden.</figcaption></figure></p>
<p>Anfangs ist alles auf null – das füllt sich, sobald das erste Gerät AdGuard als DNS nutzt (Schritt 6).</p>
<h3 id="schritt-5-sperrlisten-verwalten">Schritt 5: Sperrlisten verwalten</h3>
<p>Unter <strong>Filter → DNS-Sperrlisten</strong> siehst du die aktiven Blocklisten. Standardmäßig ist der
<strong>AdGuard DNS filter</strong> aktiv – bei uns mit <strong>159.173 Regeln</strong>.</p>
<p><figure class="my-6"><img src="/tutorials/adguard-home-werbeblocker/adguard-filterlisten_hu_a523d23f7f6dbb75.webp" srcset="/tutorials/adguard-home-werbeblocker/adguard-filterlisten_hu_368f5c8ac064ee00.webp 480w, /tutorials/adguard-home-werbeblocker/adguard-filterlisten_hu_a523d23f7f6dbb75.webp 768w, /tutorials/adguard-home-werbeblocker/adguard-filterlisten_hu_ca33da342f5adff6.webp 1200w, /tutorials/adguard-home-werbeblocker/adguard-filterlisten_hu_680ffa266ffa0698.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/adguard-home-werbeblocker/adguard-filterlisten_hu_11a8bde20731c1c6.webp"
    alt="Die Verwaltung der DNS-Sperrlisten in AdGuard Home." title="Die Standard-Sperrliste ist aktiv; weitere Listen aktivierst oder ergänzt du hier."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Die Standard-Sperrliste ist aktiv; weitere Listen aktivierst oder ergänzt du hier.</figcaption></figure></p>
<p>Über <strong>Blockliste hinzufügen</strong> kannst du weitere kuratierte Listen einbinden (AdGuard bringt einen
Katalog mit, z. B. AdAway oder OISD). Weniger ist oft mehr: Ein, zwei gute Listen blocken das meiste,
ohne dass ständig legitime Seiten kaputtgehen. Mit <strong>Nach Updates suchen</strong> aktualisierst du die
Regeln manuell; AdGuard hält sie sonst automatisch aktuell (siehe „Wartung&quot;).</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-herb-400 bg-herb-50 dark:border-herb-700 dark:bg-herb-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🧑‍🍳</span>Nicht übertreiben
  </p>
  <div class="prose-kitchen text-sm">Es ist verlockend, zehn aggressive Listen zu stapeln. Das führt aber zu <strong>Overblocking</strong>: Login-Seiten,
Bilder oder Warenkörbe funktionieren plötzlich nicht mehr, und die Fehlersuche ist mühsam. Fang mit
der Standard-Liste an und ergänze gezielt.</div>
</div>
<h3 id="schritt-6-geräte-auf-adguard-umstellen">Schritt 6: Geräte auf AdGuard umstellen</h3>
<p>Damit deine Geräte den Filter nutzen, müssen sie AdGuard als DNS-Server verwenden. Über den
WireGuard-Tunnel geht das am elegantesten <strong>zentral in der Client-Konfiguration</strong>: Trag in der
<code>[Interface]</code>-Sektion deiner WireGuard-Clients die Server-Tunneladresse als DNS ein:</p>
<div class="sk-code">
  <span class="sk-code-head">INI</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="k">[Interface]</span>
</span></span><span class="line"><span class="cl"><span class="c1"># ... deine bestehenden Zeilen ...</span>
</span></span><span class="line"><span class="cl"><span class="na">DNS</span> <span class="o">=</span> <span class="s">10.8.0.1</span></span></span></code></pre></div>
</div>
<p>Sobald der Tunnel steht, schickt das Gerät alle DNS-Anfragen an AdGuard – egal ob unterwegs im WLAN
oder im Mobilfunknetz. Kein Eingriff am Router nötig, und der Schutz wirkt auch von unterwegs.</p>
<h3 id="schritt-7-funktioniert-es-wirklich">Schritt 7: Funktioniert es wirklich?</h3>
<p>Prüf den Resolver direkt auf dem Server über die VPN-Adresse. Eine normale Domain muss auflösen:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dig @10.8.0.1 +short example.com</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">172.66.147.243</span></span></code></pre></div>
</div>
<p>Eine bekannte Tracking-Domain muss <strong>geblockt</strong> werden – AdGuard antwortet dann mit <code>0.0.0.0</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dig @10.8.0.1 +short doubleclick.net</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">0.0.0.0</span></span></code></pre></div>
</div>
<p>Zur Gegenprobe, dass der Resolver <strong>nicht</strong> offen lauscht, fragst du ihn über die Loopback-Adresse an
– das muss scheitern:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dig @127.0.0.1 +time<span class="o">=</span><span class="m">2</span> +tries<span class="o">=</span><span class="m">1</span> example.com</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">;; communications error to 127.0.0.1#53: connection refused</span></span></code></pre></div>
</div>
<p>Genau so soll es sein: erreichbar über <code>10.8.0.1</code> (den Tunnel), abgewiesen auf allen anderen
Adressen. Ein Blick ins <strong>Abfrageprotokoll</strong> in der Weboberfläche zeigt dieselben Anfragen live –
gesperrte Einträge sind rot markiert und nennen die Liste, die gegriffen hat:</p>
<p><figure class="my-6"><img src="/tutorials/adguard-home-werbeblocker/adguard-abfrageprotokoll_hu_1b567f296d8cc338.webp" srcset="/tutorials/adguard-home-werbeblocker/adguard-abfrageprotokoll_hu_15baea93c31944f.webp 480w, /tutorials/adguard-home-werbeblocker/adguard-abfrageprotokoll_hu_1b567f296d8cc338.webp 768w, /tutorials/adguard-home-werbeblocker/adguard-abfrageprotokoll_hu_98b9d31770ff8047.webp 1200w, /tutorials/adguard-home-werbeblocker/adguard-abfrageprotokoll_hu_e19c657038b3a7b0.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/adguard-home-werbeblocker/adguard-abfrageprotokoll_hu_6abe915d221e9095.webp"
    alt="Das Abfrageprotokoll von AdGuard Home mit erlaubten und gesperrten Anfragen." title="Das Abfrageprotokoll: gesperrte Domains (rot) mit der Liste, die sie blockiert hat."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Das Abfrageprotokoll: gesperrte Domains (rot) mit der Liste, die sie blockiert hat.</figcaption></figure></p>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<div class="troubleshoot not-prose">
<p><strong>Der Container startet nicht, Log sagt „listen udp :53: bind: address already in use&quot;.</strong>
<code>systemd-resolved</code> (oder ein anderer DNS-Dienst) belegt Port 53. Stub-Listener abschalten wie in
Schritt 1, danach <code>docker compose up -d</code> erneut.</p>
<p><strong><code>docker compose up</code> scheitert mit „cannot assign requested address&quot; für <code>10.8.0.1</code>.</strong> Das
WireGuard-Interface <code>wg0</code> mit <code>10.8.0.1</code> existiert (noch) nicht – Docker kann den Port nicht an eine
nicht vorhandene Adresse binden. Zuerst das <a href="/tutorials/wireguard-vpn-einrichten/">WireGuard-VPN</a>
einrichten und <code>wg0</code> hochfahren (<code>ip -br addr show wg0</code> muss <code>10.8.0.1</code> zeigen), dann den Container
starten.</p>
<p><strong>Nach dem Setup ist die Weboberfläche nicht mehr erreichbar.</strong> Im Assistenten wurde der Admin-Port
auf 80 (Vorschlag) statt auf <strong>3000</strong> gesetzt – Traefik leitet aber auf 3000. In
<code>./conf/AdGuardHome.yaml</code> unter <code>http:</code> die <code>address</code> auf <code>0.0.0.0:3000</code> korrigieren und <code>docker compose restart</code>.</p>
<p><strong>DNS filtert nicht, obwohl das Gerät verbunden ist.</strong> Der Browser nutzt <strong>DNS-over-HTTPS (DoH)</strong>
und umgeht damit deinen Server komplett – Firefox und Chrome haben das teils standardmäßig aktiv. In
den Browser-Einstellungen „Sicheres DNS&quot; / „DNS über HTTPS&quot; deaktivieren. Prüfen kannst du das mit
<code>dig @10.8.0.1 …</code> (greift immer).</p>
<p><strong>Eine Website ist plötzlich kaputt (leere Seiten, fehlende Bilder, kein Login).</strong> Overblocking –
eine Sperrliste blockt eine Domain, die die Seite wirklich braucht. Im Abfrageprotokoll die
gesperrte Domain suchen, per Rechtsklick/Menü <strong>freigeben</strong> (Ausnahme) oder die zu aggressive Liste
deaktivieren.</p>

</div>

<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<p><strong>Sperrlisten-Updates.</strong> AdGuard aktualisiert die Listen automatisch (Standard: alle 24 Stunden). Du
musst hier nichts tun; ein manuelles <strong>Nach Updates suchen</strong> geht bei Bedarf jederzeit.</p>
<p><strong>Backups.</strong> Die gesamte Konfiguration steckt in <strong><code>/opt/adguardhome/conf/AdGuardHome.yaml</code></strong> – Admin-Login,
DNS-Einstellungen, Listen, Ausnahmen. Diese Datei (plus den <code>work</code>-Ordner mit der Statistik) sicherst
du regelmäßig mit, z. B. per <a href="/tutorials/backups-mit-restic/">restic</a>. Damit ist ein Server-Umzug in
Minuten erledigt: Container hochziehen, <code>conf</code> zurückspielen, fertig.</p>
<p><strong>Updates.</strong> Neue Versionen holst du dir wie bei jedem Compose-Stack. Pinne den Tag bewusst
(nicht <code>latest</code>), damit Updates kontrolliert passieren:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /opt/adguardhome
</span></span><span class="line"><span class="cl">docker compose pull <span class="o">&amp;&amp;</span> docker compose up -d</span></span></code></pre></div>
</div>
<p><strong>Datenschutz.</strong> Das Abfrageprotokoll speichert, welches Gerät welche Domain angefragt hat – das ist
für die Fehlersuche Gold wert, aber auch sensibel. Unter <strong>Einstellungen → Allgemeine Einstellungen</strong>
kannst du die <strong>Aufbewahrungsdauer</strong> des Protokolls verkürzen oder das Logging ganz abschalten.
Gerade wenn andere Personen deinen DNS mitnutzen, ist eine kurze Aufbewahrung fair.</p>
]]></content:encoded></item></channel></rss>