Ga naar inhoud

Stap 13 – Nginx Proxy Manager (route 2)

Doel: één "receptie" op je Umbrel die op basis van de naam (fotos.…, bestanden.…) doorstuurt naar de juiste app. Er komt een geldig HTTPS-certificaat voor gebruik thuis. Tijd: 45–60 minuten. Een paar terminalcommando's.

Onderweg:  Cloudflare ──tunnel──► NPM :40080 (HTTP) ──► app
Thuis:     browser ──────────────► NPM :443  (HTTPS, eigen certificaat) ──► app

13.1 Installeren en inloggen

  1. Umbrel App Store → Nginx Proxy Manager → Installeren.
  2. Open de app vanuit het dashboard.
  3. Bij de eerste keer maak je een beheerdersaccount aan. In oudere versies staat er een standaardlogin uit de NPM-documentatie, en dan moet je die direct wijzigen. Gebruik een sterk wachtwoord.

13.2 Cloudflare API-token voor het certificaat

Thuis wil je óók HTTPS met een geldig certificaat. NPM vraagt dat aan bij Let's Encrypt via een DNS-challenge. Daarvoor heeft NPM tijdelijk toegang nodig tot je DNS bij Cloudflare.

  1. Cloudflare → rechtsboven je profiel → My Profile → API Tokens → Create Token.
  2. Kies het sjabloon Edit zone DNS.
  3. Zone Resources: Include → Specific zone → jouwdomein.nl. Geef dus alleen toegang tot dit ene domein.
  4. Create Token en kopieer de token. 🛑 Deze token geeft toegang tot je DNS. Deel hem met niemand, ook niet met de Hulplijn.

13.3 Certificaat aanvragen (wildcard)

  1. NPM → SSL Certificates → Add SSL Certificate → Let's Encrypt.
  2. Domain names: jouwdomein.nl en *.jouwdomein.nl (één certificaat voor alle diensten).
  3. Zet Use a DNS Challenge aan → provider Cloudflare.
  4. In het vak met credentials vervang je de voorbeeldwaarde door je eigen token:
    dns_cloudflare_api_token = <JOUW-CLOUDFLARE-API-TOKEN>
    
  5. Vul je e-mailadres in, ga akkoord en sla op.

✅ Controlepunt: het certificaat staat in de lijst met een vervaldatum over ±90 dagen. NPM vernieuwt het automatisch.

13.4 De interne naam van je apps vinden

NPM stuurt door naar de containernaam van een app. Die vind je zo:

  • Open een terminal op de Umbrel (zie stap 3.4).
  • Voer uit:
    sudo docker ps --format '{{.Names}}\t{{.Ports}}'
    
App Containernaam (voorbeeld) Poort
Immich immich_server_1 2283
Nextcloud ⚠️ Te controleren (zoek naar nextcloud…web… of …app…) ⚠️ Te controleren
FileBrowser Quantum <app-id>_web_1 (app-id hangt af van de community store) 80
OnlyOffice <app-id>_app_1 80

13.5 Proxy host per dienst

NPM → Hosts → Proxy Hosts → Add Proxy Host:

Tab Instelling Voorbeeld (Immich)
Details Domain Names fotos.jouwdomein.nl
Scheme http
Forward Hostname / IP immich_server_1
Forward Port 2283
✔ Block Common Exploits aan
✔ Websockets Support aan
SSL SSL Certificate je wildcardcertificaat *.jouwdomein.nl
Force SSL uit laten (zie hieronder)

Waarom Force SSL uit? Verkeer uit de tunnel komt als HTTP binnen op poort 40080, terwijl de bezoeker allang HTTPS bij Cloudflare heeft. Met Force SSL aan kan dat een eindeloze doorverwijzing geven. ⚠️ Te controleren bij jouw opstelling.

Herhaal dit voor elke dienst. Wijs in de tunnel (stap 12.3) al deze namen naar <umbrel-ip>:40080.

✅ Controlepunt: onderweg (4G) werkt https://fotos.jouwdomein.nl nog steeds, nu via NPM.

13.6 Poort 443 vrijmaken voor gebruik thuis (gevorderd)

De NPM-app op Umbrel luistert standaard op 40443 voor HTTPS, maar browsers verwachten 443. Voor "één adres overal" moet NPM dus op 443 luisteren.

  1. Terminal op de Umbrel. Open het bestand:
    nano ~/umbrel/app-data/nginx-proxy-manager/docker-compose.yml
    
  2. Pas onder ports: de regel "40443:443" aan naar "443:443". De regel "40080:80" laat je staan.
  3. Opslaan (Ctrl+O, Enter, Ctrl+X). Herstart de app in Umbrel: Nginx Proxy Manager → Stoppen → Starten.

🛑 Een update van de NPM-app zet dit terug naar 40443. Thuis krijg je dan "verbinding geweigerd" of een zwart scherm, terwijl het onderweg gewoon werkt. Maak daarom een hook die het vóór elke start herstelt:

mkdir -p ~/umbrel/app-data/nginx-proxy-manager/hooks
cat > ~/umbrel/app-data/nginx-proxy-manager/hooks/pre-start <<'HOOK'
#!/usr/bin/env bash
# Zet de HTTPS-poort van NPM vóór elke start terug naar 443
COMPOSE="$(dirname "$0")/../docker-compose.yml"
sed -i 's/"40443:443"/"443:443"/' "$COMPOSE"
HOOK
chmod +x ~/umbrel/app-data/nginx-proxy-manager/hooks/pre-start

⚠️ Te controleren dit werkt zolang umbrelOS app-hooks in deze map uitvoert en de app zelf geen eigen hooks/ meelevert. Controleer het na elke NPM-update (zie stap 20).

Controleren vanaf een computer thuis:

  • Mac/Linux: nc -z <umbrel-ip> 443. Dit moet slagen (en nc -z <umbrel-ip> 40443 niet meer).
  • Windows (PowerShell): Test-NetConnection <umbrel-ip> -Port 443 → TcpTestSucceeded : True.

⚠️ Te controleren dat poort 443 op jouw Umbrel niet al door iets anders wordt gebruikt.

➡️ Volgende: Stap 14 – Pi-hole split-horizon DNS