MAATRIX / Блог / AdGuard Home на Ubuntu 24.04: пошаговая установка

AdGuard Home на Ubuntu 24.04: пошаговая установка

MAATRIX

Реклама в приложениях на телефоне, трекеры на сайтах, баннеры в смарт-тивишных прошивках — всё это можно вырезать одним движением, если фильтровать DNS-запросы до того, как они уйдут во внешний мир. AdGuard Home делает это на уровне сети: один сервер — и блокировка работает для всех устройств дома или в офисе, без установки блокировщиков на каждый гаджет. Ниже — установка с нуля на чистом VPS с Ubuntu 24.04, с шифрованным DNS и рабочими правилами фильтрации.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Почему AdGuard Home, а не Pi-hole

Оба продукта решают одну задачу — DNS-фильтрацию по чёрным спискам, но AdGuard Home удобнее в паре моментов, которые важны именно на арендованном сервере:

  • DoH/DoT из коробки. AdGuard Home сразу умеет принимать запросы по DNS-over-HTTPS и DNS-over-TLS без отдельной надстройки — это критично, если сервер стоит не дома за роутером, а в дата-центре и к нему обращаются клиенты через интернет напрямую.
  • Встроенный веб-интерфейс полнее. Статистика по клиентам, детальный лог запросов с причиной блокировки, редактор правил в синтаксисе AdBlock — всё в одном месте, без плагинов.
  • Родительский контроль и per-client правила настраиваются в интерфейсе, а не через отдельные конфиги.

Минус тоже есть: AdGuard Home чуть прожорливее по памяти на больших списках правил, и сообщество меньше, чем у Pi-hole — часть инструкций из интернета придётся адаптировать самостоятельно. Для сервера с 1 ГБ ОЗУ и парой десятков клиентов разницы вы не заметите.

Что понадобится

  • VPS на Ubuntu 24.04 LTS, минимум 1 vCPU / 1 ГБ RAM (с запасом на будущее — 2 ГБ комфортнее).
  • Публичный IP-адрес — если план стоит фильтровать запросы не только внутри локальной сети, а принимать DoH-клиентов из интернета.
  • Открытые порты: 53 (DNS, TCP+UDP), 3000 (первичная настройка веб-интерфейса, потом можно закрыть), 80/443 (для DoH и Let's Encrypt, опционально), 853 (DoT, опционально).
  • Root-доступ по SSH.

Если сервер только разворачивается, для быстрого старта подойдёт готовая VPS-конфигурация — дальше по инструкции всё выполняется на чистой Ubuntu 24.04, без дополнительных пакетов от хостера.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Подготовка сервера

Первым делом обновляем систему и открываем нужные порты в файрволе. Если ufw ещё не настроен — по шагам это разобрано в статье про настройку UFW на Ubuntu 24.04, здесь — минимальный набор команд.

apt update && apt upgrade -y
apt install -y curl ufw

Открываем порты для DNS и веб-интерфейса:

ufw allow 22/tcp
ufw allow 53/tcp
ufw allow 53/udp
ufw allow 3000/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 853/tcp
ufw enable

Порт 3000 нужен только на этапе первичной настройки через браузер — после того как всё заработает, его стоит закрыть или ограничить по IP, оставив только 53 и, при необходимости, 443/853.

Важный момент для Ubuntu 24.04: система по умолчанию использует systemd-resolved, который слушает 53-й порт локально (127.0.0.53). Это конфликтует с AdGuard Home, если тот тоже пытается занять 53-й порт на всех интерфейсах. Отключаем встроенный DNS-стаб перед установкой:

systemctl disable --now systemd-resolved
rm /etc/resolv.conf
echo "nameserver 1.1.1.1" > /etc/resolv.conf

Это разрывает локальное разрешение имён через systemd-resolved, поэтому временный резолвер (1.1.1.1) нужен, чтобы сервер сам мог обращаться в интернет во время установки — после запуска AdGuard Home можно будет переключить /etc/resolv.conf на 127.0.0.1.

Установка AdGuard Home

Официальный скрипт установки делает всё за один вызов — скачивает бинарник под архитектуру сервера, создаёт systemd-сервис и запускает его:

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

Флаг -v включает подробный вывод — полезно, если установка вдруг зависнет на каком-то шаге, сразу видно, на чём. Скрипт кладёт бинарник в /opt/AdGuardHome/, создаёт юнит AdGuardHome.service и запускает его.

Проверяем, что сервис поднялся:

systemctl status AdGuardHome

Если видите active (running) — половина дела сделана. Дальше настройка через веб-интерфейс.

Первичная настройка через веб-интерфейс

Открываем в браузере http://<ip-сервера>:3000 — попадаете в мастер первоначальной настройки AdGuard Home.

  1. Web Interface — порт, на котором будет работать панель управления (по умолчанию 80, но лучше оставить нестандартный, например 3000, чтобы не занимать 80-й порт, если планируете вешать на него ещё и Caddy для DoH).
  2. DNS Server — порт 53, слушать на всех интерфейсах (0.0.0.0), если сервер будет принимать запросы извне, или только на 127.0.0.1/локальном интерфейсе, если фильтрация нужна только для самого сервера.
  3. Администратор — логин и пароль. Пароль генерируйте длинный, это единственная точка входа в управление фильтрацией.

После мастера AdGuard Home сразу начинает резолвить DNS-запросы с базовым списком блокировок (AdGuard DNS filter включён по умолчанию).

Проверка с самого сервера:

dig @127.0.0.1 doubleclick.net

Домен из чёрного списка должен вернуться с 0.0.0.0 или NXDOMAIN — значит, блокировка работает.

Настройка списков фильтрации

Списки правил — раздел Filters → DNS blocklists в интерфейсе. По умолчанию подключён только базовый AdGuard DNS filter, но список стоит расширить:

СписокЧто блокирует
AdGuard DNS filterБазовая реклама и трекеры (включён по умолчанию)
AdAway Default BlocklistРеклама в мобильных приложениях
OISD Blocklist BigШирокий агрегированный список рекламы/трекеров/фишинга
Steven Black's hostsКлассический hosts-based список, хорошо чистит малварные домены
WindowsSpyBlockerТелеметрия Windows, если в сети есть Windows-машины

Добавляются по URL в разделе Filters → DNS blocklists → Add blocklist — интерфейс сам подставляет ссылки на популярные списки при вводе имени, либо вставляете URL вручную.

Для тонкой настройки есть Custom filtering rules — синтаксис похож на AdBlock:

||example-tracker.com^
@@||exception-domain.com^

Первая строка блокирует домен и все поддомены, вторая — добавляет исключение (например, если легитимный сервис случайно попал под общий список).

Не переусердствуйте со списками сразу: слишком агрессивная фильтрация (особенно списки уровня OISD Full) иногда ломает работу легитимных сервисов — стриминг, банковские приложения, авторизацию через соцсети. Начните с 2-3 умеренных списков, понаблюдайте пару дней в разделе Query Log, потом расширяйте.

DoH и DoT: шифрованный DNS наружу

Если сервер должен принимать запросы от клиентов через интернет (а не только из локальной сети), обычный DNS по 53-му порту без шифрования — не лучшая идея: провайдер клиента увидит все домены, которые тот резолвит, а сам трафик легко подменить. AdGuard Home умеет отдавать DoH и DoT напрямую, без отдельного reverse-proxy, но для валидного TLS-сертификата понадобится домен.

В разделе Settings → Encryption включаем шифрование:

  1. Указываем домен, привязанный к IP сервера (см. настройку домена и DNS с нуля на Ubuntu 24.04, если домен ещё не привязан).
  2. Выбираем автоматический выпуск сертификата через Let's Encrypt (AdGuard Home сам пройдёт ACME-проверку по 80-му порту) либо загружаем существующий сертификат вручную.
  3. После сохранения AdGuard Home поднимает DoH на 443-м порту (путь /dns-query) и DoT на 853-м.

Клиент подключается к DoH через адрес вида https://dns.example.com/dns-query, к DoT — tls://dns.example.com. В Android, iOS, Windows 11 и большинстве современных браузеров это настраивается в пару кликов в системных настройках DNS. Тема того, как DoH меняет видимость DNS-трафика для сети и зачем это может понадобиться, разобрана подробнее в статье про DNS-over-HTTPS и доступ к ИИ-сервисам.

Если вместо встроенного TLS вы предпочитаете отдельный reverse-proxy (например, чтобы держать сертификаты централизованно для нескольких сервисов на сервере), можно поставить перед AdGuard Home Caddy — как это сделать, описано в установке Caddy с авто-SSL на Ubuntu 24.04.

Подключение клиентов

На роутере (лучший вариант для всей сети сразу). В настройках DHCP/DNS роутера указываем IP сервера с AdGuard Home как основной DNS-сервер. Тогда фильтрация работает для всех устройств в сети автоматически, без настройки каждого гаджета отдельно.

На отдельном устройстве, если менять DNS на роутере нельзя:

  • Android 9+: Настройки → Сеть → Приватный DNS → указать hostname сервера (для DoT).
  • iOS 14+: через профиль конфигурации DNS (генерируется в разделе Setup Guide самого AdGuard Home — там же есть готовые mobileconfig-файлы).
  • Windows 11: Настройки → Сеть → изменить DNS-сервер, выбрать «Зашифровано (DNS через HTTPS)» и вписать адрес DoH-сервера.
  • Браузер (Firefox/Chrome): в настройках безопасного DNS указать «свой провайдер» и вставить URL DoH.

Для устройств, которые не поддерживают DoH/DoT нативно, можно оставить plain DNS по 53-му порту — но тогда сервер стоит держать доступным только для доверенных IP через ufw, а не открытым всему интернету.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

AdGuard Home упадёт, если сервер перегрузится списками фильтрации?

При разумном наборе (3-5 списков среднего размера) на 1 ГБ RAM работает стабильно. Если добавляете тяжёлые списки вроде OISD Full и видите рост потребления памяти в htop, увеличьте план сервера — это дешевле, чем разбираться с OOM-киллером.

Можно ли использовать AdGuard Home вместе с VPN на том же сервере?

Да, это частая связка: VPN поднимает туннель, а DNS-запросы клиентов внутри туннеля идут на AdGuard Home на том же сервере — реклама режется прямо в шифрованном канале. Главное — не забыть открыть DNS-порт именно на интерфейсе VPN, а не только на публичном.

Что делать, если после отключения systemd-resolved сломалось разрешение доменов на самом сервере?

Проверьте содержимое /etc/resolv.conf — файл не должен быть символической ссылкой на несуществующий /run/systemd/resolve/stub-resolv.conf. Пропишите статический nameserver 127.0.0.1 (после того как AdGuard Home запущен) или временно 1.1.1.1.

Нужен ли домен обязательно?

Нет, если фильтрация нужна только внутри локальной сети или VPN — там достаточно IP-адреса и plain DNS. Домен нужен только для валидного TLS-сертификата под DoH/DoT для внешних клиентов.

AdGuard Home и Pi-hole можно ставить на один сервер одновременно?

Технически можно на разных портах, но смысла немного — оба решают одну задачу, и держать два конкурирующих DNS-фильтра усложняет диагностику проблем. Выбирайте один.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →