177 lines
4.2 KiB
Markdown
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! 🚀 |