Назад до блогу
Серпень 19, 2026Посібники

Як налаштувати AdGuard Home на VPS

Встановлення AdGuard Home на Ubuntu, майстер першого запуску, захист вебінтерфейсу, DNS-over-HTTPS і DNS-over-TLS, налаштування пристроїв і захист від відкритого резолвера, яким може користуватися весь інтернет.

Як налаштувати AdGuard Home на VPS

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.

bash
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. Паралельні запити прискорюють запасний варіант при збої. Увімкніть стандартні списки фільтрів, решту додавайте пізніше: п’ятдесят списків у перший день роблять налагодження неможливим, коли «сайт не відкривається».

Якщо порт 3000 з ноутбука не відкривається: ssh -L 3000:127.0.0.1:3000 root@YOUR_VPS_IP і в браузері http://127.0.0.1:3000/

Крок 3. Зворотний проксі й HTTPS для панелі

Після майстра інтерфейс часто переїжджає на порт 80 і конфліктує з Caddy або Nginx. Зручна схема: веб AdGuard Home на 127.0.0.1:8080, DNS на 127.0.0.1:53, Caddy на 443 і для панелі, і для DoH.

bash
# 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:

bash
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, поки у вас немає дуже вузької, обмеженої за частотою й доступом схеми — і навіть тоді зазвичай не варто.

bash
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 потрапить у бази скарг.