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

196 lines
4.1 KiB
Markdown

# 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