From de9de327d7b2dd4dfba1d4c33377f5bffe4e5eb6 Mon Sep 17 00:00:00 2001 From: mates Date: Sat, 1 Aug 2026 22:02:54 +0200 Subject: [PATCH] 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). --- nginx-proxy-manager/.env.example | 19 ++-- nginx-proxy-manager/README.md | 190 ++++++++++++++++++++++++++++++- 2 files changed, 197 insertions(+), 12 deletions(-) diff --git a/nginx-proxy-manager/.env.example b/nginx-proxy-manager/.env.example index 0cd5d3b..95da083 100644 --- a/nginx-proxy-manager/.env.example +++ b/nginx-proxy-manager/.env.example @@ -1,8 +1,13 @@ -# NPM – promenne prostredi -TZ=Europe/Prague -PUID=1000 -PGID=1000 -DISABLE_IPV6=true +# Nginx Proxy Manager – promenne prostredi +# Zkopiruj na .env a dopln skutecne hodnoty -# MariaDB heslo pro NPM backend (ZMEN!) -MYSQL_ROOT_PASSWORD=change-me-strong-password +# MariaDB hesla (ZMEN na silna hesla!) +NPM_DB_PASSWORD=change-me-strong-db-password +NPM_DB_ROOT_PASSWORD=change-me-strong-root-password + +# Volitelne: hostname/container_name (pro prehlednost) +NPM_HOSTNAME=nginx_proxy_manager +NPM_DB_HOSTNAME=npm_db + +# Casova zona (ovlivnuje logy) +TZ=Europe/Prague diff --git a/nginx-proxy-manager/README.md b/nginx-proxy-manager/README.md index aa46aeb..dba7288 100644 --- a/nginx-proxy-manager/README.md +++ b/nginx-proxy-manager/README.md @@ -1,15 +1,195 @@ # Nginx Proxy Manager (NPM) -Docker Compose pro Nginx Proxy Manager. +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/`. -## Spuštění +> **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 + +```bash +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í) + +```bash +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í ```bash -cp /home/mates/docker/nginx/docker-compose.yml ./ docker compose up -d ``` -## Související +### 4. První přístup -Detailní návod: [Nginx Proxy Manager](@note-b9fd4d6e) v Jotty (kategorie: Docker a kontejnery). +Otevři `http://: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:** `` 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 + +```bash +docker compose pull +docker compose up -d +``` + +### Zastavení + +```bash +docker compose stop +``` + +### Logy + +```bash +docker compose logs -f +``` + +### Záloha + +```bash +# data + letsencrypt + mysql +tar -czf npm-backup-$(date +%Y%m%d).tar.gz \ + data/ letsencrypt/ mysql/ +``` + +### Obnova + +```bash +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