Як наладзіць AdGuard Home на VPS
Усталёўка AdGuard Home на Ubuntu, майстар першага запуску, абарона вэб-інтэрфейсу, DNS-over-HTTPS і DNS-over-TLS, наладка прылад і абарона ад адкрытага рэзолвера, якім можа карыстацца ўвесь інтэрнэт.

AdGuard Home — уласны DNS-фільтр і рэзолвер з вэб-інтэрфейсам. Ён можа адсякаць рэкламу, трэкеры і шкодныя дамены для ўсіх прылад, якія ходзяць праз яго як праз DNS: тэлефоны, ноўтбукі, тэлевізары і іншыя VPS-праекты. У адрозненне ад пашырэння ў браўзеры, гэта працуе і ў праграм, якія файл hosts не чытаюць. На VPS гэта зручна, калі патрэбны той самы фільтр у паездках або не хочацца трымаць Raspberry Pi дома.
Галоўная памылка — адкрыты рэзолвер: калі UDP/TCP 53 даступны ўсяму інтэрнэту без абмежаванняў, чужыя пачнуць ганяць праз ваш VPS DNS-трафік (у тым ліку для ўзмацнення нападаў), і прыляцяць скаргі. Ніжэй ставім AdGuard Home на Ubuntu, вешаем звычайны DNS на localhost або на інтэрфейс WireGuard, калі вы свядома не адкрываеце шыфраваны DNS, панэль — на HTTPS, а ноўтбукі і тэлефоны падключаем праз DNS-over-HTTPS (DoH) або DNS-over-TLS (DoT), не адкрываючы класічны порт 53 свету.
Для чаго добры AdGuard Home
Звычайнае параўнанне — Pi-hole. AdGuard Home — адзін бінарнік, убудаваны вэб-інтэрфейс, пры жаданні шыфраваныя франтэнды DNS і налады па кліентах. Можна ў Docker або як службу systemd. На VPS Hiddence ён добра стыкуецца з асабістым VPN: прылады ўваходзяць у WireGuard і шлюць DNS на сервер тунэлем, порт 53 звонку не свяціцца.
- Блакіроўка на ўзроўні сеткі без праграмы на кожнай прыладзе
- DoH (443) і DoT (853): DNS не ідзе адкрытым тэкстам у чужы Wi-Fi
- Часопіс запытаў і статыстыка: відаць, якая прылада да якога дамена хадзіла
- Свае вышэйстаячыя серверы (Quad9, Cloudflare або свой Unbound)
- Невялікае спажыванне рэсурсаў — 1 ГБ VPS хапае на кватэру і некалькі лішніх кліентаў
Што спатрэбіцца
Дамен патрэбны, калі хочаце нармальны сертыфікат для DoH/DoT і панэлі. Праверка па HTTP і IP магчымая, але так пакідаць нельга. Калі systemd-resolved ужо заняў порт 53 на Ubuntu, яго трэба вызваліць, інакш AdGuard Home не прывяжацца да DNS.
- VPS Ubuntu 22.04 або 24.04 з root/sudo
- 1 ГБ RAM дастаткова для асабістага карыстання
- Дамен або паддамен (dns.example.com) з A-запісам на VPS
- SSH; пры жаданні WireGuard, калі DNS патрэбны толькі ўнутры тунэлю
Крок 1. Вызваліце порт 53 і пастаўце AdGuard Home
На Ubuntu Server часта круціцца заглушка systemd-resolved на 127.0.0.53:53. AdGuard Home хоча 53 на тых інтэрфейсах, якія вы абярэце. Інсталятар умее гэта сам, але яўны крок ратуе ад сітуацыі, калі на VPS ламаецца развязанне імён для apt.
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Крок 2. Майстар першага запуску
Інсталятар друкуе URL, звычайна http://YOUR_IP:3000/. Адкрыйце яго, стварыце адміністратара з доўгім паролем і абярыце адрасы праслухоўвання. Для публічнага VPS бяспечны старт: вэб-панэль на 127.0.0.1:3000 (потым спераду Caddy) або на 80/443 пасля TLS; DNS — на 127.0.0.1:53 і на VPN-інтэрфейс, не на 0.0.0.0:53. Калі DNS патрэбны «як у лакалцы» для знаёмых, лепей DoH/DoT на 443/853 з абмежаваннем доступу, а не адкрыты 53/udp.
Абярыце вышэйстаячыя DNS, якім давяраеце. Часта бяруць https://dns.quad9.net/dns-query або Cloudflare. Паралельныя запыты паскараюць запасны варыянт пры збоі. Уключыце стандартныя спісы фільтраў, астатнія дадавайце пазней: пяцьдзесят спісаў у першы дзень робяць адладку немагчымай, калі «сайт не адкрываецца».
Крок 3. Зваротны проксі і HTTPS для панэлі
Пасля майстра інтэрфейс часта пераязджае на порт 80 і канфліктуе з Caddy або Nginx. Зручная схема: вэб AdGuard Home на 127.0.0.1:8080, DNS на 127.0.0.1:53, Caddy на 443 і для панэлі, і для 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.comКрок 4. Уключыце DNS-over-HTTPS і DNS-over-TLS
У наладах шыфравання ўключыце яго, укажыце імя dns.example.com і сертыфікаты — або тыя, што захоўвае Caddy, або тыя, што сам AdGuard Home атрымае, калі слухае 443. DoH звычайна https://dns.example.com/dns-query. DoT — dns.example.com:853. Калі 443 ужо заняў Caddy, няхай ён здымае TLS і проксуе шлях DoH на нешыфраваны порт AdGuard Home, або аддайце 443 самой праграме, а панэль павесьце на іншы паддамен.
Праверце кліентам, перш чым мяняць DNS на ўсіх прыладах. На ноўтбуку з сучасным 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.comКрок 5. Накіруйце прылады на свой рэзолвер
Windows 11 і свежы Android умеюць шаблон DoH. iOS — профіль або праграма з DoH. Firefox і Chromium прымаюць свой URL DoH. На хатнім маршрутызатары WAN DNS мае сэнс мяняць толькі калі ёсць DoT/DoH; інакш падніміце WireGuard і ўкажыце DNS на VPN-IP сервера, каб звычайны DNS не ішоў праз інтэрнэт.
- Android 9+: «Прыватны DNS» (DoT) → dns.example.com
- Firefox: налады сеткі → DNS over HTTPS → свой URL https://dns.example.com/dns-query
- Прылады Apple: падпісаны mobileconfig або праграма з DoH/DoT
- Іншы VPS: resolv.conf або systemd-resolved на WireGuard-IP гэтага AdGuard
- Не ўказвайце голы IP гэтага VPS як DNS у чужой сетцы без шыфравання
Крок 6. Фаервол: не пакідайце адкрыты рэкурсіўны DNS
Гэты крок ратуе ад непрыемнасцей. Дазвольце SSH, HTTPS і пры патрэбе 853/tcp для DoT. Не адкрывайце 53/udp з 0.0.0.0/0, пакуль у вас няма вельмі вузкай, абмежаванай па частаце і доступе схемы — і нават тады звычайна не варта.
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'Фільтры, белыя спісы і кліенты
Пачніце са стандартнага DNS-фільтра AdGuard і аднаго спісу шкодных даменаў. Калі сайт «ламаецца», глядзіце часопіс запытаў і дадавайце кропкавае выключэнне, а не выключайце ўсё блакіраванне. Імёны кліентаў (па IP або ClientID у URL DoH) даюць жорстчэй фільтраваць тэлевізар і мякчэй — рабочы ноўтбук. «Бяспечны пошук» уключайце толькі калі вы яго сапраўды хочаце: людзі здзіўляюцца, калі Google раптам перапісваецца.
- Часопіс запытаў: знойдзіце заблакіраваны дамен і пры ілжывым спрацоўванні дазвольце яго
- Налады кліента: розныя спісы на розныя прылады
- Забароненыя кліенты: чужыя дыяпазоны IP
- Абмежаванне частаты: уключыце, калі карыстальнікаў больш, чым «некалькі сваіх»
Калі нешта не працуе
Калі на самім VPS не ідзе apt update, вы зламалі лакальны DNS, вызваляючы порт 53 — вярніце статычны рэзолвер у resolved.conf, як вышэй. Калі «інтэрнэт ёсць», а рэклама ўсё роўна грузіцца, прылада абходзіць ваш DNS (свой DoH у браўзеры, жорстка прапісаныя рэзолверы, сваё DNS у праграмы). Пустая панэль — вы глядзіце не той асобнік або ўсё яшчэ порт 3000 пасля таго, як майстар перанёс інтэрфейс.
- apt не працуе: /etc/resolv.conf і systemd-resolved
- Порт 53 заняты: ss -tulpn, выключыце stub
- Памылкі сертыфіката DoH: імя хоста павінна супадаць з SAN сертыфіката
- Рэклама відаць: DoH браўзера на іншага правайдара перакрывае АС
- Шмат RAM: часопіс + занадта шмат спісаў — урэжце спісы і тэрмін захоўвання лога
Кароткі спіс па абароне
Вэб-інтэрфейс — адмінка. Унікальны пароль, толькі HTTPS, URL не свяціце. Абнаўляйце AdGuard Home: і скрыпт усталёўкі, і інтэрфейс умеюць абнаўляць. Калі DoH патрэбны толькі вашым прыладам, абмяжуйце 443: базовая HTTP-аўтэнтыфікацыя на шляху DoH або доступ толькі праз WireGuard нашмат бяспечнейшыя за «знакаміты адкрыты рэзолвер».
- Няма публічнага 53/udp
- HTTPS на панэлі
- Складаны пароль адміністратара ў менеджары пароляў
- Для хатніх прылад лепей WireGuard і DNS унутры тунэлю
- Файл AdGuardHome.yaml капіюйце з сервера
Парады
- Перад абнаўленнем захоўвайце /opt/AdGuardHome/AdGuardHome.yaml
- Асобны паддамен, не дзяліце яго з чужой CMS
- Калі Caddy ужо ёсць, аддайце яму 443, AdGuard Home пакіньце на localhost
- Запішыце URL DoH для прылад — вы яго забудзеце
- Мае сэнс закрыць SSH і фаервол па іншых гайдах, не толькі «наладзіць DNS»
AdGuard Home на VPS ставіцца так: вызваляеце 53 лакальна, запускаеце інсталятар, праходзіце майстар з нармальным паролем, вешаеце панэль на HTTPS, уключаеце DoH/DoT і не аддаяце класічны DNS у інтэрнэт. Прылады глядзяць на шыфраваную кропку або на VPN-IP, фільтраў спачатку няшмат, пры паломках глядзіце часопіс запытаў. Гэта рэзолвер, якім вы кіруеце, а не адкрыты DNS, з-за якога VPS трапіць у базы скаргаў.