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).
4.1 KiB
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
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