- 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).
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
dbservice) - 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, logyletsencrypt/– Let's Encrypt certifikátymysql/– 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)
- V NPM UI jdi na Proxy Hosts → Add Proxy Host
- Domain Names:
app.example.com - Scheme:
http - Forward Hostname/IP:
<server-ip>nebocontainer_name - Forward Port: port služby (např. 8080)
- Block Common Exploits: ✅
- Ulož
- 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
- 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:
- Proxy Hosts → Add Proxy Host
- Domain Names:
jotty.example.com - Scheme:
http - Forward Hostname/IP:
jotty(container name) - Forward Port:
3000 - Cache Assets: ✅
- Block Common Exploits: ✅
- 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