Files
Rezepte/TRAEFIK_DEPLOYMENT.md
2025-09-22 16:35:59 +02:00

177 lines
4.2 KiB
Markdown

# Traefik Proxy Deployment Guide
## 🚀 Was ist Traefik?
Traefik ist ein moderner HTTP-Reverse-Proxy und Load Balancer, der:
- **Automatische Service-Discovery** aus Docker-Labels
- **Automatische SSL-Zertifikate** via Let's Encrypt
- **Load Balancing** zwischen mehreren Instanzen
- **Dashboard** für Überwachung
- **Middleware** für Auth, Rate Limiting, etc.
## 📁 Traefik Setup Dateien
### 1. `docker-compose.traefik.yml`
Vollständiger Stack mit Traefik, MySQL, Backend und Frontend
### 2. `.env.traefik.example`
Template für Umgebungsvariablen mit Domain-Konfiguration
### 3. `deploy-traefik.sh`
Automatisches Deployment-Skript
## 🌐 Domain-Konfiguration
### DNS-Einträge erforderlich:
```
# A-Records auf die IP Ihres Servers:
rezepte.my.domain.com → 1.2.3.4
traefik.my.domain.com → 1.2.3.4
# Oder Wildcard (einfacher):
*.my.domain.com → 1.2.3.4
```
### .env.production Beispiel:
```env
DOMAIN=my.domain.com
ACME_EMAIL=admin@my.domain.com
MYSQL_PASSWORD=super_secure_password_123
MYSQL_ROOT_PASSWORD=even_more_secure_root_password_456
BACKEND_IMAGE=ghcr.io/username/rezepte-klaus-backend:latest
FRONTEND_IMAGE=ghcr.io/username/rezepte-klaus-frontend:latest
```
## 🔧 Server-Deployment
### Minimale Dateien auf Server:
```bash
# Server-Struktur
/opt/rezepte-klaus/
├── docker-compose.traefik.yml
├── .env.production
├── deploy-traefik.sh
├── Rezepte.sql
├── ingredients.sql
├── Zubereitung.sql
└── rezepte_bilder.sql
```
### Deployment-Schritte:
```bash
# 1. Dateien auf Server kopieren
scp docker-compose.traefik.yml user@server:/opt/rezepte-klaus/
scp .env.production user@server:/opt/rezepte-klaus/
scp *.sql user@server:/opt/rezepte-klaus/
scp deploy-traefik.sh user@server:/opt/rezepte-klaus/
# 2. Auf Server einloggen und deployen
ssh user@server
cd /opt/rezepte-klaus
chmod +x deploy-traefik.sh
./deploy-traefik.sh
```
## 🔒 SSL/HTTPS Features
- **Automatische Let's Encrypt Zertifikate**
- **Automatische HTTP → HTTPS Weiterleitung**
- **HSTS Security Headers**
- **Zertifikat-Erneuerung** automatisch
## 🎯 Zugangspunkte
Nach erfolgreichem Deployment:
### 📱 Haupt-Anwendung:
```
https://rezepte.my.domain.com
```
### 🎛️ Traefik Dashboard:
```
https://traefik.my.domain.com
Username: admin
Password: admin (BITTE ÄNDERN!)
```
## 🔧 Traefik Dashboard Auth ändern
### Neues Passwort generieren:
```bash
# Mit htpasswd (Apache utils)
htpasswd -nb admin new_password
# Mit Python
python3 -c "import crypt; print(crypt.crypt('new_password', crypt.mksalt(crypt.METHOD_SHA512)))"
# Mit Docker
docker run --rm httpd:alpine htpasswd -nbB admin new_password
```
### Im docker-compose.traefik.yml ersetzen:
```yaml
- "traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$10$$NEW_HASH_HERE"
```
## 📊 Überwachung
### Logs anzeigen:
```bash
# Alle Services
docker-compose -f docker-compose.traefik.yml logs -f
# Nur Traefik
docker-compose -f docker-compose.traefik.yml logs -f traefik
# Nur Backend
docker-compose -f docker-compose.traefik.yml logs -f backend
```
### Service Status:
```bash
docker-compose -f docker-compose.traefik.yml ps
```
## 🛠️ Wartung
### Updates deployen:
```bash
docker-compose -f docker-compose.traefik.yml pull
docker-compose -f docker-compose.traefik.yml up -d
```
### Container neustarten:
```bash
docker-compose -f docker-compose.traefik.yml restart
```
### Vollständiger Neustart:
```bash
docker-compose -f docker-compose.traefik.yml down
docker-compose -f docker-compose.traefik.yml up -d
```
## 🔍 Troubleshooting
### SSL-Zertifikat Probleme:
1. DNS-Einträge prüfen: `nslookup rezepte.my.domain.com`
2. Firewall-Ports 80/443 öffnen
3. Traefik Logs prüfen: `docker logs traefik`
### Service nicht erreichbar:
1. Container Status: `docker-compose ps`
2. Health Checks: `docker inspect container_name`
3. Netzwerk: `docker network ls`
## ✅ Vorteile der Traefik-Lösung:
- 🔒 **Automatisches HTTPS** mit Let's Encrypt
- 🌐 **Subdomain-basiertes Routing** (rezepte.domain.com)
- 📊 **Web-Dashboard** für Monitoring
- 🔄 **Automatische Service-Discovery**
- 🛡️ **Integrierte Sicherheits-Middleware**
- 📈 **Load Balancing** für Skalierung
- 🔧 **Zero-Downtime Deployments**
Das ist die professionelle Lösung für Produktions-Deployments! 🚀