bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Розгортання Pi-hole та

calendar_month Jun 17, 2026 schedule 25 хв. читання visibility 24 переглядів
Развёртывание Pi-hole и Unbound на VPS: приватный DNS и блокировка рекламы
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Розгортання Pi-hole та Unbound на VPS: приватний DNS та блокування реклами

TL;DR

У цьому посібнику ми налаштуємо зв'язку Pi-hole та Unbound на віртуальному приватному сервері (VPS) для створення власного приватного, рекурсивного DNS-сервера з функцією блокування реклами та трекерів. Це забезпечить підвищену конфіденційність, безпеку та контроль над інтернет-трафіком для всіх пристроїв у вашій мережі.

  • Повне блокування реклами та трекерів на рівні DNS для всіх пристроїв.
  • Підвищена конфіденційність за рахунок використання власного рекурсивного DNS (Unbound), який не покладається на сторонніх DNS-провайдерів.
  • Покращена продуктивність за рахунок кешування DNS-запитів на вашому VPS.
  • Централізоване керування DNS-запитами та блокуваннями через зручний веб-інтерфейс Pi-hole.
  • Максимальний контроль над даними та відсутність передачі DNS-запитів третім особам.
  • Детальні покрокові інструкції для налаштування сервера на Ubuntu 24.04 LTS.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

У сучасному інтернеті реклама та трекери стали невід'ємною частиною користувацького досвіду, часто негативно впливаючи на швидкість завантаження сторінок, споживання трафіку і, що найважливіше, на конфіденційність. Стандартні DNS-сервери, що надаються інтернет-провайдерами або великими компаніями (Google, Cloudflare), хоч і швидкі, але збирають дані про ваші запити, що може бути використано для профілювання та таргетованої реклами.

Ця стаття присвячена розгортанню зв'язки Pi-hole та Unbound на вашому власному VPS. Pi-hole — це мережевий блокувальник реклами та трекерів, що працює на рівні DNS. Він перехоплює DNS-запити від усіх пристроїв у вашій мережі та блокує запити до відомих рекламних та трекерних доменів, повертаючи їм порожню відповідь. В результаті реклама просто не завантажується, що значно покращує швидкість перегляду та знижує споживання даних.

Unbound — це валідуючий, рекурсивний, кешуючий DNS-резолвер. На відміну від традиційних DNS-серверів, які просто перенаправляють ваші запити іншим серверам, Unbound самостійно виконує весь процес розв'язання доменного імені, починаючи з кореневих DNS-серверів і поступово спускаючись по ієрархії доменів. Це означає, що ваші DNS-запити не проходять через сторонніх провайдерів, забезпечуючи максимальну конфіденційність та стійкість до цензури, оскільки ніхто, крім вашого VPS, не знає, які сайти ви відвідуєте.

