Назад к блогу
19 августа 2026Руководства

Как установить AdGuard Home на VPS

Установка AdGuard Home на Ubuntu, мастер первого запуска, защита веб-интерфейса, DNS-over-HTTPS и DNS-over-TLS, настройка устройств и защита от открытого резолвера, которым может пользоваться весь интернет.

Как установить AdGuard Home на VPS

AdGuard Home — собственный DNS-фильтр с веб-интерфейсом. Он может отсекать рекламу, трекеры и вредоносные домены для всех устройств, которые ходят через него как через DNS: телефоны, ноутбуки, телевизоры и другие серверы. В отличие от расширения в браузере, это работает и у приложений, которые hosts не читают. На VPS это удобно, когда нужен тот же фильтр в поездках или не хочется держать Raspberry Pi дома.

Главная ошибка — открытый резолвер: если UDP/TCP 53 доступен всему интернету без ограничений, чужие начнут гонять через ваш VPS DNS-трафик (в том числе для усиления атак), и прилетят жалобы. Ниже ставим AdGuard Home на Ubuntu, вешаем обычный DNS на localhost или на интерфейс WireGuard, панель — на 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 ГБ ОЗУ хватает на квартиру и несколько лишних клиентов

Что потребуется

Домен нужен, если хотите нормальный сертификат для DoH/DoT и панели. Проверка по HTTP и IP возможна, но так оставлять нельзя. Если systemd-resolved уже занял порт 53, его нужно освободить, иначе AdGuard Home не привяжется к DNS.

  • VPS Ubuntu 22.04 или 24.04 с root/sudo
  • 1 ГБ ОЗУ достаточно для личного использования
  • Домен или поддомен (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

# Кто держит порт 53:
ss -tulpn | grep ':53'

# Типичный приём на Ubuntu: выключить stub, временно указать внешний резолвер ОС
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
# В настройках AdGuard Home привяжите веб-интерфейс к 127.0.0.1:8080
# Пример Caddyfile:

dns.example.com {
    reverse_proxy 127.0.0.1:8080
}

# Когда Caddy запущен:
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 (kdig из knot-dnsutils, если установлен):
# 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 через 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'
# Если DNS только на WireGuard (пример iface wg0, 10.8.0.1):
# ufw allow in on wg0 to any port 53 proto udp
ufw enable
ufw status verbose

# Убедитесь, что 53 не торчит в интернет:
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 браузера на другого провайдера перекрывает ОС
  • Много ОЗУ: журнал + слишком много списков — урежьте списки и срок хранения лога

Краткий список по защите

Веб-интерфейс — админка. Уникальный пароль, только 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 попадёт в базы жалоб.