Files
mates-docker-services/nginx-proxy-manager/README.md
T
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

196 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```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
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
```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