У підсумку, читач отримає повністю приватний та ефективний DNS-сервер, який:

  • Блокує рекламу, спливаючі вікна та трекери на всіх пристроях (комп'ютери, смартфони, Smart TV, IoT-пристрої), підключених до вашої мережі.
  • Підвищує конфіденційність, не передаючи ваші DNS-запити третім особам.
  • Прискорює завантаження веб-сторінок за рахунок блокування зайвого контенту та кешування DNS-запитів.
  • Надає детальну статистику DNS-запитів та блокувань через зручний веб-інтерфейс.
  • Забезпечує додатковий рівень безпеки за рахунок DNSSEC-валідації.

Альтернативи та чому self-hosted на VPS

Існує кілька альтернатив для блокування реклами та підвищення конфіденційності DNS:

  • Браузерні розширення: Ефективні лише для конкретного браузера і не працюють для додатків, Smart TV або інших пристроїв.
  • Публічні DNS-сервери з блокуванням реклами: Наприклад, AdGuard DNS або NextDNS. Вони блокують рекламу, але ви все одно довіряєте свої DNS-запити сторонньому провайдеру, який може збирати та аналізувати дані.
  • VPN-сервіси: Багато VPN пропонують блокування реклами та захист конфіденційності. Однак ви все одно довіряєте VPN-провайдеру, а DNS-запити часто обробляються їхніми власними серверами, а не рекурсивно.
  • Cloud-managed рішення: Деякі провайдери пропонують керовані DNS-сервіси з розширеними функціями, але вони зазвичай дорожчі та менш гнучкі в налаштуванні, ніж власне рішення.

Розгортання Pi-hole та Unbound на власному VPS пропонує унікальне поєднання переваг:

  • Повний контроль: Ви повністю контролюєте свої дані та налаштування.
  • Максимальна конфіденційність: Unbound гарантує, що ваші запити не проходять через сторонні DNS-сервери.
  • Гнучкість: Можливість додавати будь-які списки блокування, створювати власні правила, інтегрувати з іншими сервісами.
  • Економічність: Вартість невеликого VPS часто співставна з платними DNS-сервісами, але з набагато більшою функціональністю та конфіденційністю.
  • Доступ з будь-якої точки: Ваш Pi-hole/Unbound сервер буде доступний з будь-якої точки світу, де є інтернет, якщо ви налаштуєте до нього безпечний доступ (наприклад, через VPN на тому ж VPS).

Це ідеальне рішення для тих, хто цінує приватність, безпеку та хоче мати повний контроль над своїм інтернет-досвідом.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Для розгортання Pi-hole та Unbound не потрібні значні обчислювальні ресурси. Ці сервіси досить легкі і можуть працювати навіть на найскромніших конфігураціях.

Мінімальні вимоги:

  • CPU: 1 ядро (віртуальне). Сучасні процесори забезпечують достатню продуктивність.
  • RAM: 512 МБ. Для базової роботи Pi-hole та Unbound цього достатньо. Якщо плануєте велику кількість клієнтів (понад 50-100) або дуже великі списки блокування, може знадобитися 1 ГБ.
  • Диск: 10-20 ГБ SSD. Pi-hole та Unbound займають мало місця, але операційній системі та журналам потрібен деякий простір. SSD кращий для кращої продуктивності DNS-запитів та прискорення завантаження системи.
  • Мережа: 100 Мбіт/с. DNS-запити споживають дуже мало трафіку, тому навіть базова швидкість каналу буде більш ніж достатньою.
  • Операційна система: Ubuntu Server 24.04 LTS (або Debian 12/13).

Рекомендований VPS-план для завдання:

Для комфортної роботи, із запасом на майбутнє та можливістю встановлення додаткових невеликих сервісів (наприклад, WireGuard VPN на тому ж VPS), рекомендується наступний конфіг:

  • CPU: 2 vCPU
  • RAM: 2 ГБ
  • Диск: 40 ГБ SSD
  • Мережа: 1 Гбіт/с порт (з трафіком від 500 ГБ/міс)

Такий VPS із зазначеними характеристиками забезпечить стабільну роботу Pi-hole та Unbound, а також дозволить розширити функціонал сервера в майбутньому без необхідності апгрейду. Ви можете вибрати відповідний тариф у будь-якого надійного провайдера, що пропонує VPS з такими параметрами.

Коли потрібен dedicated, а не VPS

Для Pi-hole та Unbound як єдиного або основного завдання, виділений сервер (dedicated) зазвичай не потрібен. VPS повністю справляється з цим навантаженням. Однак, dedicated сервер може бути виправданий у наступних випадках:

  • Дуже високе навантаження: Якщо ви плануєте обслуговувати сотні або тисячі клієнтів (наприклад, великий офіс, громадська мережа) та використовувати дуже агресивні та об'ємні списки блокування.
  • Багато інших ресурсоємних сервісів: Якщо ваш сервер буде хостити не тільки Pi-hole/Unbound, але й ігрові сервери, високонавантажені веб-додатки, бази даних з великим обсягом операцій введення-виведення.
  • Вимоги до продуктивності диска: Якщо вам потрібен максимальний IOPS для специфічних завдань, які не пов'язані безпосередньо з DNS.
  • Повний контроль над обладнанням: Для деяких завдань, пов'язаних з безпекою або специфічними апаратними вимогами, виділений сервер може бути кращим.

Для більшості користувачів, які бажають приватний DNS та блокування реклами, VPS є оптимальним та економічно вигідним рішенням. Якщо ж ви все-таки вирішите, що вам потрібен виділений сервер, можна розглянути відповідний dedicated з аналогічними або вищими характеристиками.

Локація: на що впливає

Розташування вашого VPS впливає в основному на затримку (latency) DNS-запитів. Чим ближче сервер до вас географічно, тим швидше будуть розв'язуватися доменні імена. Для більшості завдань різниця в 50-100 мс непомітна, але для онлайн-ігор або високочастотного трейдингу це може бути критично.

  • Найближчий до вас датацентр: Ідеальний для особистого використання, щоб мінімізувати затримки.
  • Центральна локація: Якщо ви обслуговуєте користувачів з різних регіонів, виберіть датацентр у центральній точці, щоб усереднити затримку для всіх.
  • Закони та регулювання: У деяких випадках вибір локації може залежати від законодавства країни, особливо якщо ви турбуєтеся про конфіденційність даних.

Для більшості користувачів, які розгортають Pi-hole та Unbound, достатньо вибрати VPS у країні або регіоні, який знаходиться відносно близько до їхнього основного місцезнаходження.

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

Схема: Підготовка сервера
Схема: Підготовка сервера

Передбачається, що ви вже отримали доступ до свого VPS по SSH з правами користувача root. Ми будемо використовувати Ubuntu Server 24.04 LTS, як актуальну та стабільну версію на 2026 рік.

1. Оновлення системи

Перш за все, оновимо список пакетів та саму систему до актуального стану. Це забезпечить наявність останніх патчів безпеки та стабільних версій ПЗ.


sudo apt update && sudo apt upgrade -y # Оновлюємо список пакетів та встановлюємо оновлення
sudo apt autoremove -y # Видаляємо непотрібні пакети
sudo reboot # Перезавантажуємо сервер, якщо було оновлення ядра або критичних компонентів

2. Створення нового користувача та налаштування sudo

Працювати під обліковим записом root безпосередньо не рекомендується з міркувань безпеки. Створимо нового користувача та надамо йому права sudo.


sudo adduser username # Створюємо нового користувача. Замініть 'username' на бажане ім'я.
sudo usermod -aG sudo username # Додаємо користувача до групи sudo, щоб він міг виконувати команди з правами root

Тепер вийдіть із сесії root та увійдіть під новим користувачем:


exit # Вихід з root-сесії
ssh username@your_vps_ip # Вхід під новим користувачем

3. Налаштування автентифікації за SSH-ключами (рекомендується)

Використання SSH-ключів замість паролів значно підвищує безпеку. Якщо ви ще не налаштували це, зробіть це зараз. Згенеруйте SSH-ключ на вашій локальній машині (якщо у вас його немає):


ssh-keygen -t ed25519 -C "[email protected]" # Створює новий SSH-ключ Ed25519

Потім скопіюйте публічний ключ на ваш VPS:


ssh-copy-id username@your_vps_ip # Копіює ваш публічний ключ на сервер

Після успішного налаштування, вимкніть автентифікацію за паролем у файлі /etc/ssh/sshd_config. Відкрийте його:


sudo nano /etc/ssh/sshd_config # Відкриваємо конфігураційний файл SSH-сервера

Знайдіть та змініть наступні рядки (або додайте, якщо відсутні):


# Забороняємо вхід під root по SSH
PermitRootLogin no

# Вимикаємо автентифікацію за паролем
PasswordAuthentication no

# Вмикаємо автентифікацію за ключами
PubkeyAuthentication yes

Збережіть зміни (Ctrl+O, Enter, Ctrl+X) та перезапустіть SSH-сервіс:


sudo systemctl restart sshd # Перезапускаємо SSH-сервер

Переконайтеся, що ви можете увійти по SSH з ключем, перш ніж закривати поточну сесію.

4. Налаштування файрволу (UFW)

Для захисту сервера від несанкціонованого доступу налаштуємо брандмауер UFW (Uncomplicated Firewall).


sudo apt install ufw -y # Встановлюємо UFW
sudo ufw default deny incoming # Забороняємо всі вхідні з'єднання за замовчуванням
sudo ufw default allow outgoing # Дозволяємо всі вихідні з'єднання
sudo ufw allow ssh # Дозволяємо SSH (порт 22)
sudo ufw allow 53/tcp # Дозволяємо DNS (TCP) для Pi-hole
sudo ufw allow 53/udp # Дозволяємо DNS (UDP) для Pi-hole та Unbound
sudo ufw allow 80/tcp # Дозволяємо HTTP (TCP) для веб-інтерфейсу Pi-hole
sudo ufw enable # Вмикаємо файрвол
sudo ufw status # Перевіряємо статус файрволу

Якщо ви плануєте використовувати HTTPS для веб-інтерфейсу Pi-hole (через Caddy, як ми розглянемо пізніше), вам також знадобиться дозволити порт 443:


sudo ufw allow 443/tcp # Дозволяємо HTTPS (TCP)
sudo ufw reload # Перезавантажуємо правила UFW

5. Встановлення Fail2Ban

Fail2Ban захищає сервер від атак методом підбору паролів, блокуючи IP-адреси, з яких відбуваються численні невдалі спроби входу.


sudo apt install fail2ban -y # Встановлюємо Fail2Ban
sudo systemctl enable fail2ban # Вмикаємо автозапуск Fail2Ban при завантаженні
sudo systemctl start fail2ban # Запускаємо сервіс Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Копіюємо конфіг для локальних змін
sudo nano /etc/fail2ban/jail.local # Відкриваємо файл для налаштування

У файлі jail.local переконайтеся, що секція [sshd] активна (enabled = true) і, можливо, налаштуйте bantime (час блокування) та findtime (період для виявлення спроб) на свій розсуд. За замовчуванням налаштування досить хороші. Наприклад, можна збільшити bantime для більш тривалого блокування:


[DEFAULT]
bantime = 1h # Час блокування IP-адреси (за замовчуванням 10m)
findtime = 10m # Період, за який рахуються спроби (за замовчуванням 10m)
maxretry = 5 # Кількість спроб до блокування (за замовчуванням 5)

[sshd]
enabled = true

Збережіть зміни та перезапустіть Fail2Ban:


sudo systemctl restart fail2ban # Перезапускаємо Fail2Ban для застосування змін
sudo fail2ban-client status # Перевіряємо статус Fail2Ban
sudo fail2ban-client status sshd # Перевіряємо статус SSH-захисту

Тепер ваш сервер готовий до встановлення Pi-hole та Unbound.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Ми будемо встановлювати Unbound першим, а потім Pi-hole, конфігуруючи Pi-hole для використання Unbound як свого єдиного висхідного (upstream) DNS-сервера.

1. Встановлення Unbound

Unbound — це рекурсивний DNS-резолвер, який буде безпосередньо взаємодіяти з кореневими DNS-серверами, забезпечуючи максимальну конфіденційність. Ми встановимо його з офіційних репозиторіїв Ubuntu 24.04 LTS.


sudo apt update # Оновлюємо список пакетів
sudo apt install unbound -y # Встановлюємо Unbound версії 1.19.0 (актуально для Ubuntu 24.04 LTS)

Після встановлення необхідно налаштувати Unbound для роботи з Pi-hole. Ми створимо окремий конфігураційний файл, щоб не змінювати основний.


sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf # Створюємо новий конфігураційний файл для Unbound

Вставте наступний вміст у файл pi-hole.conf. Цей конфіг налаштовує Unbound на прослуховування лише локального інтерфейсу, виконання рекурсивних запитів, увімкнення DNSSEC-валідації та кешування відповідей.


server:
    # Порт, на якому Unbound буде слухати запити
    port: 5335
    # Прослуховувати лише локальний інтерфейс (для Pi-hole)
    interface: 127.0.0.1
    # Вимкнути прослуховування всіх інтерфейсів
    do-not-query-address: 0.0.0.0/0
    do-not-query-address: ::0/0

    # Дозволити запити лише з localhost (де буде Pi-hole)
    access-control: 127.0.0.1 allow

    # Увімкнути DNSSEC-валідацію
    auto-trust-anchor-file: "/var/lib/unbound/root.key"

    # Увімкнути логування запитів
    verbosity: 0 # 0 для мінімального логування, 1 для більш детального

    # Оптимізація продуктивності
    num-threads: 1 # Кількість потоків (зазвичай 1 достатньо для VPS)
    msg-cache-size: 128m # Розмір кешу повідомлень (рекомендується 128MB для 2GB RAM)
    rrset-cache-size: 256m # Розмір кешу ресурсних записів
    # Збільшення лімітів для запобігання помилок при великому навантаженні
    outgoing-range: 8192
    num-queries-per-thread: 4096
    aggressive-nsec: yes # Прискорює розв'язання неіснуючих доменів
    do-ip4: yes
    do-ip6: no # Вимикаємо IPv6, якщо не використовується або якщо провайдер не підтримує
    prefer-ip6: no
    harden-glue: yes # Зміцнює перевірку склеювальних записів
    harden-dnssec-stripped: yes # Забороняє повернення невалідних DNSSEC відповідей
    harden-referral-path: yes # Зміцнює перевірку шляху до рефералів
    use-caps-for-id: yes # Покращує захист від атак по кешу
    private-address: 192.168.0.0/16 # Вказуємо приватні IP-діапазони, щоб Unbound не намагався їх розв'язати
    private-address: 10.0.0.0/8
    private-address: 172.16.0.0/12
    private-address: 169.254.0.0/16
    private-address: fd00::/8
    private-address: fe80::/10
    hide-version: yes # Приховуємо версію Unbound
    # Вимикаємо DNS64, якщо не потрібно
    do-daemonize: yes
    root-hints: "/var/lib/unbound/root.hints" # Шлях до файлу з кореневими DNS-серверами

Збережіть файл (Ctrl+O, Enter, Ctrl+X). Тепер завантажимо актуальні кореневі DNS-сервери та ключ DNSSEC.


sudo wget -O /var/lib/unbound/root.hints https://www.internic.net/domain/named.root # Завантажуємо актуальні кореневі DNS-сервери
sudo unbound-anchor -a /var/lib/unbound/root.key # Генеруємо та оновлюємо trust anchor для DNSSEC
sudo systemctl enable unbound # Вмикаємо автозапуск Unbound при завантаженні
sudo systemctl restart unbound # Перезапускаємо Unbound для застосування нової конфігурації
sudo systemctl status unbound # Перевіряємо статус Unbound. Має бути 'active (running)'

Перевіримо, що Unbound слухає на порту 5335 і може розв'язувати домени:


dig @127.0.0.1 -p 5335 google.com # Перевіряємо розв'язання домену через Unbound

Ви повинні побачити відповідь з IP-адресами google.com. Якщо ви бачите помилку, перевірте конфігурацію та логи Unbound (sudo journalctl -u unbound).

2. Встановлення Pi-hole

Pi-hole буде використовувати Unbound як свого висхідного DNS-сервера. Встановлення Pi-hole виконується за допомогою зручного скрипта.


sudo apt install curl -y # Встановлюємо curl, якщо його ще немає
curl -sSL https://install.pi-hole.net | sudo bash # Запускаємо інсталяційний скрипт Pi-hole (версія 5.x, актуальна на 2026)

Інсталятор Pi-hole проведе вас через кілька кроків:

  1. Static IP Address: Інсталятор запропонує налаштувати статичну IP-адресу для вашого сервера. Підтвердьте використання поточної IP-адреси, яка є зовнішньою IP вашого VPS.
  2. Upstream DNS Provider: На цьому кроці ДУЖЕ ВАЖЛИВО вибрати Custom (Користувацький) та ввести 127.0.0.1#5335. Це вказує Pi-hole використовувати ваш локально запущений Unbound на порту 5335.
  3. Select Blocklists: Виберіть списки блокування за замовчуванням. Ви завжди зможете додати більше пізніше через веб-інтерфейс.
  4. Install Web Admin Interface: Обов'язково виберіть "On" для встановлення веб-інтерфейсу.
  5. Install Lighttpd Web Server: Підтвердьте встановлення веб-сервера Lighttpd.
  6. Log Queries: Виберіть рівень логування (за замовчуванням "Log all queries" — рекомендується).

Після завершення встановлення Pi-hole покаже вам екран з URL-адресою веб-інтерфейсу та тимчасовим паролем адміністратора. Обов'язково збережіть цей пароль!

Приклад виводу після встановлення:


...
[✓] Увімкнення автоматичних оновлень Pi-hole
[✓] Увімкнення оновлень списків блокування Pi-hole
[✓] Перезапуск служби lighttpd
[✓] FTL is listening on port 53
[✓] Блокування Pi-hole увімкнено

Веб-інтерфейс Pi-hole тепер доступний!
        http://your_vps_ip/admin

Настійно рекомендується змінити пароль за замовчуванням.
        Default password: your_generated_password

Встановлення завершено!

Тепер Pi-hole встановлено та налаштовано на використання Unbound. DNS-сервери на вашому VPS працюватимуть на порту 53 (Pi-hole), а Pi-hole перенаправлятиме запити до Unbound на порт 5335.

Конфігурація

Після встановлення Pi-hole та Unbound необхідно виконати кілька кроків для їх оптимального налаштування та перевірки працездатності.

1. Доступ до веб-інтерфейсу Pi-hole

Відкрийте веб-браузер і перейдіть за адресою http://your_vps_ip/admin (замініть your_vps_ip на реальну IP-адресу вашого VPS). Ви побачите сторінку входу Pi-hole.


# Якщо ви забули пароль, можете його скинути
pihole -a -p # Встановить новий випадковий пароль
pihole -a -p your_new_password # Встановить заданий пароль

Увійдіть, використовуючи пароль, який було показано після встановлення. Після входу ви побачите панель керування зі статистикою DNS-запитів, заблокованої реклами та іншою корисною інформацією.

2. Зміна пароля адміністратора Pi-hole

Відразу після першого входу рекомендується змінити тимчасовий пароль на більш надійний. Зробити це можна у веб-інтерфейсі: Settings > Web Interface > Password.

3. Додавання та керування списками блокування (Blocklists)

Pi-hole постачається з кількома списками блокування за замовчуванням. Ви можете додати більше для агресивнішої фільтрації. Перейдіть до Group Management > Adlists у веб-інтерфейсі.

Деякі популярні списки:

  • OISD Full: https://abp.oisd.nl/
  • StevenBlack's Unified Hosts File: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
  • Lightswitch05's Blocklist: https://raw.githubusercontent.com/Lightswitch05/Hosts/master/ads-and-tracking-extended.txt

Після додавання нових списків оновіть гравітаційну базу даних Pi-hole:


pihole -g # Оновить усі списки блокування

Це також можна зробити через веб-інтерфейс: Tools > Update Gravity.

4. Налаштування Whitelist/Blacklist

Якщо якийсь сайт не працює коректно через блокування Pi-hole, ви можете додати його домен до "білого списку" (Whitelist). Якщо ви хочете заблокувати конкретний домен, якого немає у списках, додайте його до "чорного списку" (Blacklist). Це робиться через Domains у веб-інтерфейсі.

5. Опціонально: Налаштування Conditional Forwarding

Якщо ви використовуєте Pi-hole у домашній мережі та хочете бачити імена пристроїв замість лише IP-адрес у логах Pi-hole, ви можете налаштувати "Conditional Forwarding". Це змусить Pi-hole перенаправляти запити для вашої локальної мережі (наприклад, .local або .lan) на ваш роутер або локальний DNS-сервер. Перейдіть до Settings > DNS > Advanced DNS settings та увімкніть Use Conditional Forwarding, вказавши IP-адресу вашого роутера та локальний домен.

6. Опціонально: Налаштування HTTPS для веб-інтерфейсу Pi-hole за допомогою Caddy

За замовчуванням веб-інтерфейс Pi-hole доступний за HTTP. Для підвищення безпеки рекомендується налаштувати HTTPS. Ми будемо використовувати Caddy — сучасний веб-сервер, який автоматично керує сертифікатами Let's Encrypt.

Встановлення Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Встановлюємо необхідні пакети
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Додаємо GPG-ключ Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Додаємо репозиторій Caddy
sudo apt update # Оновлюємо список пакетів
sudo apt install caddy -y # Встановлюємо Caddy (актуальна версія 2.x на 2026)
Налаштування Caddyfile:

Створіть DNS-запис (A/AAAA) для вашого домену (наприклад, pihole.yourdomain.com), що вказує на IP-адресу вашого VPS. Потім налаштуйте Caddy для проксіювання запитів до Pi-hole.


sudo nano /etc/caddy/Caddyfile # Відкриваємо конфігураційний файл Caddy

Замініть його вміст на наступне, змінивши pihole.yourdomain.com на ваш домен:


pihole.yourdomain.com {
    # Автоматичне отримання SSL-сертифіката від Let's Encrypt
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN} # Приклад для Cloudflare. Вкажіть свого DNS-провайдера та API-токен.
    }
    # Проксіюємо запити до веб-інтерфейсу Pi-hole
    reverse_proxy 127.0.0.1:80
    # Налаштування для приховування реальної IP-адреси клієнта від Pi-hole (опціонально)
    header_up X-Forwarded-For {remote_host}
    header_up Host {host}
    header_up X-Real-IP {remote_host}
}

