Сколько RAM нужно для AdGuard Home
AdGuard Home — DNS-сервер, который блокирует рекламу и трекеры сразу для всей сети: настроил один раз на роутере или отдельном хосте — и реклама пропадает на телефонах, смарт-ТВ и приставках без единого блокировщика на устройствах. В отличие от Pi-hole, из коробки умеет DNS-over-HTTPS и DNS-over-TLS, что для многих и есть главная причина выбора. Но официальная рекомендация «256 МБ хватит» написана для Raspberry Pi в квартире на десяток устройств, а на VPS для семьи, офиса или как публичный резолвер с шифрованными запросами цифры другие. Разберём, куда уходит память и сколько закладывать под разные сценарии.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Сколько RAM нужно AdGuard Home: короткий ответ
Сам бинарник AdGuardHome в покое, без клиентов, занимает 20-40 МБ — он написан на Go и не тянет за собой веб-сервер вроде lighttpd или интерпретатор PHP, как Pi-hole. Это его структурное отличие: меньше служебных процессов, компактнее база. Но как только подключаются реальные клиенты и шифрованные протоколы (DoH/DoT/DoQ), потребление растёт за счёт TLS-хендшейков, кэша резолвинга и статистики запросов.
Практический ориентир:
| RAM сервера | Что реально получится |
|---|---|
| 256 МБ | Работает впритык: 5-10 устройств, только обычный DNS (без DoH/DoT), короткие списки фильтрации, минимум логов |
| 512 МБ | Комфортно для дома/квартиры: 10-30 устройств, DoH/DoT включены, средние списки блокировки, статистика за неделю |
| 1 ГБ | Офис или несколько семей: 30-100 устройств, крупные списки (AdGuard DNS filter + несколько доп.), логи за 30 дней |
| 2 ГБ+ | Публичный шифрованный резолвер, десятки одновременных TLS-подключений, долгая статистика, запас под соседние сервисы на той же VPS |
Это не жёсткие границы, а ориентир: AdGuard Home официально называет минимумом 256 МБ ОЗУ и 128 МБ дискового пространства, и на голом DNS без шифрования это правда работает. Разница появляется, когда включаете DoH/DoT — каждое TLS-соединение держит контекст в памяти, и это заметно на слабой машине под нагрузкой.
Из чего складывается потребление памяти
Четыре компонента формируют основной расход, и знание их доли помогает понять, что настраивать при нехватке памяти.
Списки фильтрации в памяти процесса. AdGuard Home хранит правила блокировки не в SQLite, как gravity list у Pi-hole, а прямо в оперативной памяти процесса — для быстрого поиска по домену. Стандартный «AdGuard DNS filter» — это порядка 70-100 тысяч правил, а если добавить OISD Big (больше миллиона доменов) или несколько специализированных списков сразу — суммарный объём в памяти растёт линейно. Проверить, сколько правил реально подключено, можно в веб-панели на вкладке Filters, либо через API:
curl -s http://127.0.0.1:3000/control/filtering/status | jq '.filters | length'
DNS-over-HTTPS/TLS/QUIC. Это ключевое отличие от Pi-hole по расходу памяти. Каждое зашифрованное соединение — это TLS-сессия с собственным буфером и криптографическим контекстом. При десятках одновременных клиентов через DoH (например, весь трафик семьи или офиса идёт зашифрованным DNS) память под сетевой стек ощутимо больше, чем при обычном UDP на 53 порту. Подробнее о том, зачем вообще нужен DoH и как он связан с доступом к нейросетям и другим сервисам, разобрано в статье DNS-over-HTTPS и доступ к ИИ.
Query log и статистика. Каждый запрос логируется в querylog.json (или в SQLite-подобном формате во внутреннем движке статистики) и частично держится в памяти для графиков дашборда — «Top clients», «Top blocked domains» и так далее. Параметры querylog.interval и statistics.interval в AdGuardHome.yaml определяют глубину хранения — по умолчанию 90 дней для статистики, что для маленького сервера избыточно.
Кэш резолвинга (upstream cache). Размер DNS-кэша (dns.cache_size, по умолчанию около 4 МБ памяти под запись, но реальный объём зависит от числа уникальных доменов) напрямую влияет на потребление — активная сеть с сотнями разных доменов в день заметно нагружает этот кэш.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверЧто происходит при нехватке памяти
На VPS с 256-512 МБ без свопа сценарий поломки обычно такой: включили DoH для всех устройств дома, вечером все одновременно смотрят стриминг и листают соцсети — десятки TLS-сессий одновременно, память забивается почти полностью, OOM killer (Out-Of-Memory killer ядра Linux) убивает случайный процесс, часто сам AdGuardHome. В логах это видно так:
dmesg | grep -i "killed process"
# Out of memory: Killed process 1234 (AdGuardHome)
После такого убийства DNS-резолвинг в сети останавливается целиком — если AdGuard Home прописан единственным DNS-сервером, устройства теряют интернет, а не только рекламу. Второй частый симптом — не полный OOM, а активный свопинг: система начинает писать в swap, TLS-хендшейки резолвятся с задержкой, и это выглядит как «интернет тормозит», хотя канал ни при чём. Правильный расчёт свопа под такую нагрузку разобран в статье правильный размер swap для VPS — для AdGuard Home своп полезен как подстраховка на пиковый вечерний час, а не как постоянный режим работы.
Как снизить потребление RAM
Если сервер ограничен по памяти (типичная бюджетная VPS на 256-512 МБ), есть рабочие рычаги без потери качества фильтрации.
Сократить срок хранения статистики и логов. В AdGuardHome.yaml:
querylog:
enabled: true
interval: "168h" # 7 дней вместо 90
statistics:
enabled: true
interval: "168h"
После изменения нужен перезапуск службы:
systemctl restart AdGuardHome
Не плодить списки фильтрации без разбора. Один качественный список (AdGuard DNS filter) обычно эффективнее пяти пересекающихся. Посмотреть, сколько правил реально загружено:
curl -s http://127.0.0.1:3000/control/filtering/status | jq '.filters[] | {name: .name, rules: .rules_count}'
Если суммарно больше 500-700 тысяч правил на слабом сервере — стоит вычистить дубли в настройках Filters → DNS blocklists.
Ограничить upstream-кэш, если сеть небольшая и разных доменов немного:
dns:
cache_size: 4194304 # 4 МБ вместо дефолтных 32 МБ
Взвесить включение DoH/DoT. Если сервер откровенно слабый (256 МБ), а шифрованный DNS не критичен (например, весь трафик и так идёт через VPN-туннель), можно оставить только обычный DNS на 53 порту и не тратить память на TLS-контексты каждого клиента.
Проверить фактическое потребление до и после изменений:
free -h
systemctl status AdGuardHome
ps aux | grep AdGuardHome
Установка и запуск на VPS: практическая конфигурация
Ставить AdGuard Home на VPS вместо домашнего мини-компьютера имеет смысл в двух случаях: сервер уже арендован под VPN или файлохранилище и простаивающей памяти хватит на ещё один лёгкий сервис, либо нужен зашифрованный DNS-фильтр, доступный не из одной локальной сети, а с любого устройства через туннель.
Официальный установочный скрипт:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
Или через Docker Compose — удобнее для VPS с точки зрения изоляции и бэкапа конфигурации:
services:
adguardhome:
container_name: adguardhome
image: adguard/adguardhome:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "3000:3000/tcp" # первичная настройка веб-панели
- "853:853/tcp" # DNS-over-TLS
volumes:
- "./work:/opt/adguardhome/work"
- "./conf:/opt/adguardhome/conf"
restart: unless-stopped
Важный нюанс безопасности: 53 порт нельзя открывать на публичный интернет без ограничений — открытый DNS-резолвер быстро становится участником DNS-амплификации в DDoS-атаках третьих лиц, и хостинг вправе заблокировать такой трафик по жалобе. Правильная схема — держать AdGuard Home доступным только внутри приватной сети через VPN: клиенты подключаются по WireGuard, получают внутренний IP, и именно его прописывают как DNS-сервер в конфиге клиента (DNS =). Настройка самого туннеля разобрана в статье WireGuard на Ubuntu 24.04 — после подключения фильтрация рекламы и шифрованный DNS работают из любой точки, где поднят туннель, а не только дома.
Для 256-512 МБ RAM минимального тарифа VPS с 1 vCPU обычно достаточно — AdGuard Home не требователен к процессору, узкое место именно память при активном DoH и обновлении списков. Если на том же сервере планируется что-то ещё (файлообменник, второй VPN-профиль, панель мониторинга), закладывайте отдельный запас — статья что делать при нехватке RAM разбирает общие признаки нехватки памяти и как их ловить заранее, до падения сервиса.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Хватит ли 256 МБ RAM для AdGuard Home в реальности?
Да, для 5-10 устройств без DoH/DoT и с умеренными списками фильтрации — работает стабильно. Как только включаете шифрованный DNS для всей семьи, лучше закладывать хотя бы 512 МБ и небольшой своп на подстраховку вечерних пиков.
AdGuard Home ест меньше памяти, чем Pi-hole?
В базовой конфигурации без клиентов — да, за счёт отсутствия отдельного веб-сервера и PHP. Но при активном DoH/DoT разница сглаживается или может даже перевернуться, потому что TLS-сессии требовательны к памяти, а у Pi-hole шифрованный DNS не встроен по умолчанию.
Нужно ли больше памяти, если включить DNS-over-QUIC (DoQ)?
Не принципиально больше, чем для DoH/DoT — тот же порядок расхода на TLS-контекст соединения. Разница на практике определяется числом одновременных клиентов, а не конкретным зашифрованным протоколом.
Можно ли поставить AdGuard Home на тот же сервер, где уже стоит VPN?
Да, это одна из самых частых связок — VPN даёт безопасный доступ к DNS-серверу извне, а AdGuard Home фильтрует рекламу и опционально шифрует запросы для всех подключённых. Память считайте под оба сервиса сразу, не только под один.
Растёт ли память со временем без видимой причины?
Обычно это разросшаяся статистика (statistics.interval на большом сроке) или накопленные дубли в списках фильтрации. Проверьте размер рабочей директории: du -sh /opt/adguardhome/work.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →