Docker mit traefik und portainer
This commit is contained in:
177
TRAEFIK_DEPLOYMENT.md
Normal file
177
TRAEFIK_DEPLOYMENT.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# 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! 🚀
|
||||
Reference in New Issue
Block a user