Files
mates 1bc79e4531 fix: odstranit emoji ze vsech souboru
Kompletne odstraneno:
- Emoji (smajliky, symboly, boxes, arrows) z README
- Emoji ze skriptu (sipky, symboly)
- Emoji z docker-compose (adresare)

Nahrano za:
- Textove alternativy (sipky -> '->', boxes -> '+', atd.)
- ASCII pouze kde to slo

Ciste vsechny 7 repo (overeno Python skriptem).
2026-08-02 08:50:10 +02:00

4.1 KiB

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
  1. 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