# 🚀 Traefik: Reverzní proxy pro Docker – správa subdomén a HTTPS
👉 [[1.1.1 O projektu]]
👉 [[1.1.2 Vlastní digitální svět (přehled článků)]]
## 📌 Úvod: Proč potřebujeme reverzní proxy?
Když provozujeme více služeb v Dockeru, může být **správa IP adres a portů složitá**.
Reverzní proxy **Traefik** tento problém elegantně řeší tím, že:
- 📌 Umožňuje **přístup přes domény místo IP adres**.
- 🔒 Automaticky nastavuje **HTTPS certifikáty**.
- 🔀 Směruje provoz na správné služby podle pravidel.
**V tomto článku si ukážeme jednoduchou konfiguraci Traefiku**, která vám umožní:
✅ **Přístup k Portaineru a Traefiku přes subdomény.**
✅ **Automatickou správu HTTPS certifikátů.**
✅ **Logování a ladění s pomocí AI.**
![[image_traefik.png]]
---
## 🌍 Nastavení DNS pro subdomény
Pro správné fungování musíme v DNS záznamech nastavit směřování domény na náš server:
Vytvořte A záznam:
- `traefik.moje-domena.cz` → **IP adresa serveru**
- `portainer.moje-domena.cz` → **IP adresa serveru**
---
## 📄 Použití ENV proměnných pro bezpečnější konfiguraci
Místo přímého zápisu citlivých údajů do `docker-compose.yml` budeme používat **`.env` soubor**.
Vytvořte soubor `.env` ve stejném adresáři jako `docker-compose.yml`:
```
DOMAIN=moje-domena.cz
[email protected]
```
Upravíme `docker-compose.yml`, aby načítal tyto proměnné pomocí syntaxe `${env_hodnota}`:
```yaml
version: '3.8'
services:
traefik:
image: "traefik:v2.10"
container_name: "traefik"
restart: always
networks:
- digilifehub_network
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./traefik.yml:/etc/traefik/traefik.yml"
- "./acme.json:/acme.json"
env_file:
- .env
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`traefik.${DOMAIN}`)"
- "traefik.http.routers.api.service=api@internal"
- "traefik.http.routers.api.entrypoints=websecure"
- "traefik.http.routers.api.tls.certresolver=myresolver"
networks:
digilifehub_network:
external: true
```
---
## 🛠️ Vytvoření souboru `traefik.yml`
`traefik.yml` je konfigurační soubor pro Traefik jako takový, nezaměňujte s konfigurací pro docker kontejner (docker-compose.yml)
```yaml
api:
dashboard: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
myresolver:
acme:
email: "${EMAIL}"
storage: "/acme.json"
httpChallenge:
entryPoint: "web"
providers:
docker:
watch: true
exposedByDefault: false
```
---
## 📌 Spuštění kontejneru
Nezapomeňte, že `.env` soubor **nesmí být součástí veřejného repozitáře**.
Přidejte ho do `.gitignore`, pokud používáte Git:
```
.env
```
Nyní spusťte kontejner:
```sh
docker-compose up -d
```
✅ **Traefik nyní běží a můžeme přidávat služby!**
---
## 🌍 Přidání pravidel směrování (subdomény)
### **Portainer dostupný na `portainer.moje-domena.cz`**
```yaml
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
networks:
- digilifehub_network
labels:
- "traefik.enable=true"
- "traefik.http.routers.portainer.rule=Host(`portainer.${DOMAIN}`)"
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls.certresolver=myresolver"
```
✅ **Portainer je nyní dostupný přes HTTPS na `portainer.moje-domena.cz`!**
---
## 🔒 Automatické generování SSL certifikátů s Let's Encrypt
Traefik automaticky vygeneruje **bezpečné certifikáty**, pokud:
1️⃣ Máme **platnou doménu** (např. `moje-domena.cz`).
2️⃣ Doména směřuje na náš server pomocí DNS A záznamu.
3️⃣ Máme správně nastavený **ACME cert resolver** v `traefik.yml`.
Traefik se postará o **automatickou obnovu certifikátů**! ✅
---
## 🛠️ Debugging a logování v Traefiku
**Pokud něco nefunguje:**
📌 Zkontrolujte logy příkazem:
```sh
docker logs traefik --follow
```
📌 **Jak použít AI k řešení chyb?**
- **1️⃣ Zkopírujte chybovou hlášku z logů.**
- **2️⃣ Vložte ji do ChatGPT/Gemini a zeptejte se: "Co způsobuje tuto chybu a jak ji opravit?"**
- **3️⃣ AI vám navrhne řešení.**
✅ **Toto vám ušetří hodiny hledání řešení!**
---
## 🔎 Kam dál? – Pokud chcete jít do hloubky
📌 **Oficiální dokumentace Traefiku:** [https://doc.traefik.io/traefik/](https://doc.traefik.io/traefik/)
📌 Existuje spousta tutoriálů, ale **tento článek ukazuje funkční minimum**.
📌 **V dalším díle:** Jak za Traefikem nasadit první reálnou aplikaci! 🚀
---
## 🏁 Závěr a další kroky
✅ **Máme reverzní proxy, subdomény a HTTPS!**
✅ **Portainer a Traefik jsou dostupné přes subdomény.**
✅ **Používáme `.env` pro bezpečnější správu proměnných.**
👉 **Co si o tom myslíte? Používáte Traefik, nebo preferujete jiná řešení?** Dejte vědět v komentářích!
---
### ⏪ Související články ⏩
> **🔙 Předchozí článek:**
> [[2025-02-03 Portainer (Jak jednoduše spravovat Docker kontejnery přes webové rozhraní)|Portainer (správa Docker kontejnerů)]]
>
> **🔜 Následující článek:**
> [[2025-02-10 PostgreSQL (relační databáze)|PostgreSQL (relační databáze)]]
#docker #traefik #osobniDigitalizace #digilifehub