Jak skonfigurować AdGuard Home na VPS
Zainstaluj AdGuard Home na Ubuntu, przejdź kreator pierwszego uruchomienia, zabezpiecz interfejs WWW, włącz DNS-over-HTTPS i DNS-over-TLS, skieruj urządzenia na swój resolver i nie wystawiaj otwartego serwera DNS, którego cały internet może nadużyć.

AdGuard Home to self-hosted sinkhole DNS i resolver z interfejsem WWW. Może blokować reklamy, trackery i złośliwe domeny dla każdego urządzenia, które używa go jako DNS — telefony, laptopy, smart TV i inne projekty na VPS. W przeciwieństwie do rozszerzenia przeglądarki działa nawet w aplikacjach, które ignorują plik hosts. Na VPS przydaje się, gdy chcesz to samo filtrowanie w podróży albo nie chcesz Raspberry Pi w sieci domowej.
Niebezpieczny domyślny stan, którego nie wolno zostawiać, to otwarty resolver: jeśli UDP/TCP 53 jest osiągalny z całego internetu bez kontroli dostępu, obcy użyją Twojego VPS do amplifikacji DNS i dostaniesz skargi o nadużycia. Ten poradnik instaluje AdGuard Home na Ubuntu, wiąże DNS z localhost albo prywatnym interfejsem WireGuard, chyba że świadomie wystawiasz szyfrowany DNS, chowa pulpit za HTTPS i pokazuje, jak laptopy i telefony mogą używać DNS-over-HTTPS (DoH) albo DNS-over-TLS (DoT) bez otwierania klasycznego portu 53 na świat.
Do czego AdGuard Home się nadaje
Zwykle porównuje się go z Pi-hole. AdGuard Home to jeden plik binarny z wbudowanym UI, opcjonalnymi szyfrowanymi frontendami DNS i ustawieniami per klient. Możesz go uruchomić w Docker albo jako usługę systemd. Na VPS Hiddence dobrze łączy się z prywatnym VPN: urządzenia wchodzą do WireGuard, wysyłają DNS na VPS tunelem i nigdy nie wystawiają portu 53 publicznie.
- Blokowanie w całej sieci bez aplikacji na każdym urządzeniu
- DoH (443) i DoT (853), więc DNS nie idzie jawnym tekstem w publicznej sieci Wi-Fi
- Dziennik zapytań i statystyki: widać, które urządzenie gada z którą domeną
- Własne upstreamy (Quad9, Cloudflare albo własny Unbound)
- Mały ślad — VPS 1 GB przefiltruje gospodarstwo i kilku dodatkowych klientów
Wymagania
Domena jest potrzebna, jeśli chcesz zaufany certyfikat dla DoH/DoT i pulpitu. Możesz testować na HTTP i IP serwera, ale tak nie zostawiaj. Jeśli systemd-resolved już trzyma port 53 na Ubuntu, zwolnimy go, zanim AdGuard Home zwiąże DNS.
- VPS Ubuntu 22.04 lub 24.04 z root/sudo
- 1 GB RAM wystarczy do użytku osobistego
- Domena lub subdomena (dns.example.com) z rekordem A na VPS
- Dostęp SSH; opcjonalnie WireGuard, jeśli DNS ma być tylko w tunelu
Krok 1. Zwolnij port 53 i zainstaluj AdGuard Home
Ubuntu Server często odpala systemd-resolved jako stub na 127.0.0.53:53. AdGuard Home chce 53 na interfejsach, które wybierzesz. Instalator potrafi to zrobić sam, ale jawny krok chroni przed na wpół zepsutym DNS na samym VPS (serwer nadal musi rozwiązywać nazwy pakietów).
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. Kreator pierwszego uruchomienia
Instalator wypisuje URL, zwykle http://YOUR_IP:3000/. Otwórz go, utwórz administratora z długim hasłem i wybierz adresy nasłuchu. Dla publicznego VPS bezpieczny pierwszy układ to: Admin Web na 127.0.0.1:3000 (potem Caddy z przodu) albo na 80/443 po TLS; DNS na 127.0.0.1:53 plus interfejs VPN, nie na 0.0.0.0:53. Jeśli naprawdę potrzebujesz DNS „jak w LAN” dla znajomych, wolisz DoH/DoT na 443/853 z uwierzytelnianiem, a nie otwarty 53/udp.
Wybierz upstreamy DNS, którym ufasz. Wielu bierze https://dns.quad9.net/dns-query albo Cloudflare. Włącz równoległe zapytania, jeśli chcesz szybszy failover. Włącz domyślne listy filtrów, resztę dodawaj później — pięćdziesiąt list pierwszego dnia uniemożliwia debugowanie, gdy strona się psuje.
Krok 3. Reverse proxy i HTTPS dla pulpitu
Gdy kreator skończy, AdGuard Home zwykle przenosi UI na port 80. To koliduje z Caddy albo Nginx, jeśli hostujesz też witryny. Czysty wzorzec: web AdGuard Home na 127.0.0.1:8080, DNS na 127.0.0.1:53, Caddy na 443 i dla pulpitu, i dla 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. Włącz DNS-over-HTTPS i DNS-over-TLS
W ustawieniach szyfrowania włącz szyfrowanie, ustaw nazwę serwera na dns.example.com i wskaż AdGuard Home pliki certyfikatów — albo te, które trzyma Caddy, albo te, które sam AdGuard Home uzyska, jeśli słucha na 443. DoH to zwykle https://dns.example.com/dns-query. DoT to dns.example.com:853. Jeśli Caddy już trzyma 443, niech Caddy zdejmuje TLS i robi reverse proxy ścieżki DoH na zwykły HTTP-port DoH AdGuard Home, albo niech AdGuard Home słucha na 443, a pulpit trafi na inną subdomenę.
Sprawdź klientem, zanim zmienisz DNS na wszystkich urządzeniach. Na laptopie z nowoczesnym 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. Skieruj prawdziwe urządzenia na swój resolver
Windows 11 i nowsze wydania Androida umieją szablon DoH. iOS może użyć profilu konfiguracji albo klienta z DoH. Firefox i Chromium też przyjmują własny URL DoH. Na domowym routerze ustawiaj WAN DNS tylko jeśli router umie DoT/DoH; w przeciwnym razie odpal WireGuard i ustaw DNS na IP VPN VPS, żeby klasyczny DNS nigdy nie szedł przez internet.
- Android 9+: Prywatny DNS (DoT) → dns.example.com
- Firefox: Ustawienia → Sieć → DNS over HTTPS → własny URL https://dns.example.com/dns-query
- Urządzenia Apple: podpisany mobileconfig albo aplikacja z DoH/DoT
- Inny VPS: ustaw resolv.conf albo systemd-resolved na IP WireGuard tej instancji AdGuard
- Nie ustawiaj IP tego VPS jako DNS w przypadkowych sieciach publicznych bez szyfrowania
Krok 6. Firewall — zamknij otwarty rekurencyjny DNS
Ta sekcja zapobiega przykrej niespodziance. Zezwól na SSH, HTTPS i opcjonalnie 853/tcp dla DoT. Nie zezwalaj na 53/udp z 0.0.0.0/0, chyba że masz bardzo konkretny, limitowany i uwierzytelniony projekt — i nawet wtedy raczej nie powinieneś.
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, białe listy i klienci
Zacznij od domyślnego filtra DNS AdGuard i jednej listy malware. Gdy strona źle się zachowuje, sprawdź dziennik zapytań, potem dodaj konkretną regułę allowlist zamiast wyłączać całe blokowanie. Używaj nazw klientów (po IP albo ClientID w URL DoH), żeby twardziej filtrować smart TV i łagodniej służbowego laptopa. Włączaj bezpieczne wyszukiwanie tylko jeśli naprawdę tego chcesz — zaskakuje ludzi, którzy nie prosili o przepisywany Google.
- Dziennik zapytań: znajdź zablokowaną domenę, potem dodaj do białej listy, jeśli to fałszywy alarm
- Ustawienia klienta: inne listy blokad na urządzenie
- Niedozwoleni klienci: blokuj zakresy, których nie posiadasz
- Limitowanie częstotliwości: włącz, jeśli kiedykolwiek wystawisz więcej niż garstkę użytkowników
Rozwiązywanie problemów
Jeśli sam VPS nie robi apt update, zepsułeś lokalny DNS, zwalniając port 53 — wstaw statyczny resolver w resolved.conf jak wyżej. Jeśli urządzenia „mają internet”, a reklamy nadal ładują się, omijają Twój DNS (sztywne resolvery, DoH w przeglądarce albo aplikacja z własnym DNS). Jeśli pulpit jest pusty, patrzysz na złą instancję albo nadal na port 3000 po tym, jak kreator przeniósł UI.
- apt nie działa: sprawdź /etc/resolv.conf i systemd-resolved
- Port 53 zajęty: ss -tulpn, wyłącz stub listener
- Błędy certyfikatu DoH: nazwa hosta musi zgadzać się z SAN certyfikatu
- Reklamy nadal widać: DoH przeglądarki do innego dostawcy nadpisuje OS
- Dużo RAM: dziennik + za dużo list filtrów — przytnij listy i skróć retencję logu
Lista kontrolna bezpieczeństwa
Interfejs WWW to panel administracyjny. Unikalne hasło, tylko HTTPS i nie publikuj URL. Aktualizuj AdGuard Home; skrypt instalacji i UI mają ścieżkę aktualizacji. Ogranicz 443, jeśli tylko Twoje urządzenia mają używać DoH — HTTP basic auth na ścieżce DoH albo dostęp tylko przez WireGuard jest dużo bezpieczniejszy niż sławny otwarty resolver.
- Brak publicznego 53/udp
- HTTPS na pulpicie
- Silne hasło administratora w menedżerze haseł
- Dla urządzeń rodzinnych wolisz WireGuard + wewnętrzny DNS
- Kopiuj AdGuardHome.yaml poza serwer
Wskazówki
- Przed każdą aktualizacją kopiuj /opt/AdGuardHome/AdGuardHome.yaml
- Dedykowana subdomena; nie dziel jej z niezwiązanym CMS
- Jeśli już masz Caddy, niech Caddy trzyma 443, a AdGuard Home zostaje na localhost
- Zapisz URL DoH dla urządzeń — zapomnisz go
- Połącz z poradnikami o utwardzaniu SSH i firewallu, żeby VPS nie był „bezpieczny tylko od strony DNS”
AdGuard Home na VPS jest prosty: zwolnij port 53 lokalnie, odpal instalator, dokończ kreator z silnym hasłem administratora, daj UI HTTPS, włącz DoH/DoT i trzymaj klasyczny DNS z dala od publicznego internetu. Skieruj urządzenia na szyfrowany endpoint albo IP VPN, zacznij od małego zestawu filtrów i używaj dziennika zapytań, gdy coś padnie. To prywatny resolver, którym naprawdę sterujesz — nie publiczny otwarty DNS, przez który VPS wyląduje w bazach nadużyć.