Примітка: Для автоматичного отримання сертифікатів Let's Encrypt через DNS (щоб Caddy міг працювати на порту 80/443, навіть якщо вони зайняті Pi-hole), вам знадобиться DNS-провайдер з API-доступом (наприклад, Cloudflare, Namecheap, DigitalOcean). Вам потрібно буде встановити відповідний плагін Caddy та вказати API-токен. Якщо ви не хочете використовувати DNS-челендж, переконайтеся, що порти 80 і 443 вільні, або використовуйте інший порт для Caddy.

У разі використання DNS-челенджу, збережіть ваш API-токен у змінній середовища для безпеки.


# Приклад для Cloudflare
echo 'CLOUDFLARE_API_TOKEN="your_cloudflare_api_token"' | sudo tee -a /etc/environment
source /etc/environment # Завантажуємо змінну середовища

Перезапустіть Caddy для застосування змін:


sudo systemctl reload caddy # Перезавантажуємо Caddy
sudo systemctl enable caddy # Вмикаємо автозапуск Caddy
sudo ufw allow 80,443/tcp # Переконайтеся, що порти 80 і 443 дозволені у файрволі

Тепер ваш веб-інтерфейс Pi-hole буде доступний за HTTPS за адресою https://pihole.yourdomain.com/admin.

