Как реших проблема с динамичен IP адрес използвайки Pi-hole и Nginx Proxy Manager

Как реших проблема с динамичен IP адрес използвайки Pi-hole и Nginx Proxy Manager

Как реших проблема с динамичен IP адрес използвайки Pi-hole и Nginx Proxy Manager

Използвайки Pi-hole и Nginx Proxy Manager за локален достъп до домашните си услуги

Поради липса на статичен IP адрес от страна на интернет доставчика ми, търсих лесен и елегантен начин за достъп до моите локални услуги и Docker контейнери. След няколко неуспешни опита с различни решения, открих комбинацията Pi-hole + Nginx Proxy Manager, която се оказа идеалното решение за моите нужди.

Проблемът с динамичния IP

Като много домашни потребители, нямах достъп до статичен IP адрес от доставчика си. Това означаваше, че всеки път когато рутерът се рестартира, IP адресът ми се променя. За достъп до домашните ми услуги като Portainer, Jellyfin, Nextcloud и други, това беше истински кошмар.

Първоначално използвах Cloudflare Tunnel, което работеше отлично, но имаше един сериозен недостатък – всички мои услуги бяха достъпни от интернет, което не беше желателно от гледна точка на сигурността.

Решението: Pi-hole като локален DNS

Откриването, че Pi-hole може да работи не само като блокер на реклами, но и като локален DNS сървър, беше истинско откровение! Оказа се, че мога да настроя локални домейни, които да работят само в домашната ми мрежа.

1 Настройка на Pi-hole за локални DNS записи

В Admin панела на Pi-hole отидох в Local DNS > DNS Records и добавих следните записи:

# Примерни локални DNS записи portainer.homelab → 10.110.110.67 jellyfin.homelab → 10.110.110.67 nextcloud.homelab → 10.110.110.67 pihole.homelab → 10.110.110.67
⚠️ Важно: В Pi-hole се добавя само IP адресът без порт! Портовете се управляват от Nginx Proxy Manager.

Nginx Proxy Manager за разпределение

След като Pi-hole разрешава локалните домейни към IP адреса на моя сървър, Nginx Proxy Manager поема отговорността за разпределението на заявките към правилните контейнери.

2 Настройка на Proxy Hosts в Nginx

За всеки домейн създадох отделен Proxy Host:

# Пример за Portainer Domain Names: portainer.homelab Forward Hostname/IP: 10.110.110.68 Forward Port: 9000 # Пример за Jellyfin Domain Names: jellyfin.homelab Forward Hostname/IP: 10.110.110.68 Forward Port: 8096

Избор на локален домейн

Първоначално мислех, че трябва задължително да използвам .local домейни, но оказа се, че имам пълна свобода в избора!

Популярни варианти за локални домейни:

  • .homelab – моят избор, ясно показва предназначението
  • .local – традиционен стандарт
  • .home – лесен за запомняне
  • .lan – класически за локални мрежи
  • .dev – внимание: Chrome изисква HTTPS!

Проблем със SSL сертификатите

При тестването открих интересен проблем – достъпът до Proxmox чрез новия домейн не работеше поради SSL сертификата. Proxmox използва self-signed сертификат за оригиналното hostname/IP и отхвърля връзки от други домейни.

3 Решения за SSL проблема

Най-лесните начини за решаване:

# Вариант 1: HTTP вместо HTTPS http://proxmox.homelab:8006 # Вариант 2: Добавяне на exception в браузъра # Chrome: Advanced → Proceed to proxmox.homelab (unsafe) # Firefox: Advanced → Accept the Risk and Continue

Предимства на това решение

  • Пълна локалност – услугите не са достъпни от интернет
  • Лесни за запомняне домейни – вместо IP адреси и портове
  • Гъвкавост – лесно добавяне на нови услуги
  • Не изисква статичен IP – работи с всеки домашен рутер
  • Използва съществуваща инфраструктура – Pi-hole вече го имах за реклами

Практични съвети

Внимавайте с множество Pi-hole инстанции! Направих грешката да добавя записи в един Pi-hole, а да тествам от устройство, което използва друг. Записите изчезваха не защото има проблем, а защото търсех на грешното място! 😅

Полезни команди за тестване:

# Тестване на DNS резолюцията nslookup portainer.homelab # Проверка на Pi-hole логовете sudo tail -f /var/log/pihole.log # Рестарт на DNS услугата sudo pihole restartdns

Заключение

Комбинацията Pi-hole + Nginx Proxy Manager се оказа идеалното решение за моите нужди. Получих удобен достъп до всички домашни услуги с красиви домейни, запазвайки същевременно сигурността чрез локален достъп само.

Настройката отне буквално минути, а резултатът е професионално изглеждаща homelab среда.

Надявам се този подход да помогне и на други homelab ентусиасти със същия проблем! 🚀
Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: