Pred viac ako rokom som zo zvedavosti nainštaloval docker Adguard Home (AGH), ale vôbec som to nevyužíval. Nedávno som sa k tomu vrátil, keďže Google Chrome a všetky prehliadače založené na jadre Chromia, prechádzajú na Manifest V3 (MV3) a prestavajú fungovať rozšírenia, ktoré predtým fungovali (jedná sa najmä o niektoré adblockery).
Google sa snaží bojovať proti blokovaniu reklám, ale nie vždy sa mu to dostatočne darí. Prevažná časť užívateľov webových prehliadačov používa nejaké rozšírenia pre blokovanie reklám. Ja som do teraz používal uBlock Origin (uBO) a na webových stránkach, príp. YouTube (YT) videách som nevidel nikdy žiadne reklamy, alebo čakanie, resp. prerušovanie videa reklamou. Na oficiálnej stránke uBO je už verzia lite, ktorá funguje aj na MV3, ale nie všetky možnosti filtrovania budú fungovať ako na MV2 .
Poznámka: dnes už je znova možné na úrovni webového prehliadača používať Adguard blokovač reklamy, ktorý funguje podobne ako fungoval uBO. Na rozdiel od AGH musíme toto rozšírenie nainštalovať do každého web prehliadača.
O Adguard Home
AGH je softvérové riešenie, ktoré slúži ako DNS server a blokovač reklám pre celú sieť. Funguje ako centrálny bod, ktorý filtruje požiadavky na úrovni DNS (bohužiaľ na YT videách reklamy neblokuje), blokuje reklamy, sledovacie domény a škodlivý softvér ešte predtým, ako sa dostanú do vašich zariadení.
Hlavné výhody:
- Blokuje reklamy a sledovacie prvky v celej LAN (TV, PC, smartfon atď …)
- Umožňuje nastaviť rodičovskú kontrolu
- Má prehľadné štatistiky o sieťovej prevádzke
- Je open-source
Na rozdiel od bežných blokovačov reklám v prehliadačoch, AdGuard Home chráni všetky zariadenia v sieti bez potreby inštalácie dodatočného softvéru na každé z nich.
Keď som vyhľadával blokovač reklám, založený na DNS, tak o prvenstvo súperili hlavne AGH a Pi-hole. Po prečítaní rôznych blogov a diskusií na internete som sa rozhodol pre AGH
Porovnanie AGH a Pi-hole (prebraté z github)
Funkcia | AGH | Pi-Hole |
---|---|---|
Blokovanie reklám a sledovačov | ✅ | ✅ |
Prispôsobenie blokovaných zoznamov | ✅ | ✅ |
Vstavaný server DHCP | ✅ | ✅ |
HTTPS pre rozhranie správcu | ✅ | Trochu, ale budete musieť manuálne nakonfigurovať lighttpd |
Šifrované servery DNS upstream (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) | ✅ | ❌ (vyžaduje dodatočný softvér) |
Viacplatformový | ✅ | ❌ (nie natívne, iba cez Docker) |
Beží ako server DNS-over-HTTPS alebo DNS-over-TLS | ✅ | ❌ (vyžaduje dodatočný softvér) |
Blokovanie phishingových a malvérových domén | ✅ | ❌ (vyžaduje iné než predvolené blokované zoznamy) |
Rodičovská kontrola (blokovanie domén pre dospelých) | ✅ | ❌ (vyžaduje iné než predvolené blokované zoznamy) |
Vynútiť bezpečné vyhľadávanie vo vyhľadávačoch | ✅ | ❌ |
Konfigurácia pre klienta (zariadenie). | ✅ | ✅ |
Nastavenia prístupu (vyberte, kto môže používať AGH DNS) | ✅ | ❌ |
Beží bez oprávnení root | ✅ | ❌ |
V dnešnej dobe smart zariadení na ktorých beží prevažne OS Android (v dobe písania článku, je podľa statcounter OS Android nainštalovaný na 45.53% zariadeniach) nie je až tak jednoduché nainštalovať kvalitné blokovače reklám, pokiaľ nie je na zariadení Root. Ak je na zariadení Root, potom zase nefungujú korektne bankové aplikácie. Ideálne je teda nájsť kompromis aby fungovali aj bankové aplikácie, ale aj blokovače reklám.
Poznámka: toto nie je kompletný návod ako nainštalovať AGH, alebo nastaviť zariadenia v LAN aby používali AGH. Je to len stručný náčrt ako sa da tento problém riešiť.
Inštaláci AGH
AGH môžeme inštalovať viacero spôsobmi (auto install pomocou linuxového skriptu sh, docker, snap) Ja som inštaloval AGH skrz portainer. Je to asi najjednoduchší spôsob a tak isto jednoducho prebieha aj aktualizácia.
version: "3"
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
ports:
- 53:53/tcp
- 53:53/udp
- 784:784/udp
- 853:853/tcp
- 3000:3000/tcp
volumes:
- ./workdir:/opt/adguardhome/work
- ./confdir:/opt/adguardhome/conf
restart: unless-stopped
Po inštalácii sa prihlásime cez webové rozhranie do AGH na adrese (v mojom prípade som AGH nainštaloval na server s IP adresou 192.168.1.109).
192.168.1.109:3000

AGH si nevyžaduje takmer žiadnu konfiguráciu a údržbu. Jednoducho po nainštalovaní funguje a myslím si, že aj celkom dobre. AGH po inštalácii síce funguje, ale ani jeden klient v LAN sieti nebude AGH používať. Klienti v LAN sieti dostávajú väčšinou IP adresy z DHCP servera a ten prideľuje okrem IP adresy, brány (GW) aj IP adresu pre DNS servery. Preto musíme na routery nastaviť DHCP server. Ja osobne budem používať AGH služby len na mobilných zariadeniach, resp. na zariadeniach, ktoré sú pripojené do siete bezdrôtovo (WiFi). V domácej sieti používam pre WiFi klientov TP-Link Archer C6 V3.20. Nalógujeme sa do nastavení routera a prejdeme na
Pokročilé nastavenia --> Sieť --> Server DHCP
Ako primarny DNS nastavíme IP adresu nášho AGH servera (viď obrázok).

Ak sa na router znovu pripojíme, tak už nám bude pridelená nová IP adresa DNS servera a naše DNS requesty budú filtrované podľa pravidiel v AGH. DNS requesty sú filtrované, podľa pravidiel načítaných z
Filter --> DNS blocklists
Tieto pravidlá su aktualizované každých 24 hodin (pokiaľ sme to v nastaveniach nezmenili). Môžeme si vytvárať aj vlastné pravidlá, ale to je skôr pre pokročilých. Ďalej môžeme AGH nastaviť tiež ako DHCP server. Tiež môžeme AGH použiť na prepisovanie domén (v časti Filtre -> DNS prepisovanie). Výhodou je, že pri subdomenách nám stačí použiť zástupný znak (*). Ďalej si môžeme nastaviť upstream servery a komunikáciu zabezpečiť buď cez DoT, DoH, ale tiež DoQ. Posledne spomínaný protokol DoQ je údajne najrýchlejší a Adguard ho ponúka ako prvý na svete. Nakoniec AGH je dobre komentovaný a wiki je tiež veľmi pekne spracovaná, takže nastavenie nie je nič zložité.
Ako som už spomínal AGH funguje dobre hneď po vybalení z krabice, ale každý si môže nastavenia prispôsobiť ako uzná za vhodné.
Ako používať domáci AGH z internetu
V LAN sieti sme zabezpečili aby klienti obdržali od DHCP správnu IP adresu DNS servera, ale ako nastaviť AGH na zariadeniach mimo LAN sieťe, resp. ak sme na WAN? Ideálne je ak máme kontrolu nad vlastnou VPN sieťou. Musíme sa jednoducho z WAN vedieť pripojiť do vlastnej LAN siete a máme vyhraté.
Predpokladám, že cez VPN sme sa pripojili do našej LAN siete, kde beží AGH. Prvá myšlienka, ktorá ma napadla, bolo použitie súkromného DNS. Ten však vyžaduje FQDN, čo by nebol problém (v mojom prípade, vytvorením host overrides na pfSense napr. dns.example.com). Problém vidím v tom, že okrem FQDN, Android vyžaduje DoT (príp. DoH). Toto sa mi podarilo vyriešiť v nastaveniach AGH, kde som zapol šifrovanie, nastavil Meno servera, certifikát a súkromný kľúč od Let’s Encrypt. Ak to máme správne nastavené, tak AGH by mal počúvať aj na porte 853
nmap -p 853 192.168.1.109
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-10 07:56 CET
Nmap scan report for dns.example.com (192.168.1.109)
Host is up (0.00035s latency).
PORT STATE SERVICE
853/tcp open domain-s
Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds
Ak AGH nepočúva na porte 853 (DoT), tak to môže vyzerať následovne
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-10 07:33 CET
Nmap scan report for dns.example.com (192.168.1.109)
Host is up (0.00030s latency).
PORT STATE SERVICE
853/tcp closed domain-s
Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds
Teraz v mobile nastavíme súkromný DNS na FQDN aké sme si vytvorili (podotýkam, že cert. od LE musí byť na dané meno vystavený a platný)). Teraz by nám mal fungovať AGH v mobile cez DoT.

