Zpět na blog
Srpen 19, 2026Návody

Jak nastavit AdGuard Home na VPS

Nainstalujte AdGuard Home na Ubuntu, dokončete průvodce prvním spuštěním, uzamkněte webové UI, zapněte DNS-over-HTTPS a DNS-over-TLS, namiřte zařízení na svůj resolver a nenechte běžet otevřený DNS server, který může zneužít celý internet.

Jak nastavit AdGuard Home na VPS

AdGuard Home je self-hosted DNS sinkhole a resolver s webovým rozhraním. Umí blokovat reklamy, trackery a škodlivé domény pro každé zařízení, které ho používá jako DNS — telefony, notebooky, smart TV i další projekty na VPS. Na rozdíl od rozšíření prohlížeče funguje i u aplikací, které soubor hosts ignorují. Na VPS se hodí, když chcete stejné filtrování na cestách, nebo nechcete Raspberry Pi v domácí síti.

Nebezpečný výchozí stav, který nesmíte pustit ven, je otevřený resolver: pokud je UDP/TCP 53 dosažitelný z celého internetu bez řízení přístupu, cizí lidé použijí váš VPS k DNS amplifikaci a dostanete stížnosti na zneužití. Tento návod nainstaluje AdGuard Home na Ubuntu, naváže DNS na localhost nebo soukromé rozhraní WireGuard, pokud záměrně nevystavujete šifrované DNS, dá dashboard na HTTPS a ukáže, jak notebooky a telefony mohou používat DNS-over-HTTPS (DoH) nebo DNS-over-TLS (DoT) bez otevírání klasického portu 53 světu.

K čemu je AdGuard Home dobrý

Obvyklé srovnání je Pi-hole. AdGuard Home je jeden binární soubor s vestavěným webovým UI, volitelnými šifrovanými frontendy DNS a nastavením podle klienta. Můžete ho provozovat v Docker nebo jako službu systemd. Na VPS Hiddence se dobře páruje se soukromým VPN: zařízení vstoupí do WireGuard, posílají DNS na VPS tunelem a port 53 nikdy veřejně nevystaví.

  • Blokování v celé síti bez aplikace na každém zařízení
  • DoH (443) a DoT (853), takže DNS nejde otevřeným textem ve veřejné Wi-Fi
  • Protokol dotazů a statistiky, abyste viděli, které zařízení mluví s kterou doménou
  • Vlastní upstreamy (Quad9, Cloudflare nebo vlastní Unbound)
  • Malá stopa — VPS s 1 GB zvládne domácnost a pár dalších klientů

Požadavky

Doménu potřebujete, pokud chcete důvěryhodný certifikát pro DoH/DoT a dashboard. Můžete testovat na HTTP a IP serveru, ale tak to nenechávejte. Pokud systemd-resolved už na Ubuntu drží port 53, uvolníme ho, než AdGuard Home naváže DNS.

  • VPS Ubuntu 22.04 nebo 24.04 s root/sudo
  • 1 GB RAM stačí pro osobní použití
  • Doména nebo subdoména (dns.example.com) s A záznamem na VPS
  • Přístup SSH; volitelně WireGuard, pokud má DNS být jen v tunelu

Krok 1. Uvolněte port 53 a nainstalujte AdGuard Home

Ubuntu Server často provozuje systemd-resolved jako stub na 127.0.0.53:53. AdGuard Home chce 53 na rozhraních, která zvolíte. Instalátor to umí sám, ale explicitní krok zabrání napůl rozbitému DNS na samotném VPS (server pořád musí umět resolvovat balíčky).

bash
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl ca-certificates

# See who owns port 53:
ss -tulpn | grep ':53'

# Typical Ubuntu fix: stop stub listener, point the OS at a temporary resolver
mkdir -p /etc/systemd/resolved.conf.d
cat >/etc/systemd/resolved.conf.d/adguardhome.conf <<'EOF'
[Resolve]
DNS=1.1.1.1
DNSStubListener=no
EOF
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

Krok 2. Průvodce prvním spuštěním

