Files
mates-docker-services/nginx-proxy-manager
mates de9de327d7 feat: pridat nginx-proxy-manager docker-compose
- docker-compose.yml: 1:1 kopie z /home/mates/docker/nginx/ na RPi
  - jc21/nginx-proxy-manager:latest (app)
  - mariadb:latest (db backend)
  - porty 80, 443, 81
  - volumes: ./data, ./letsencrypt, ./mysql

- .env.example: sablona pro hesla (placeholdery)

- README.md: kompletni navod pro zacatecnika
  - quickstart
  - SSL/Let's Encrypt konfigurace
  - backup/obnova
  - bezpecnost

Poznamka: adresare data/, letsencrypt/, mysql/ jsou prazdne
a vytvori se automaticky pri 'docker compose up -d'.
Ne pushnou se do gitu (jsou v .gitignore).
2026-08-01 22:02:54 +02:00
..

Nginx Proxy Manager (NPM)

Reverzní proxy s HTTPS (Let's Encrypt), web UI, ACL. Toto je přesná kopie docker-compose.yml z běžícího serveru /home/mates/docker/nginx/.

Detailní návod najdeš v Jotty knowledge base (kategorie: Docker a kontejnery).


📋 Přehled

  • Image: jc21/nginx-proxy-manager:latest + mariadb:latest
  • Porty: 80 (HTTP), 443 (HTTPS), 81 (admin UI)
  • Databáze: MariaDB (vestavěná, viz db service)
  • User: 1000:1000 (sedí na serveru)
  • Network: nginx_proxy_manager_default (izolovaný bridge)

Rychlý start

1. Příprava

cd nginx-proxy-manager

# Vytvor .env z prikladu
cp .env.example .env
nano .env   # nastav hesla pro MariaDB

2. Vytvoření volume adresářů (pokud neexistují)

mkdir -p data letsencrypt mysql

Tyto složky obsahují:

  • data/ NPM konfigurace, certifikáty, logy
  • letsencrypt/ Let's Encrypt certifikáty
  • mysql/ MariaDB data

3. Spuštění

docker compose up -d

4. První přístup

Otevři http://<server-ip>:81 v prohlížeči.

Výchozí přihlášení:

  • Email: admin@example.com
  • Heslo: changeme

DŮLEŽITÉ: Hned po prvním přihlášení změň heslo!


Detailní nastavení

SSL certifikát (Let's Encrypt)

  1. V NPM UI jdi na Proxy Hosts → Add Proxy Host
  2. Domain Names: app.example.com
  3. Scheme: http
  4. Forward Hostname/IP: <server-ip> nebo container_name
  5. Forward Port: port služby (např. 8080)
  6. Block Common Exploits:
  7. Ulož
  8. Otevři záložku SSL:
    • Request a new SSL Certificate
    • Force SSL
    • HTTP/2
    • HSTS Enabled
    • Zadej email pro Let's Encrypt notifikace
    • Potvrď podmínky Let's Encrypt
  9. Save

Bezpečnost

  • HTTPS terminuje NPM (Let's Encrypt auto-renew)
  • Force SSL přesměruje HTTP → HTTPS
  • Block Common Exploits chrání před známými útoky
  • HSTS říká prohlížečům "vždy HTTPS"
  • Admin UI na portu 81 přístupný jen z vnitřní sítě (nebo za VPN)

Volumes

Mount Účel
./data:/data NPM konfigurace, custom SSL, logy
./letsencrypt:/etc/letsencrypt Let's Encrypt certifikáty
./mysql:/var/lib/mysql MariaDB data

Porty

Port Služba
80 HTTP (přesměruje na 443)
443 HTTPS (hlavní)
81 Admin UI

Správa

Update

docker compose pull
docker compose up -d

Zastavení

docker compose stop

Logy

docker compose logs -f

Záloha

# data + letsencrypt + mysql
tar -czf npm-backup-$(date +%Y%m%d).tar.gz \
    data/ letsencrypt/ mysql/

Obnova

tar -xzf npm-backup-20240801.tar.gz
docker compose up -d

🔗 Reverzní proxy pro ostatní služby

Příklad konfigurace pro jotty.example.com → jotty:3000:

  1. Proxy Hosts → Add Proxy Host
  2. Domain Names: jotty.example.com
  3. Scheme: http
  4. Forward Hostname/IP: jotty (container name)
  5. Forward Port: 3000
  6. Cache Assets:
  7. Block Common Exploits:
  8. SSL: Let's Encrypt (viz výše)

Stejný postup pro všechny ostatní služby (portainer, gitea, vaultwarden, …).


🔐 Bezpečnostní poznámky

  • Admin heslo změnit hned po instalaci
  • Port 81 nedávej do internetu (firewall nebo VPN)
  • Let's Encrypt nastavit SPF/DKIM záznamy pro email notifikace
  • Logy sledovat na neobvyklé dotazy (404, brute-force)

📁 Struktura

nginx-proxy-manager/
├── README.md                # Tento soubor
├── .env.example             # Šablona pro .env
├── docker-compose.yml       # Compose (1:1 kopie z RPi)
├── data/                    # NPM data (po spuštění)
├── letsencrypt/             # Certifikáty (po spuštění)
└── mysql/                   # MariaDB data (po spuštění)

🔗 Související

  • Jotty: Nginx Proxy Manager (detailní návod s SSL konfigurací)
  • Jotty: Docker + Portainer + NPM skript (rychlá instalace všeho dohromady)
  • Jotty: Firewall (porty 80, 443, 81 musí být otevřené)

📜 Licence

MIT stejně jako celé mates-docker-services repo.


Poslední update: 2026-08-01