Ga naar inhoud

Nginx Proxy Manager (NPM) & Lokale DNS in een Homelab

Deze handleiding legt uit wat de kracht is van Nginx Proxy Manager (NPM) in een homelab, hoe je het combineert met een lokale DNS-server (zoals Pi-hole of Technitium), och hoe je dit volledig configureert voor lokale HTTPS-verbindingen.


1. Wat is NPM en wat is het nut in een Homelab?

In een standaard homelab draait elke service op zijn eigen poort (bijv. Authentik op 9000, PatchMon op 3000, Proxmox op 8006). Dit dwingt je om onhandige IP-adressen en poortnummers te onthouden (bijv. http://192.168.1.50:3000).

Nginx Proxy Manager (NPM) lost dit op als een Reverse Proxy. Het vangt al het inkomende webverkeer op via de standaard webpoorten (HTTP 80 en HTTPS 443) en stuurt het op basis van de domeinnaam door naar de juiste container of server.

De voordelen in een Homelab:

  • Gebruiksvriendelijke URL's: Benader je services via nette subdomeinen zoals patchmon.patad.nl en auth.patad.nl.
  • Centraal SSL-beheer: NPM vraagt automatisch Let's Encrypt certificaten aan en vernieuwt deze. Je hoeft nooit meer handmatig certificaten in te laden per container.
  • Veiligheid: Je verbergt de poorten van je applicaties achter de proxy. Alleen poort 80 and 443 hoeven open te staan (of intern bereikbaar te zijn).
  • Wildcard SSL via DNS-01: Je kunt SSL-certificaten aanvragen voor lokale services zonder poorten open te zetten in je router, door gebruik te maken van een DNS API-koppeling (bijv. Cloudflare).

2. Architectuur: Hoe NPM samenwerkt met Pi-hole of Technitium

Wanneer je een domein zoals auth.patad.nl intypt in je browser, moet je netwerk weten naar welke server dit verkeer moet sturen. Hiervoor gebruik je een lokale DNS-server.

De Verkeersstroom:

  1. Browser: Je typt https://auth.patad.nl in.
  2. DNS (Pi-hole/Technitium): De browser vraagt aan de DNS-server: "Waar staat auth.patad.nl?"
  3. DNS Antwoord: De DNS-server antwoordt: "Dat staat op het IP-adres van je Nginx Proxy Manager (bijv. 192.168.1.20)."
  4. NPM: De browser stuurt het HTTPS-verkeer naar NPM (poort 443). NPM leest het domein auth.patad.nl en stuurt het intern door naar de juiste applicatie (poort 9000).

3. Lokale DNS Inrichten (Pi-hole of Technitium)

Om dit te laten werken, moet je zorgen dat alle subdomeinen (of een wildcard) verwijzen naar het IP-adres van je NPM-container.

Optie A: Pi-hole Configureren

  1. Log in op je Pi-hole admin interface.
  2. Ga in het linkermenu naar Local DNS βž” DNS Records.
  3. Voeg voor elke service een record toe:
  4. Domain: auth.patad.nl
  5. IP Address: Het IP-adres van je Ubuntu-VM waar NPM op draait
  6. Klik op Add.
  7. Tip voor wildcards (Local CNAME): Als je wilt dat alles wat eindigt op .patad.nl naar NPM gaat, moet je handmatig een dnsmasq bestand aanmaken op de Pi-hole via SSH (/etc/dnsmasq.d/05-custom-wildcard.conf) met de regel: address=/.patad.nl/192.168.1.20.

Optie B: Technitium DNS Configureren (Aanbevolen voor Homelabs)

Technitium is uitermate geschikt voor homelabs omdat het ingebouwde ondersteuning heeft voor wildcards en geavanceerde records. 1. Log in op de Technitium DNS console. 2. Ga naar Zones en klik op Add Zone (indien je domein patad.nl nog niet bestaat). Vul patad.nl in. 3. Klik op de zone patad.nl. 4. Klik op Add Record om een Wildcard record aan te maken (zo hoef je niet voor elke container een nieuw record te maken): * Name: * (Het sterretje vangt alle subdomeinen op, zoals auth, patchmon, etc.) * Type: A * IP Address: Het IP-adres van je Ubuntu-VM waar NPM op draait 5. Klik op Add.


4. Een Service Toevoegen in NPM (Voorbeeld: Authentik)

Zodra je DNS goed staat, voeg je de service toe in de grafische interface van NPM:

  1. Log in op NPM (http://<IP-van-je-VM>:81).
  2. Ga naar Hosts βž” Proxy Hosts βž” Add Proxy Host.
  3. Tabblad Details:
  4. Domain Names: auth.patad.nl
  5. Scheme: http
  6. Forward Hostname / IP: Het lokale IP-adres van je Authentik container/VM
  7. Forward Port: 9000
  8. Websockets Support: AAN (Cruciaal voor Authentik!)
  9. Tabblad SSL:
  10. SSL Certificate: Kies Request a new SSL Certificate.
  11. Vink Force SSL en HTTP/2 Support aan.
  12. Accepteer de voorwaarden en klik op Save.

Je verbinding is nu volledig beveiligd met een geldig SSL-certificaat en bereikbaar via je lokale DNS!