Сколько RAM нужно для Pi-hole
Pi-hole — это DNS-сервер, который блокирует рекламу и трекеры на уровне всей сети: один раз настроил на роутере или отдельном хосте — и реклама пропадает на всех устройствах, включая телефоны и смарт-ТВ, без установки блокировщиков на каждое из них. Проблема в том, что официальные требования Pi-hole («512 МБ хватит») написаны для Raspberry Pi на 5-10 устройств в квартире, а если вы ставите его на VPS для семьи, офиса или как публичный резолвер — цифры быстро меняются. Разберёмся, откуда берётся расход памяти и сколько реально нужно для разных сценариев.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Сколько RAM нужно Pi-hole: короткий ответ
Сам процесс pihole-FTL (движок, который резолвит и фильтрует запросы) в покое занимает 30-60 МБ. Вместе с lighttpd (веб-панель), dnsmasq-конфигом и служебными процессами базовая установка на пустой системе укладывается в 100-150 МБ. Дальше расход растёт нелинейно — от трёх факторов: количества устройств в сети, объёма блок-листов (gravity list) и глубины хранения логов запросов.
Практический ориентир:
| RAM сервера | Что реально получится |
|---|---|
| 512 МБ | Работает, но впритык: 5-15 устройств, короткий gravity list, короткое хранение логов. На грани при обновлении списков |
| 1 ГБ | Комфортно для дома/квартиры: 15-40 устройств, средние блок-листы (200-500 тыс. доменов), логи за 1-7 дней |
| 2 ГБ | Офис или несколько семей: 40-150 устройств, крупные списки, логи за 30+ дней, запас под другие сервисы на той же VPS |
| 4 ГБ+ | Публичный резолвер, десятки-сотни одновременных клиентов, долгое хранение и активный дашборд |
Это не жёсткие пороги — Pi-hole официально называет 512 МБ минимумом, и это правда работает. Но «работает» и «работает без сюрпризов при обновлении списков раз в неделю» — разные вещи, и дальше объясню почему.
Из чего складывается потребление памяти
Четыре компонента съедают RAM неравномерно, и знать их долю полезно, чтобы понимать, что настраивать при нехватке памяти.
Gravity list (блок-листы) в SQLite. Все домены из подключённых списков (адблоков вроде StevenBlack, OISD, AdGuard DNS filter) хранятся в /etc/pihole/gravity.db. FTL держит часть этой базы в памяти для быстрого поиска. Один только список StevenBlack — это порядка 150-180 тысяч доменов, OISD Big — больше миллиона. Чем больше списков вы подключили в веб-панели, тем больше памяти уходит на индекс и тем дольше идёт pihole -g (обновление gravity) — на слабой машине этот процесс может временно съедать в 2-3 раза больше RAM, чем сам сервис в покое.
Query log и статистика. Каждый DNS-запрос, который прошёл через Pi-hole, логируется в /etc/pihole/pihole-FTL.db и частично кэшируется в памяти для построения графиков в дашборде («Query Log», «Top Domains» и т.д.). Параметр MAXDBDAYS в pihole-FTL.conf определяет, сколько дней хранить историю — по умолчанию 365 дней, что для маленького сервера избыточно.
dnsmasq/FTL кэш резолвинга. Размер DNS-кэша (CACHE_SIZE, по умолчанию 10000 записей) напрямую влияет на память — каждая закэшированная запись занимает немного места, но при активной сети с сотнями уникальных доменов в день это заметно.
Веб-интерфейс (lighttpd + PHP). Сам по себе лёгкий, 10-20 МБ, но если на той же VPS крутится что-то ещё — Nginx как реверс-прокси, панель мониторинга — учитывайте это отдельно.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверЧто происходит при нехватке памяти
На VPS с 512 МБ без свопа типичный сценарий поломки выглядит так: раз в неделю по расписанию (cron) запускается обновление gravity list, pihole -g разворачивает и переиндексирует базу, память забивается почти полностью, OOM killer (Out-Of-Memory killer ядра Linux) убивает случайный процесс — иногда сам pihole-FTL, иногда SSH-сессию администратора. В логах это видно так:
dmesg | grep -i "killed process"
# Out of memory: Killed process 1234 (pihole-FTL)
После такого убийства DNS-резолвинг в сети просто останавливается: устройства, у которых Pi-hole прописан как единственный DNS-сервер, теряют интернет целиком, а не только рекламу. Второй частый симптом — не полный OOM, а свопинг: система начинает активно писать в swap, запросы резолвятся с задержкой в секунды вместо миллисекунд, и это выглядит как «интернет тормозит», хотя канал ни при чём. Про то, как правильно рассчитать своп под такую нагрузку, есть отдельный разбор — правильный размер swap для VPS, но для Pi-hole своп — это подстраховка на пиковый момент обновления списков, а не постоянный режим работы: если сервис живёт в свопе весь день, памяти системно не хватает.
Как снизить потребление RAM
Если сервер ограничен по памяти (типичная бюджетная VPS на 512 МБ-1 ГБ), есть рабочие рычаги без потери функциональности блокировки.
Сократить срок хранения логов. В /etc/pihole/pihole-FTL.conf (или через pihole-FTL --config в новых версиях 6.x):
MAXDBDAYS=7
DBINTERVAL=5.0
Хранение недели вместо года снижает размер pihole-FTL.db и, соответственно, память под её кэш.
Уменьшить DNS-кэш, если на сети немного уникальных доменов:
CACHE_SIZE=4000
Не плодить блок-листы без разбора. Пять узкоспециализированных списков хуже одного качественного (StevenBlack unified + один список для трекеров) с точки зрения памяти и скорости pihole -g. Проверить текущий размер gravity:
sqlite3 /etc/pihole/gravity.db "SELECT COUNT(*) FROM gravity;"
Если там больше 500 тысяч записей на слабом сервере — есть смысл вычистить дубли и пересекающиеся списки в настройках Adlists.
Отключить лишнее логирование запросов, если приватность важнее аналитики (PRIVACYLEVEL=2 скрывает домены в логах, но не резолвинг — это чуть снижает объём записываемых данных).
Проверить фактическое потребление до и после изменений:
free -h
systemctl status pihole-FTL
ps aux | grep pihole-FTL
Установка и запуск на VPS: практическая конфигурация
Ставить Pi-hole на VPS, а не только на домашний Raspberry Pi, имеет смысл в двух случаях: сервер уже арендован под что-то ещё (VPN, файлохранилище) и простаивающей памяти хватит на ещё один лёгкий сервис, либо нужен DNS-фильтр, доступный не из одной локальной сети, а с любого устройства через VPN.
Официальный установщик:
curl -sSL https://install.pi-hole.net | bash
Или через Docker Compose — удобнее для VPS, где хочется изоляции и лёгкого бэкапа:
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "8080:80/tcp"
environment:
TZ: "Europe/Moscow"
WEBPASSWORD: "смените-этот-пароль"
FTLCONF_LOCAL_IPV4: "10.0.0.2"
volumes:
- "./etc-pihole:/etc/pihole"
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
restart: unless-stopped
Важный нюанс безопасности: DNS-порт 53 нельзя открывать на публичный интернет без ограничений — иначе сервер быстро становится участником DNS-амплификации в DDoS-атаках третьих лиц, и хостинг вправе заблокировать такой трафик. Правильная схема — держать Pi-hole доступным только внутри приватной сети через VPN: клиенты подключаются по WireGuard, получают внутренний IP, и именно этот IP прописывают как DNS-сервер. Настройка самого туннеля разобрана в статье WireGuard на Ubuntu 24.04 — после неё достаточно прописать IP Pi-hole в конфиге WireGuard-клиента как DNS =, и фильтрация рекламы будет работать из любой точки, где поднят туннель.
Для 512 МБ-1 ГБ RAM минимальный тариф VPS с 1 vCPU обычно достаточен — Pi-hole не требователен к процессору, узкое место именно память при пиковых обновлениях списков. Если планируете на том же сервере что-то ещё (Nextcloud, домашний файлообменник, второй VPN-профиль), закладывайте отдельный запас — статья что делать при нехватке RAM разбирает общие признаки нехватки памяти и как их ловить заранее, до падения сервиса.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Хватит ли 512 МБ RAM для Pi-hole в реальности?
Да, для 5-15 устройств и умеренных блок-листов — работает стабильно. Риск в моменте еженедельного обновления gravity list: добавьте хотя бы 512 МБ-1 ГБ свопа как подстраховку, иначе есть шанс поймать OOM killer.
Почему Pi-hole ест больше памяти со временем?
Обычно это растущий query log (pihole-FTL.db) при MAXDBDAYS, выставленном на большой срок, либо накопление блок-листов без чистки дублей. Проверьте размер базы: du -sh /etc/pihole/pihole-FTL.db.
Можно ли поставить Pi-hole на тот же сервер, где уже стоит VPN?
Да, это одна из самых частых связок — VPN даёт безопасный доступ к DNS-серверу извне, а Pi-hole фильтрует рекламу для всех, кто подключён. Суммарно закладывайте память под оба сервиса, а не только под один.
Что выбрать при 2 ГБ RAM: Pi-hole или AdGuard Home?
Обе программы легковесные и по памяти почти не отличаются на сопоставимой нагрузке — выбор скорее про интерфейс и набор функций (у AdGuard Home встроен DoH/DoT из коробки), а не про ресурсы.
Влияет ли количество устройств в сети линейно на память?
Нет, гораздо сильнее влияет частота DNS-запросов (браузеры, стриминговые приложения и IoT-устройства спамят запросами намного активнее, чем условный принтер), поэтому 20 «тихих» устройств легче 5 смарт-ТВ с активными приложениями.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →