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

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.
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. Параллельные запросы ускоряют запасной вариант при сбое. Включите стандартные списки фильтров, остальные добавляйте позже: пятьдесят списков в первый день делают отладку невозможной, когда «сайт не открывается».
Шаг 3. Обратный прокси и HTTPS для панели
После мастера интерфейс часто переезжает на порт 80 и конфликтует с Caddy или Nginx. Удобная схема: веб AdGuard Home на 127.0.0.1:8080, DNS на 127.0.0.1:53, Caddy на 443 и для панели, и для DoH.
# В настройках 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:
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, пока у вас нет очень узкой, ограниченной по частоте и по доступу схемы — и даже тогда обычно не стоит.
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 попадёт в базы жалоб.