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.

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).
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 -- -vKrok 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.
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.
# 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.comKrok 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:
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.comKrok 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.
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í.