Розгортання 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-конфіг потрібен для цього завдання
Для розгортання 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 проведе вас через кілька кроків:
- Static IP Address: Інсталятор запропонує налаштувати статичну IP-адресу для вашого сервера. Підтвердьте використання поточної IP-адреси, яка є зовнішньою IP вашого VPS.
- Upstream DNS Provider: На цьому кроці ДУЖЕ ВАЖЛИВО вибрати
Custom(Користувацький) та ввести127.0.0.1#5335. Це вказує Pi-hole використовувати ваш локально запущений Unbound на порту 5335. - Select Blocklists: Виберіть списки блокування за замовчуванням. Ви завжди зможете додати більше пізніше через веб-інтерфейс.
- Install Web Admin Interface: Обов'язково виберіть "On" для встановлення веб-інтерфейсу.
- Install Lighttpd Web Server: Підтвердьте встановлення веб-сервера Lighttpd.
- 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. Перевірка працездатності
Після всіх налаштувань необхідно переконатися, що все працює як слід.
- Перевірка 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або::. - Перевірка логів Pi-hole:
pihole -t # Перегляд логів Pi-hole у реальному часіВи побачите всі DNS-запити, що проходять через Pi-hole, та їхній статус (
OK,Blocked,Cached). - Налаштування клієнтського пристрою:
Щоб почати використовувати ваш 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-сервер для всієї локальної мережі.
- Тестування на клієнті:
Після налаштування DNS на клієнті, відкрийте веб-браузер і відвідайте кілька сайтів з рекламою (наприклад, новинні портали). Ви повинні помітити значне зменшення або повну відсутність реклами. Перевірте також веб-інтерфейс Pi-hole, щоб переконатися, що запити від вашого клієнта відображаються та блокуються.
Тепер ваш приватний DNS-сервер з блокуванням реклами повністю функціональний!