Instalátor vypíše URL, obvykle http://YOUR_IP:3000/. Otevřete ho, vytvořte administrátora s dlouhým heslem a zvolte adresy naslouchání. Pro veřejný VPS je bezpečné první nastavení: Admin Web na 127.0.0.1:3000 (pak dopředu Caddy) nebo na 80/443 po TLS; DNS na 127.0.0.1:53 plus VPN rozhraní, ne na 0.0.0.0:53. Pokud opravdu potřebujete DNS „jako v LAN“ pro známé, preferujte DoH/DoT na 443/853 s ověřením, ne otevřený 53/udp.

Vyberte upstream DNS servery, kterým věříte. Mnoho lidí používá https://dns.quad9.net/dns-query nebo Cloudflare. Zapněte paralelní požadavky, pokud chcete rychlejší failover. Zapněte výchozí seznamy filtrů, další přidávejte později — padesát seznamů první den znemožní ladění, když se web rozbije.

Pokud z notebooku neotevřete port 3000, použijte tunel SSH: ssh -L 3000:127.0.0.1:3000 root@YOUR_VPS_IP a prohlížeč http://127.0.0.1:3000/

Krok 3. Reverse proxy a HTTPS pro dashboard

Jakmile průvodce skončí, AdGuard Home obvykle přesune UI na port 80. To koliduje s Caddy nebo Nginx, pokud hostujete i weby. Čistý vzor: web AdGuard Home na 127.0.0.1:8080, DNS na 127.0.0.1:53, Caddy na 443 jak pro dashboard, tak pro DoH.

bash
# In AdGuard Home settings, bind the web UI to 127.0.0.1:8080
# Example Caddyfile:

dns.example.com {
    reverse_proxy 127.0.0.1:8080
}

# After Caddy is up:
curl -I https://dns.example.com

Krok 4. Zapněte DNS-over-HTTPS a DNS-over-TLS

V nastavení šifrování šifrování zapněte, nastavte jméno serveru na dns.example.com a namiřte AdGuard Home na soubory certifikátů — buď ty, které ukládá Caddy, nebo ty, které si AdGuard Home obstará sám, pokud poslouchá na 443. DoH je obvykle https://dns.example.com/dns-query. DoT je dns.example.com:853. Pokud Caddy už drží 443, nechte Caddy ukončit TLS a reverse-proxy cestu DoH na nešifrovaný HTTP port DoH AdGuard Home, nebo nechte AdGuard Home poslouchat na 443 a dashboard dejte na jinou subdoménu.

Ověřte klientem, než změníte DNS na všech zařízeních. Na notebooku s moderním curl:

bash
curl -H 'accept: application/dns-json' 'https://dns.example.com/dns-query?name=example.com&type=A'

# DoT test (kdig from knot-dnsutils, if installed):
# kdig @dns.example.com +tls-ca +tls-host=dns.example.com example.com

Krok 5. Namiřte skutečná zařízení na svůj resolver

Windows 11 a novější Androidy umí šablonu DoH. iOS může použít konfigurační profil nebo klienta s DoH. Firefox a Chromium také umí vlastní URL DoH. Na domácím routeru nastavujte WAN DNS jen pokud router umí DoT/DoH; jinak spusťte WireGuard a nastavte DNS na VPN IP VPS, aby klasické DNS nikdy nešlo přes internet.

  • Android 9+: Soukromé DNS (DoT) → dns.example.com
  • Firefox: Nastavení → Síť → DNS over HTTPS → vlastní URL https://dns.example.com/dns-query
  • Zařízení Apple: podepsaný mobileconfig nebo aplikace s DoH/DoT
  • Jiný VPS: nastavte resolv.conf nebo systemd-resolved na WireGuard IP této instance AdGuard
  • Nenastavujte IP tohoto VPS jako DNS v náhodných veřejných sítích bez šifrování

Krok 6. Firewall — zavřete otevřené rekurzivní DNS

Tato část zabrání ošklivému překvapení. Povolte SSH, HTTPS a volitelně 853/tcp pro DoT. Nepovolujte 53/udp z 0.0.0.0/0, pokud nemáte velmi konkrétní, rate-limitovaný a ověřený návrh — a i tehdy byste to spíš neměli.