7. Перевірка працездатності

Після всіх налаштувань необхідно переконатися, що все працює як слід.

  1. Перевірка DNS-розділення через Pi-hole:
    
    dig @your_vps_ip example.com # Перевіряємо звичайний домен
    dig @your_vps_ip doubleclick.net # Перевіряємо рекламний домен - має бути заблокований (0.0.0.0 або ::)
    

    Ви повинні побачити, що example.com розділяється на його реальний IP, а doubleclick.net — на 0.0.0.0 або ::.

  2. Перевірка логів Pi-hole:
    
    pihole -t # Перегляд логів Pi-hole у реальному часі
    

    Ви побачите всі DNS-запити, що проходять через Pi-hole, та їхній статус (OK, Blocked, Cached).

  3. Налаштування клієнтського пристрою:

    Щоб почати використовувати ваш Pi-hole/Unbound сервер, необхідно налаштувати DNS-сервер на клієнтських пристроях (комп'ютер, смартфон) або на роутері у вашій домашній мережі. Вкажіть IP-адресу вашого VPS як основний DNS-сервер.

    • Windows: Налаштування мережі та інтернету -> Зміна параметрів адаптера -> Властивості вашого підключення -> Протокол Інтернету версії 4 (TCP/IPv4) -> Властивості -> Використовувати наступні адреси DNS-серверів.
    • macOS: Системні налаштування -> Мережа -> Вибрати підключення -> Додатково -> DNS.
    • Linux: Зазвичай у /etc/resolv.conf або через NetworkManager.
    • Роутер: Увійдіть у веб-інтерфейс вашого роутера та знайдіть налаштування WAN/LAN DNS. Рекомендується встановити IP-адресу вашого VPS як основний DNS-сервер для всієї локальної мережі.
  4. Тестування на клієнті:

    Після налаштування DNS на клієнті, відкрийте веб-браузер і відвідайте кілька сайтів з рекламою (наприклад, новинні портали). Ви повинні помітити значне зменшення або повну відсутність реклами. Перевірте також веб-інтерфейс Pi-hole, щоб переконатися, що запити від вашого клієнта відображаються та блокуються.

Тепер ваш приватний DNS-сервер з блокуванням реклами повністю функціональний!

Резервні копії та обслуговування

Регулярне резервне копіювання та своєчасне обслуговування є критично важливими для стабільної та безпечної роботи вашого Pi-hole та Unbound сервера.

1. Що резервувати

Для Pi-hole та Unbound необхідно регулярно зберігати наступні дані:

  • Конфігурація Pi-hole: Файли в директорії /etc/pihole/, які містять налаштування, списки блокування, білий та чорний списки.
  • База даних FTL: Основна база даних Pi-hole (/etc/pihole/pihole-FTL.db), що містить логи запитів, статистику та інформацію про клієнтів.
  • Конфігурація Unbound: Файли в директорії /etc/unbound/, особливо /etc/unbound/unbound.conf.d/pi-hole.conf.
  • Ключ Unbound DNSSEC: Файл /var/lib/unbound/root.key.
  • Кореневі підказки Unbound: Файл /var/lib/unbound/root.hints.

2. Простий скрипт авторезервування

Ви можете створити простий скрипт для автоматичного резервного копіювання. Цей скрипт буде архівувати важливі файли та зберігати їх в окремій директорії.


sudo mkdir -p /opt/backups/pihole_unbound # Створюємо директорію для резервних копій
sudo chown username:username /opt/backups/pihole_unbound # Надаємо права вашому користувачеві

nano /home/username/backup_pihole_unbound.sh # Створюємо скрипт резервного копіювання

Додайте наступний вміст у файл backup_pihole_unbound.sh:


#!/bin/bash

# Директорія для збереження резервних копій
BACKUP_DIR="/opt/backups/pihole_unbound"
# Ім'я файлу резервної копії з датою
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="$BACKUP_DIR/pihole_unbound_config_$DATE.tar.gz"

# Зупиняємо Pi-hole FTL та Unbound для консистентного резервування БД
sudo systemctl stop pihole-FTL.service
sudo systemctl stop unbound.service

# Створюємо архів конфігураційних файлів та бази даних
sudo tar -czvf "$BACKUP_FILE" \
    /etc/pihole \
    /etc/unbound/unbound.conf.d/pi-hole.conf \
    /var/lib/unbound/root.key \
    /var/lib/unbound/root.hints \
    --exclude='/etc/pihole/pihole-FTL.db' # Виключаємо БД з основного архіву, будемо резервувати окремо

# Копіюємо базу даних Pi-hole FTL
sudo cp /etc/pihole/pihole-FTL.db "$BACKUP_DIR/pihole-FTL.db.$DATE"

# Запускаємо сервіси назад
sudo systemctl start pihole-FTL.service
sudo systemctl start unbound.service

# Видаляємо старі резервні копії (старші 7 днів), залишаємо 7 останніх
find "$BACKUP_DIR" -type f -name "pihole_unbound_config_*.tar.gz" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "pihole-FTL.db.*" -mtime +7 -delete

echo "Backup created: $BACKUP_FILE and pihole-FTL.db.$DATE"

Зробіть скрипт виконуваним:


chmod +x /home/username/backup_pihole_unbound.sh # Робимо скрипт виконуваним

Тепер додайте цей скрипт до розкладу Cron для щоденного виконання:


crontab -e # Відкриваємо crontab для поточного користувача

Додайте наступний рядок у кінець файлу, щоб скрипт запускався щодня о 03:00 ночі:


0 3 * * * /home/username/backup_pihole_unbound.sh >> /var/log/pihole_unbound_backup.log 2>&1

Збережіть та закрийте файл. Тепер ваші резервні копії будуть створюватися автоматично.

3. Куди зберігати резервні копії

Зберігати резервні копії на тому ж VPS, де працюють сервіси, небезпечно. У разі виходу з ладу диска VPS, ви втратите і дані, і резервні копії. Рекомендується використовувати зовнішнє сховище:

  • Зовнішній S3-сумісний об'єктний сторадж: (наприклад, Amazon S3, DigitalOcean Spaces, Backblaze B2, MinIO). Це надійне та масштабоване рішення. Ви можете використовувати утиліти на кшталт rclone або s3cmd для автоматичної синхронізації резервних копій.
  • Інший VPS: Якщо у вас є другий VPS, ви можете використовувати rsync або scp для копіювання резервних копій на нього.
  • Локальний комп'ютер: Для дуже маленьких інсталяцій можна вручну завантажувати резервні копії по SSH/SFTP.

Приклад використання rclone для S3:


sudo apt install rclone -y # Встановлюємо rclone
rclone config # Налаштовуємо rclone для вашого S3-провайдера (дотримуйтесь інструкцій)

Потім додайте у ваш скрипт резервного копіювання після створення архіву рядок для копіювання на S3:


rclone copy "$BACKUP_DIR" "your_s3_remote:your_bucket_name" # Копіюємо директорію резервних копій на S3

4. Оновлення: rolling vs maintenance window

Регулярні оновлення ПЗ важливі для безпеки та отримання нових функцій.

  • Оновлення операційної системи:

    Рекомендується виконувати щомісяця. Для Ubuntu 24.04 LTS це:

    
    sudo apt update && sudo apt upgrade -y # Оновлення пакетів
    sudo apt autoremove -y # Видалення непотрібних пакетів
    

    Якщо було оновлення ядра, знадобиться перезавантаження: sudo reboot. Плануйте це на час найменшої активності.

  • Оновлення Pi-hole:

    Pi-hole має власний механізм оновлення:

    
    pihole -up # Оновить Pi-hole до останньої версії (актуальної на 2026 рік)
    

    Це безпечно виконувати в "rolling" режимі, тобто без попереднього планування зупинки сервісу. Pi-hole автоматично перезапустить свої компоненти.

  • Оновлення Unbound:

    Unbound оновлюється разом із системними пакетами через apt upgrade. Зазвичай це не вимагає ручного втручання, але після оновлення бажано перевірити статус sudo systemctl status unbound.

  • Оновлення списків блокування Pi-hole:

    Pi-hole автоматично оновлює списки блокування за розкладом (за замовчуванням раз на тиждень). Ви можете запустити це вручну:

    
    pihole -g # Оновить гравітаційну базу даних
    

Для критично важливих систем рекомендується проводити оновлення в рамках "maintenance window" (вікна обслуговування), щоб мінімізувати ризики та мати час для відкату у разі проблем. Для домашнього Pi-hole/Unbound сервера можна бути менш суворим, але завжди робіть резервну копію перед великими оновленнями.

Усунення несправностей + FAQ

Веб-інтерфейс Pi-hole недоступний.

Якщо ви не можете отримати доступ до веб-інтерфейсу Pi-hole за адресою http://your_vps_ip/admin або https://pihole.yourdomain.com/admin, перевірте наступне:

  • Перевірте статус веб-сервера Lighttpd: sudo systemctl status lighttpd. Він має бути active (running). Якщо ні, спробуйте sudo systemctl restart lighttpd.
  • Перевірте файрвол UFW: Переконайтеся, що порти 80 (HTTP) та/або 443 (HTTPS) дозволені: sudo ufw status. Якщо ні, додайте правила: sudo ufw allow 80/tcp та sudo ufw allow 443/tcp, потім sudo ufw reload.
  • Перевірте логи Pi-hole: cat /var/log/pihole/pihole.log та cat /var/log/lighttpd/error.log на наявність помилок.
  • Якщо використовуєте Caddy: Переконайтеся, що Caddy запущений (sudo systemctl status caddy) та його конфігурація (/etc/caddy/Caddyfile) коректна. Перевірте логи Caddy: sudo journalctl -u caddy.

Реклама все ще з'являється на клієнтських пристроях.

Якщо реклама все ще відображається, незважаючи на налаштування Pi-hole:

  • Перевірте DNS-налаштування клієнта: Переконайтеся, що ваш клієнтський пристрій (комп'ютер, телефон, роутер) налаштовано на використання IP-адреси вашого VPS як основного DNS-сервера.
  • Очистіть DNS-кеш на клієнті: На Windows: ipconfig /flushdns. На macOS: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. На Linux: sudo systemctl restart systemd-resolved або sudo /etc/init.d/nscd restart.
  • Перевірте логи Pi-hole: У веб-інтерфейсі Pi-hole (Query Log) подивіться, чи надходять запити від вашого клієнта та чи блокуються рекламні домени. Якщо запити не надходять, проблема в DNS-налаштуваннях клієнта. Якщо надходять, але не блокуються, можливо, рекламний домен відсутній у ваших списках блокування.
  • Оновіть гравітаційну базу даних: pihole -g або через веб-інтерфейс Tools > Update Gravity.
  • Додайте домен до Blacklist: Якщо ви бачите конкретний рекламний домен, який не блокується, додайте його вручну до Blacklist через веб-інтерфейс.

Роздільна здатність DNS повільна або не працює.

Повільне або непрацююче розпізнавання доменних імен може вказувати на проблеми з Unbound або зв'язкою Pi-hole/Unbound.

  • Перевірте статус Unbound: sudo systemctl status unbound. Має бути active (running). Якщо ні, спробуйте sudo systemctl restart unbound.
  • Перевірте конфігурацію Unbound: sudo unbound-checkconf. Переконайтеся, що немає помилок.
  • Перевірте, що Pi-hole використовує Unbound: У веб-інтерфейсі Pi-hole, у Settings > DNS, переконайтеся, що як Upstream DNS-сервер вказано 127.0.0.1#5335.
  • Перевірте, що Unbound слухає на 5335: sudo netstat -tulnp | grep 5335. Ви повинні побачити процес Unbound.
  • Перевірте зовнішній зв'язок VPS: Переконайтеся, що ваш VPS може виходити в інтернет: ping 8.8.8.8.
  • Перевірте логи Unbound: sudo journalctl -u unbound на наявність помилок або попереджень.

Який VPS-конфіг мінімально підійде?

Мінімально для Pi-hole та Unbound на Ubuntu Server 24.04 LTS підійде VPS з 1 vCPU, 512 МБ оперативної пам'яті, 10-15 ГБ SSD-диска та мережевим каналом від 100 Мбіт/с. Така конфігурація буде достатньою для обслуговування невеликої домашньої мережі або кількох користувачів. Однак, для більш стабільної роботи та можливості масштабування або додавання інших легких сервісів, рекомендується 2 vCPU, 2 ГБ RAM та 40 ГБ SSD.

Що обрати — VPS чи dedicated для цього завдання?

Для розгортання Pi-hole та Unbound у більшості випадків достатньо VPS. Ці сервіси не є ресурсоємними і чудово працюють на віртуалізованих ресурсах. Виділений сервер зазвичай надлишковий для цього конкретного завдання. Dedicated сервер варто розглядати, якщо ви плануєте обслуговувати дуже велику кількість клієнтів (сотні або тисячі), запускати безліч інших ресурсоємних програм на тому ж сервері, або якщо у вас є специфічні вимоги до апаратного забезпечення та повного контролю над ним. Для більшості особистих або невеликих командних потреб VPS буде більш економічним та адекватним вибором.

Як оновити Pi-hole та Unbound?

Оновлення компонентів виконується наступним чином:

  • Оновлення операційної системи та Unbound: sudo apt update && sudo apt upgrade -y. Unbound оновлюється як частина системних пакетів.
  • Оновлення Pi-hole: pihole -up. Ця команда оновить Pi-hole та його компоненти (FTL, Web Interface) до останніх стабільних версій.
  • Оновлення списків блокування Pi-hole: pihole -g. Це оновить усі ваші adlists. Pi-hole робить це автоматично раз на тиждень, але ви можете запустити вручну.

Чи можу я використовувати Pi-hole як DHCP-сервер?

Так, Pi-hole може виступати в ролі DHCP-сервера для вашої локальної мережі. Це дуже зручно, оскільки всі пристрої, що отримують IP-адресу від Pi-hole, автоматично використовуватимуть його як DNS-сервер. Щоб увімкнути DHCP-сервер Pi-hole, перейдіть у веб-інтерфейсі до Settings > DHCP, увімкніть опцію "DHCP server enabled" та налаштуйте діапазон IP-адрес. ВАЖЛИВО: Перед увімкненням DHCP на Pi-hole, вимкніть DHCP-сервер на вашому роутері, щоб уникнути конфліктів у мережі.

Як налаштувати DNS over HTTPS/TLS для клієнтів?

Pi-hole та Unbound забезпечують приватність та блокування реклами, але трафік між вашим клієнтом та VPS зазвичай іде по звичайному DNS (UDP/TCP 53). Якщо ви хочете зашифрувати цей трафік, є кілька варіантів:

  • На стороні клієнта: Використовувати програми типу Stubby (для DNS over TLS) або Cloudflared (для DNS over HTTPS) на кожному клієнтському пристрої, налаштувавши їх на використання вашого VPS як DoT/DoH сервера.
  • VPN на VPS: Розгорнути WireGuard або OpenVPN на тому ж VPS, і всі клієнти, підключені до VPN, автоматично використовуватимуть ваш приватний DNS-сервер через зашифрований туннель. Це найбільш комплексне та безпечне рішення для віддаленого доступу.
  • Caddy з DoH/DoT: Caddy може бути налаштований для надання DoH/DoT проксі, перенаправляючи запити на ваш Pi-hole. Це складніше, але можливо.

В рамках цього посібника ми зосередилися на базовому налаштуванні, але розширення до DoH/DoT або VPN є логічним наступним кроком для максимальної безпеки та приватності.

Висновки та наступні кроки

Вітаємо! Ви успішно розгорнули та налаштували Pi-hole та Unbound на своєму VPS, створивши потужний, приватний та ефективний DNS-сервер, який блокує рекламу та трекери на рівні мережі. Це значно підвищує вашу конфіденційність, прискорює перегляд веб-сторінок та дає вам повний контроль над DNS-запитами, не покладаючись на сторонніх провайдерів.

Наступні кроки для подальшого покращення та розширення вашого рішення:

  • Інтеграція з домашньою мережею: Налаштуйте ваш домашній роутер для використання Pi-hole як основного DNS-сервера, щоб усі пристрої у вашій локальній мережі автоматично отримували переваги блокування реклами та приватності.
  • Розгортання VPN на тому ж VPS: Для доступу до вашого приватного DNS-сервера ззовні домашньої мережі (наприклад, у поїздках або при використанні мобільного інтернету), розгляньте можливість встановлення WireGuard або OpenVPN на тому ж VPS. Це дозволить вам безпечно тунелювати весь трафік через ваш сервер, захищаючи його від відстеження та цензури.
  • Моніторинг та оптимізація: Регулярно переглядайте логи Pi-hole, експериментуйте з різними списками блокування, додавайте домени до білого/чорного списку. Слідкуйте за споживанням ресурсів VPS, щоб переконатися, що система працює оптимально.
  • Розширені функції Pi-hole: Вивчіть можливості Pi-hole зі створення груп клієнтів, призначенню різних списків блокування для різних пристроїв або користувачів, а також налаштуванню локальних DNS-записів для ваших внутрішніх сервісів.

Поділитися цим записом:

розгортання pi-hole та unbound на vps: приватний DNS та блокування реклами
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.