All checks were successful
Production Deployment (Zero Downtime) / deploy-production (push) Successful in 12m1s
- Add diagnose-production.sh script for comprehensive production diagnostics - Add fix-production.sh script for automatic production issue resolution - Add PRODUCTION_TROUBLESHOOTING.md documentation with step-by-step guides - Remove eye icon from ActivityFeed header (keep only X button for minimize) - Improve error handling and network connectivity checks
7.2 KiB
7.2 KiB
Production Troubleshooting Guide
502 Bad Gateway Errors
Symptome
- Website zeigt 502 Bad Gateway
- Activity Feed zeigt nur "Loading"
- Chat funktioniert nicht
- API-Endpunkte geben 502 zurück
Ursachen
- Container läuft nicht - Der
portfolio-appContainer ist gestoppt oder crashed - Proxy Netzwerk fehlt - Das
proxyNetzwerk existiert nicht oder Container ist nicht verbunden - Nginx Proxy Manager Konfiguration - Falsche Hostname/IP oder Port-Konfiguration
- Container Health Check fehlgeschlagen - Container läuft, aber die Anwendung ist nicht bereit
Lösungsschritte
1. Diagnose ausführen
./scripts/diagnose-production.sh
Dieses Script prüft:
- Container-Status
- Netzwerk-Verbindungen
- Health Checks
- API-Endpunkte
- Environment Variables
2. Automatischer Fix
./scripts/fix-production.sh
Dieses Script:
- Erstellt das
proxyNetzwerk falls es fehlt - Verbindet den Container mit dem
proxyNetzwerk - Startet den Container neu falls nötig
- Prüft Health Checks
3. Manuelle Schritte
Container-Status prüfen:
docker ps -a | grep portfolio-app
docker logs portfolio-app --tail=50
Proxy Netzwerk prüfen:
docker network ls | grep proxy
docker inspect portfolio-app | grep -A 10 Networks
Container neu starten:
cd /workspace/denshooter/portfolio
docker compose -f docker-compose.production.yml restart portfolio
Container mit Proxy-Netzwerk verbinden:
# Falls Netzwerk fehlt
docker network create proxy
# Container neu erstellen
docker compose -f docker-compose.production.yml up -d --force-recreate
4. Nginx Proxy Manager Konfiguration prüfen
- Gehe zu Nginx Proxy Manager → Hosts → Proxy Hosts
- Öffne die Konfiguration für
dk0.dev - Details Tab prüfen:
- Forward Hostname/IP: Muss
portfolio-appsein (NICHTlocalhostoder127.0.0.1) - Forward Port:
3000 - Forward Scheme:
http
- Forward Hostname/IP: Muss
- Advanced Tab prüfen:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
5. Container-Logs prüfen
# Alle Logs
docker logs portfolio-app
# Letzte 100 Zeilen
docker logs portfolio-app --tail=100
# Logs in Echtzeit
docker logs portfolio-app -f
React Hydration Error #418
Symptome
- Browser Console zeigt:
Error: Minified React error #418 - Website funktioniert, aber es gibt Warnungen
- Unterschiede zwischen Server- und Client-Rendering
Ursachen
- Client-only Komponenten werden auf dem Server gerendert
- Unterschiedliche Daten zwischen Server und Client
- Browser-spezifische APIs auf dem Server
Lösung
ActivityFeed Komponente:
- Die Komponente ist bereits als
"use client"markiert - Verwendet
ClientOnlyWrapper für client-only Features - Loading-State verhindert Hydration-Mismatches
Wenn der Fehler weiterhin auftritt:
- Browser Cache leeren
- Hard Refresh (Ctrl+Shift+R / Cmd+Shift+R)
- Container-Logs auf React-Fehler prüfen
Activity Feed zeigt nur "Loading"
Ursachen
- n8n Webhook nicht erreichbar -
N8N_WEBHOOK_URList nicht gesetzt oder falsch - API-Endpunkt gibt Fehler zurück -
/api/n8n/statusfunktioniert nicht - CORS-Probleme - n8n blockiert Requests
- Rate Limiting - Zu viele Requests
Lösung
1. Environment Variables prüfen:
docker exec portfolio-app printenv | grep N8N
2. API-Endpunkt direkt testen:
# Von außen
curl https://dk0.dev/api/n8n/status
# Von innen
docker exec portfolio-app curl http://localhost:3000/api/n8n/status
3. n8n Webhook testen:
# Ersetze WEBHOOK_URL mit deiner tatsächlichen URL
curl "https://n8n.dk0.dev/webhook/denshooter-71242/status"
4. Gitea Variables prüfen:
- Gehe zu Gitea → Repository → Settings → Variables
- Prüfe ob
N8N_WEBHOOK_URL,N8N_SECRET_TOKEN,N8N_API_KEYgesetzt sind - Stelle sicher, dass diese auch in
docker-compose.production.ymlverwendet werden
Chat funktioniert nicht
Ursachen
- n8n Webhook nicht erreichbar - Gleiche Ursache wie Activity Feed
- API-Endpunkt gibt 502 zurück - Container-Problem
- CORS-Probleme - n8n blockiert Requests
- Timeout - n8n antwortet zu langsam
Lösung
1. API-Endpunkt testen:
# POST Request testen
curl -X POST https://dk0.dev/api/n8n/chat \
-H "Content-Type: application/json" \
-d '{"message": "Hello"}'
2. Container-Logs prüfen:
docker logs portfolio-app | grep -i "chat\|n8n"
3. n8n Webhook direkt testen:
curl -X POST "https://n8n.dk0.dev/webhook/chat" \
-H "Content-Type: application/json" \
-d '{"message": "Hello", "history": []}'
Häufige Probleme und Lösungen
Problem: Container startet, aber Health Check schlägt fehl
Lösung:
# Prüfe ob curl im Container verfügbar ist
docker exec portfolio-app which curl
# Teste Health Endpoint manuell
docker exec portfolio-app curl -f http://localhost:3000/api/health
Problem: Container läuft, aber Port 3000 ist nicht erreichbar
Lösung:
# Prüfe Port-Mapping
docker port portfolio-app
# Teste von innen
docker exec portfolio-app curl http://localhost:3000/api/health
# Teste von außen (sollte funktionieren wenn Port gemappt ist)
curl http://localhost:3000/api/health
Problem: Proxy Netzwerk existiert nicht
Lösung:
# Erstelle Proxy Netzwerk
docker network create proxy
# Verbinde Container
docker network connect proxy portfolio-app
# Oder Container neu erstellen
docker compose -f docker-compose.production.yml up -d --force-recreate
Problem: Nginx Proxy Manager kann Container nicht erreichen
Lösung:
- Stelle sicher, dass beide im
proxyNetzwerk sind:docker network inspect proxy - Prüfe Nginx Proxy Manager Container:
docker ps | grep nginx docker inspect <nginx-container> | grep -A 10 Networks - Teste Verbindung von Nginx Container zu Portfolio Container:
docker exec <nginx-container> ping portfolio-app
Nützliche Befehle
# Container-Status
docker ps -a | grep portfolio
# Container-Logs
docker logs portfolio-app --tail=100 -f
# Container-Netzwerke
docker inspect portfolio-app | grep -A 20 Networks
# Health Check Status
docker inspect portfolio-app --format='{{.State.Health.Status}}'
# Environment Variables
docker exec portfolio-app printenv
# Shell im Container öffnen
docker exec -it portfolio-app sh
# Container neu starten
docker compose -f docker-compose.production.yml restart portfolio
# Container neu erstellen
docker compose -f docker-compose.production.yml up -d --force-recreate
# Alle Container stoppen
docker compose -f docker-compose.production.yml down
# Container mit Logs starten
docker compose -f docker-compose.production.yml up
Support
Wenn die Probleme weiterhin bestehen:
- Führe
./scripts/diagnose-production.shaus - Speichere die Ausgabe
- Prüfe Container-Logs:
docker logs portfolio-app --tail=100 - Prüfe Nginx Proxy Manager Logs
- Erstelle ein Issue mit allen Informationen