bash
ufw allow OpenSSH
ufw allow 443/tcp comment 'dashboard + DoH'
ufw allow 853/tcp comment 'DoT'
# If DNS is only on WireGuard (example iface wg0, 10.8.0.1):
# ufw allow in on wg0 to any port 53 proto udp
ufw enable
ufw status verbose

# Confirm 53 is not public:
ss -tulpn | grep ':53'

Filtry, seznamy povolených a klienti

Začněte výchozím DNS filtrem AdGuard a jedním seznamem malwaru. Když se web chová špatně, podívejte se do protokolu dotazů a přidejte konkrétní pravidlo allowlist místo vypnutí celého blokování. Používejte jména klientů (podle IP nebo ClientID v URL DoH), abyste mohli přísněji filtrovat smart TV a mírněji pracovní notebook. Bezpečné vyhledávání zapínejte jen pokud ho opravdu chcete — překvapí lidi, kteří si o přepsané výsledky Google neřekli.

  • Protokol dotazů: najděte zablokovanou doménu a při falešném poplachu ji povolte
  • Nastavení klienta: různé seznamy blokací na zařízení
  • Zakázaní klienti: blokujte rozsahy, které nevlastníte
  • Omezení rychlosti: zapněte, pokud kdykoli vystavíte víc než hrstku uživatelů

Řešení problémů

Pokud samotný VPS neumí apt update, rozbili jste lokální DNS při uvolňování portu 53 — dejte do resolved.conf statický resolver, jak je výše. Pokud zařízení „mají internet“, ale reklamy se pořád načítají, obcházejí vaše DNS (pevné resolvery, DoH v prohlížeči nebo aplikace s vlastním DNS). Pokud je dashboard prázdný, díváte se na špatnou instanci nebo pořád na port 3000 poté, co průvodce UI přesunul.

  • apt selže: zkontrolujte /etc/resolv.conf a systemd-resolved
  • Port 53 obsazený: ss -tulpn, vypněte stub listener
  • Chyby certifikátu DoH: hostname musí sedět se SAN certifikátu
  • Reklamy pořád vidět: DoH prohlížeče k jinému poskytovateli přebije OS
  • Vysoká RAM: protokol + moc seznamů filtrů — seznam seřízněte a zkraťte uchování logu

Bezpečnostní kontrolní seznam

Webové UI je admin panel. Jedinečné heslo, jen HTTPS a URL nepublikujte. AdGuard Home aktualizujte; instalační skript i UI mají cestu aktualizace. Omezte 443, pokud DoH mají používat jen vaše zařízení — HTTP basic auth na cestě DoH nebo přístup jen přes WireGuard je mnohem bezpečnější než slavný otevřený resolver.

  • Žádné veřejné 53/udp
  • HTTPS na dashboardu
  • Silné heslo administrátora ve správci hesel
  • Pro rodinná zařízení preferujte WireGuard + interní DNS
  • Zálohujte AdGuardHome.yaml mimo server

Tipy

  • Před každým upgradem zálohujte /opt/AdGuardHome/AdGuardHome.yaml
  • Vyhrazená subdoména; nesdílejte ji s nesouvisejícím CMS
  • Pokud už provozujete Caddy, nechte Caddy držet 443 a AdGuard Home nechte na localhost
  • Zapište si URL DoH pro zařízení — zapomenete ho
  • Doplňte hardening SSH a firewall, aby VPS nebyl „bezpečný jen od DNS“

AdGuard Home na VPS je přímočarý: uvolněte port 53 lokálně, spusťte instalátor, dokončete průvodce se silným heslem administrátora, dejte UI na HTTPS, zapněte DoH/DoT a klasické DNS držte mimo veřejný internet. Zařízení namiřte na šifrovaný endpoint nebo VPN IP, začněte malou sadou filtrů a při poruše použijte protokol dotazů. To je soukromý resolver, který opravdu ovládáte — ne veřejné otevřené DNS, kvůli kterému VPS skončí v databázích zneužití.