Як налаштувати 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 потрапить у бази скарг.