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).
This commit is contained in:
@@ -1,8 +1,13 @@
|
|||||||
# NPM – promenne prostredi
|
# Nginx Proxy Manager – promenne prostredi
|
||||||
TZ=Europe/Prague
|
# Zkopiruj na .env a dopln skutecne hodnoty
|
||||||
PUID=1000
|
|
||||||
PGID=1000
|
|
||||||
DISABLE_IPV6=true
|
|
||||||
|
|
||||||
# MariaDB heslo pro NPM backend (ZMEN!)
|
# MariaDB hesla (ZMEN na silna hesla!)
|
||||||
MYSQL_ROOT_PASSWORD=change-me-strong-password
|
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
|
||||||
|
|||||||
@@ -1,15 +1,195 @@
|
|||||||
# Nginx Proxy Manager (NPM)
|
# 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/`.
|
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
|
```bash
|
||||||
cp /home/mates/docker/nginx/docker-compose.yml ./
|
|
||||||
docker compose up -d
|
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://<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
|
||||||
|
|||||||
Reference in New Issue
Block a user