Ak sme mimo LAN a prihlásime sa do vlastnej LAN cez VPN, tak môžeme aktivovať súkromný DNS. Toto je dobre a funkčné riešenie, ale vyžaduje aktiváciu DNS až po prihlásení do VPN siete.
Po čase som prišiel na úplne triviálne a pragmatické riešenie, kde nepotrebujem nastavovať ani DoT, ani LE certifikát a ani FQDN. Jednoducho stačí nastaviť resp. zmeniť v aplikácii wireguard DNS server na 192.168.1.109. WG aplikáciu môžeme nechať trvale spustenú a kdekoľvek sa pripojíme k internetu, tak vždy budeme využívať AGH. Neviem prečo ma napadajú tie najdôležitejšie veci až na konci 😀
AGH funguje smerom ku klientom v nešifrovanom režime na klasickom UDP porte 53, ale smerom k verejným resolverom funguje šifrovane, či už sa jedna o DoH na porte 443, DoT na porte 853, alebo DoQ, UDP 853 (v závislosti od nastavenia upstreamov) .

V logu to môže vyzerať nejak takto
LAN tcp 192.168.1.109:43202 -> 104.16.132.229:443
WAN tcp 12.34.56.78:44463 (192.168.1.109:43202) -> 104.16.132.229:443
LAN tcp 192.168.1.109:39480 -> 94.140.14.15:853
WAN tcp 12.34.56.78:20801 (192.168.1.109:39480) -> 94.140.14.15:853
LAN udp 192.168.1.109:57215 -> 94.140.14.14:853
WAN udp 12.34.56.78:55085 (192.168.1.109:57215) -> 94.140.14.14:853
V riadku 1 je vidieť ako AGH kontaktuje resolver cez port 443. Čiže komunikácia je šifrovaná cez DoH. V riadku 2 je zase komunikácia z pohľadu WAN strany. Riadky 3 a 4 sú podobné ako predošlé riadky (1 a 2) ale komunikácia prebiaha cez DoT (port 853). Nakoniec riadky 5 a 6 (DoQ) komunikujú cez port 853, avšak všimnite si protokol UDP.
Ak máme rozsiahlejšiu LAN sieť a nemôžeme dôverovať niektorým zamestnancom, tak musíme šifrovať aj od klientov k AGH. O tomto som už písal vyššie. Tento model som otestoval úspešne aj v rámci LAN. Dokonca na chvíľu som si dovolil otvoriť aj port 853 do internetu a fungovalo to výborne. Test bol veľmi krátky (radovo desiatky sekúnd) aby nedošlo k zneužitiu AGH.
Záver
Na PC a NTB odporúčam nainštalovať Adguard blokovač reklám priamo do prehliadača ako rozšírenie. V princípe tam bude fungovať aj blokovanie reklám na YouTube. Na Android, príp. IOS veľmi pomôže blokovanie na úrovni DNS. Niektoré Android aplikácie majú dosť agresívne reklamy a hlavne tých sa je treba zbaviť.