Локальні домени без портів: налаштовуємо AdGuard Home + Nginx Proxy Manager в Homelab
🇬🇧 Read this article in English
Коли кількість сервісів у домашній лабораторії (Homelab) починає перевищувати три-чотири, настає біль. Запам’ятовувати десятки адрес на кшталт 192.168.50.125:3000 (Grafana), 192.168.50.125:8080 (інший сервіс) чи 192.168.50.67:32400 (Plex) стає просто неможливо.
Набагато приємніше вводити в браузері прості й красиві імена: http://grafana.home, http://adguard.home чи http://truenas.home.
Сьогодні ми розгорнемо та зв’яжемо в єдину систему AdGuard Home (локальний DNS-сервер) та Nginx Proxy Manager (реверс-проксі) за допомогою Docker. Це дозволить назавжди забути про IP-адреси та номери портів у локальній мережі.
Як працює ця зв’язка?
Схема роботи дуже проста і виглядає так:
- Ви вводите в браузері адресу
http://grafana.home. - Ваш комп’ютер запитує у локального DNS (AdGuard Home): «Де лежить цей домен?».
- AdGuard Home відповідає: «Він лежить на IP нашого проксі-сервера (Ubuntu VM)».
- Запит прилітає на проксі-сервер (Nginx Proxy Manager) на стандартний веб-порт
80. - Проксі-сервер дивиться на домен
grafana.home, розуміє, що цей сервіс запущений на порті3000, і непомітно для вас перенаправляє туди трафік.
Крок 1. Запуск через Docker Compose
Ми об’єднаємо обидва сервіси в один стек. Для цього створимо окрему робочу папку /opt/gateway на сервері та запустимо такий файл docker-compose.yml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: '3.8'
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
volumes:
- ./adguard/workdir:/opt/adguardhome/work
- ./adguard/confdir:/opt/adguardhome/conf
ports:
- "53:53/tcp"
- "53:53/udp"
- "3002:3000/tcp" # Порт для початкового налаштування
- "8080:80/tcp" # Порт панелі адміна AdGuard
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # Стандартний веб-порт HTTP
- '81:81' # Панель адміна проксі
- '443:443' # Порт HTTPS
volumes:
- ./npm/data:/data
- ./npm/letsencrypt:/etc/letsencrypt
⚠️ Важлива порада щодо Ubuntu Server:
Ubuntu за замовчуванням запускає службуsystemd-resolved, яка займає порт53(DNS). Щоб контейнер AdGuard зміг запуститися, вам потрібно вимкнути заглушку в файлі/etc/systemd/resolved.conf(встановитиDNSStubListener=no) та перезапустити резолвер.
Крок 2. Налаштування AdGuard Home
Після запуску відкриваємо первинне налаштування на порті 3002 (наприклад, http://192.168.50.125:3002), створюємо користувача та переходимо у головну панель адміністрування.
Мал. 1. Панель авторизації AdGuard Home
Тепер нам потрібно створити правило, яке направлятиме всі локальні домени на проксі-сервер.
- Перейдіть у меню Filters (Фільтри) -> DNS Rewrites (Перенаправлення DNS).
- Натисніть Add DNS Rewrite.
- Замість того, щоб додавати кожен сайт вручну, зробимо глобальний wildcard-запис:
- Domain:
*.home - IP Address: IP твого проксі-сервера (наприклад,
192.168.50.125).
- Domain:
Мал. 2. Налаштування DNS-перенаправлень у меню AdGuard Home
Тепер будь-який домен, що закінчується на .home (наприклад, grafana.home, portainer.home), автоматично перенаправлятиметься на IP-адресу реверс-проксі.
Крок 3. Налаштування Nginx Proxy Manager
Заходимо в панель проксі-сервера на порт 81 (вхід за замовчуванням: admin@example.com / changeme).
Тепер створюємо правила для перенаправлення наших красивих доменів на внутрішні порти. Для кожного сервісу створюємо Proxy Host:
- Domain Names: Вказуємо локальний домен (наприклад,
grafana.home). - Forward Host/IP: Вказуємо IP-адресу, де працює сервіс.
- Forward Port: Вказуємо порт (наприклад,
3000для Grafana чи8080для AdGuard).
Мал. 3. Список налаштованих проксі-хостів в Nginx Proxy Manager
Коли ви збережете налаштування, Nginx Proxy Manager автоматично перехоплюватиме запити на grafana.home і проксіюватиме їх на відповідний порт.
🔒 Безпека та захист від хакерів
Оскільки ми налаштовуємо сервери самостійно, важливо дотримуватися правил цифрової гігієни, щоб не залишити лазівок для зловмисників:
- Тільки локальний DNS: Наші домени на
.homeіснують виключно всередині вашої домашньої мережі. Інтернет про них нічого не знає. Це робить їх повністю невидимими для зовнішніх сканерів та хакерів. - Не відкривайте адмін-панелі на роутері: Панель керування проксі (порт
81) та панель AdGuard (порт8080) мають бути закритими ззовні. Ніколи не прокидайте ці порти на роутері (Port Forwarding). Якщо потрібен віддалений доступ — заходьте тільки через Tailscale або інший захищений VPN. - Локальні IP-адреси: Відображення адрес типу
192.168.50.Xу скріншотах чи статтях є абсолютно безпечним, оскільки це «сірі» (приватні) IP-адреси, які не маршрутизуються в інтернеті. Жоден хакер не зможе підключитися до них ззовні.
Висновок
Комбінація AdGuard Home та Nginx Proxy Manager робить керування домашнім сервером неймовірно зручним. Ви отримуєте не тільки чистий інтернет без реклами для всієї родини, але й красиву, зручну навігацію по всіх сервісах вашої ІТ-лабораторії.
