🏗️ Kompletní instalace Nginx Proxy Manageru (NPM) s Cloudflare certifikátem
Tento návod popisuje instalaci reverzní proxy na Raspberry Pi 5 s využitím 15letého SSL certifikátu přímo od Cloudflare.
1. Příprava systému (Terminál)
Nejdříve vytvoříme strukturu složek v /opt/ a nastavíme správná oprávnění, aby kontejner mohl zapisovat data.
sudo mkdir -p /opt/nginx-proxy-manager/data
sudo mkdir -p /opt/nginx-proxy-manager/letsencrypt
sudo chown -R $USER:$USER /opt/nginx-proxy-manager
sudo chmod -R 775 /opt/nginx-proxy-manager
🔑 2. Cloudflare Origin Certifikát
Tento certifikát slouží výhradně pro šifrování trasy mezi Cloudflare a tvým RPi5.
-
V Cloudflare: SSL/TLS -> Origin Server -> Create Certificate.
-
Nastavení: RSA 2048, platnost 15 let.
-
Zkopíruj si text Origin Certificate a Private Key.
[!CAUTION] BEZPEČNOSTNÍ VAROVÁNÍ: Cloudflare Origin certifikát není veřejně důvěryhodný pro prohlížeče. Pokud se na server pokusíš připojit přímo (mimo Cloudflare), prohlížeč nahlásí chybu zabezpečení.
📦 3. Konfigurace Portainer Stack (YAML)
Vytvoř nový stack. Používáme SQLite (vhodné pro homelab, šetří RAM, nepoužívat pro HA/produkční nasazení s vysokou zátěží).
🌐 Nginx Proxy Manager (NPM) Stack
Tento stack přidej do Portaineru. NPM poběží ve stejné síti jako tvůj DNS stack (dns_net), aby na sebe kontejnery viděly přímo přes názvy.
version: "3"
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # HTTP provoz
- '443:443' # HTTPS provoz
- '8181:81' # Administrace NPM (přesunuto na 8181 kvůli Pi-hole)
environment:
- TZ=Europe/Prague
# NPM nepotřebuje mnoho proměnných, zbytek se řeší v UI
volumes:
- /opt/npm/data:/data
- /opt/npm/letsencrypt:/etc/letsencrypt
networks:
dns_net:
ipv4_address: 172.20.0.4 # Fixní IP v naší síti
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
4. Nastavení Environment Variables (Portainer UI)
Pod YAML kódem přidej proměnnou:
2. Jak to všechno propojit (Workflow)
Aby ti vše fungovalo hladce, postupuj takto:
-
V Pi-hole (Local DNS):
-
Vytvoř záznamy pro všechny své služby.
-
Např.
pihole.doma-> IP tvého Raspberry Pi. -
Např.
npm.doma-> IP tvého Raspberry Pi. -
Všechny domény směřuj na stejnou IP (RPi), NPM už si je přebere.
-
-
V Nginx Proxy Manageru (Web UI na portu 8181):
-
Přihlas se (výchozí:
admin@example.com/changeme). -
Jdi na Proxy Hosts -> Add Proxy Host.
-
Domain Names:
pihole.doma -
Forward Hostname / IP:
pihole(Díky společné sítidns_netstačí název kontejneru). -
Forward Port:
80(Interní port v kontejneru). -
Zapni Block Common Exploits a ulož.
-
🔒 4. Zabezpečení přímého přístupu
Aby nedošlo k obejití Cloudflare (WAF, rate-limiting), je kriticky důležité zajistit, aby server nebyl přístupný napřímo z internetu.
-
Doporučené řešení: Použij Cloudflare Tunnel (z předchozího návodu), který porty 80/443 do internetu vůbec neotevírá.
-
Alternativa: Pokud nepoužíváš tunel, nastav na routeru/firewallu (UFW) povolení pouze pro IP rozsahy Cloudflare.
⚙️ 5. Konfigurace NPM a SSL
-
Přihlas se na
http://IP-ADRESA-RPI:81. -
LOGIN:
admin@example.com/changeme. -
[!IMPORTANT] POVINNÝ KROK: Okamžitě po prvním přihlášení změň administrátorský e-mail a heslo!
-
Jdi na SSL Certificates -> Add SSL Certificate -> Custom.
-
Vlož Private Key a Origin Certificate z bodu 2.
🛡️ 6. Nastavení Cloudflare SSL Režimu
V Cloudflare dashboardu v sekci SSL/TLS -> Overview přepni režim na Full (strict).
-
Proč? Režim Flexible je nebezpečný, protože komunikace mezi Cloudflare a tvým serverem by nebyla šifrovaná. Full (strict) vyžaduje tvůj nahraný certifikát.
Výhody tohoto řešení:
-
Bezúdržbovost: Certifikát expiruje až za 15 let (odpadá starost o Let's Encrypt).
-
Konzistence: Všechna data jsou v
/opt/a proměnné v Portainer UI. -
Výkon: SQLite na RPi5 reaguje okamžitě a je méně náchylná k poškození při tvrdém restartu než velká DB.
No comments to display
No comments to display