docs: update Caddy setup documentation and clarify network warnings
- Corrected the container port for health check from 3010 to 3000 in Caddy setup instructions. - Added a section addressing a harmless network warning during deployment, including an optional fix script for user convenience. - Enhanced clarity and usability of the documentation for better user experience.
This commit is contained in:
@@ -210,8 +210,26 @@ openssl s_client -connect xn--hrdle-jua.de:443 -servername xn--hrdle-jua.de < /d
|
||||
2. Prüfe, ob hoerdle-Container läuft: `docker ps | grep hoerdle`
|
||||
3. Teste Verbindung von Caddy zu Hördle:
|
||||
```bash
|
||||
docker exec hoerdle-caddy wget -O- http://hoerdle:3010/api/health
|
||||
docker exec hoerdle-caddy wget -O- http://hoerdle:3000/api/health
|
||||
```
|
||||
**Hinweis**: Der Container-Port ist 3000 (nicht 3010, das ist nur der Host-Port).
|
||||
|
||||
### Netzwerk-Warnung beim Deployment
|
||||
|
||||
**Problem**: Warnung `network hoerdle_default was found but has incorrect label`
|
||||
|
||||
**Erklärung**: Diese Warnung ist **harmlos** und kann ignoriert werden. Docker Compose funktioniert trotzdem einwandfrei. Sie entsteht, wenn das Netzwerk bereits existiert, aber nicht von Docker Compose erstellt wurde.
|
||||
|
||||
**Optional: Warnung beheben** (nur wenn sie stört):
|
||||
```bash
|
||||
# Reparatur-Skript ausführen (stoppt Container kurz)
|
||||
./scripts/fix-network.sh
|
||||
|
||||
# Danach Container neu starten
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
**Hinweis**: Das Reparatur-Skript stoppt alle Container kurz, die das Netzwerk nutzen. In Produktion sollte dies außerhalb der Hauptnutzungszeit erfolgen.
|
||||
|
||||
## Deployment-Workflow
|
||||
|
||||
|
||||
99
scripts/debug-server-error.sh
Executable file
99
scripts/debug-server-error.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
# Script zum Debuggen von Server-Errors in Hördle
|
||||
# Zeigt relevante Logs und Status-Informationen
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔍 Hördle Server Error Debugging"
|
||||
echo "=================================="
|
||||
echo ""
|
||||
|
||||
# Container-Status prüfen
|
||||
echo "📦 Container-Status:"
|
||||
docker ps --filter "name=hoerdle" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||
echo ""
|
||||
|
||||
# Prüfe ob Container läuft
|
||||
if ! docker ps | grep -q "hoerdle"; then
|
||||
echo "❌ FEHLER: hoerdle Container läuft nicht!"
|
||||
echo ""
|
||||
echo "Versuche Container zu starten..."
|
||||
docker compose up -d
|
||||
sleep 5
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Letzte Logs anzeigen
|
||||
echo "📋 Letzte 50 Zeilen der Container-Logs:"
|
||||
echo "----------------------------------------"
|
||||
docker logs --tail=50 hoerdle 2>&1 | tail -50
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
# Suche nach Fehlern in den Logs
|
||||
echo "🚨 Fehler in den Logs (letzte 100 Zeilen):"
|
||||
echo "----------------------------------------"
|
||||
docker logs --tail=100 hoerdle 2>&1 | grep -i -E "error|exception|failed|fatal|panic" || echo "Keine offensichtlichen Fehler gefunden"
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
# Container Health Status
|
||||
echo "💚 Health Check Status:"
|
||||
docker inspect hoerdle --format='{{json .State.Health}}' | python3 -m json.tool 2>/dev/null || docker inspect hoerdle --format='{{.State.Status}}'
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
# Prüfe ob der Server auf Port 3000 antwortet (intern)
|
||||
echo "🔌 Port-Verbindungstest (intern, Port 3000):"
|
||||
echo "----------------------------------------"
|
||||
docker exec hoerdle curl -f -s -o /dev/null -w "HTTP Status: %{http_code}\n" http://localhost:3000/api/daily 2>&1 || echo "❌ Verbindung fehlgeschlagen"
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
# Prüfe Datenbank
|
||||
echo "💾 Datenbank-Status:"
|
||||
echo "----------------------------------------"
|
||||
if docker exec hoerdle test -f /app/data/prod.db; then
|
||||
echo "✅ Datenbankdatei existiert"
|
||||
DB_SIZE=$(docker exec hoerdle stat -c%s /app/data/prod.db 2>/dev/null || echo "unbekannt")
|
||||
echo " Größe: $DB_SIZE Bytes"
|
||||
else
|
||||
echo "❌ Datenbankdatei nicht gefunden!"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Prüfe Umgebungsvariablen (wichtige)
|
||||
echo "🔐 Wichtige Umgebungsvariablen:"
|
||||
echo "----------------------------------------"
|
||||
docker exec hoerdle env | grep -E "DATABASE_URL|NODE_ENV|PORT|HOSTNAME" || echo "Keine gefunden"
|
||||
echo ""
|
||||
|
||||
# Prüfe ob Next.js Server läuft
|
||||
echo "🌐 Next.js Prozess-Status:"
|
||||
echo "----------------------------------------"
|
||||
docker exec hoerdle ps aux | grep -E "node|next" | grep -v grep || echo "Keine Next.js Prozesse gefunden"
|
||||
echo ""
|
||||
|
||||
# Netzwerk-Verbindung prüfen
|
||||
echo "🌐 Netzwerk-Verbindungen:"
|
||||
echo "----------------------------------------"
|
||||
docker network inspect hoerdle_default --format='{{range .Containers}}{{.Name}}: {{.IPv4Address}}{{"\n"}}{{end}}' 2>/dev/null || echo "Netzwerk nicht gefunden"
|
||||
echo ""
|
||||
|
||||
# Caddy Status (falls vorhanden)
|
||||
if docker ps | grep -q "hoerdle-caddy"; then
|
||||
echo "🚪 Caddy-Container Status:"
|
||||
echo "----------------------------------------"
|
||||
docker logs --tail=20 hoerdle-caddy 2>&1 | tail -20
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "=================================="
|
||||
echo "✅ Debug-Informationen gesammelt"
|
||||
echo ""
|
||||
echo "💡 Nächste Schritte:"
|
||||
echo "1. Prüfe die Fehler-Logs oben"
|
||||
echo "2. Prüfe ob die Datenbank erreichbar ist"
|
||||
echo "3. Prüfe ob alle Umgebungsvariablen gesetzt sind"
|
||||
echo "4. Bei weiteren Problemen: docker logs hoerdle --tail=200"
|
||||
|
||||
51
scripts/fix-network.sh
Executable file
51
scripts/fix-network.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
# Script zum Reparieren des Docker-Netzwerks hoerdle_default
|
||||
# Dieses Script behebt die Warnung über falsche Netzwerk-Labels
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔧 Repariere Docker-Netzwerk hoerdle_default..."
|
||||
|
||||
# Prüfe, ob Container laufen
|
||||
RUNNING_CONTAINERS=$(docker ps --filter "network=hoerdle_default" --format "{{.Names}}" | wc -l)
|
||||
|
||||
if [ "$RUNNING_CONTAINERS" -gt 0 ]; then
|
||||
echo "⚠️ Warnung: Es laufen noch Container, die das Netzwerk nutzen."
|
||||
echo "📋 Container, die betroffen sind:"
|
||||
docker ps --filter "network=hoerdle_default" --format " - {{.Names}}"
|
||||
echo ""
|
||||
echo "Möchtest du fortfahren? Die Container müssen neu gestartet werden. (j/n)"
|
||||
read -r response
|
||||
if [ "$response" != "j" ] && [ "$response" != "J" ]; then
|
||||
echo "❌ Abgebrochen."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🛑 Stoppe Container..."
|
||||
docker compose down || true
|
||||
if [ -f "docker-compose.caddy.yml" ]; then
|
||||
docker compose -f docker-compose.caddy.yml down || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Prüfe, ob Netzwerk existiert
|
||||
if docker network ls | grep -q "hoerdle_default"; then
|
||||
echo "🗑️ Lösche altes Netzwerk..."
|
||||
docker network rm hoerdle_default || {
|
||||
echo "❌ Netzwerk konnte nicht gelöscht werden. Möglicherweise sind noch Container verbunden."
|
||||
echo " Versuche, alle Container zu trennen..."
|
||||
docker network disconnect hoerdle_default $(docker ps -q --filter "network=hoerdle_default") 2>/dev/null || true
|
||||
sleep 2
|
||||
docker network rm hoerdle_default || {
|
||||
echo "❌ Netzwerk konnte immer noch nicht gelöscht werden."
|
||||
echo " Bitte manuell prüfen: docker network inspect hoerdle_default"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
fi
|
||||
|
||||
echo "✨ Netzwerk erfolgreich gelöscht."
|
||||
echo "📝 Das Netzwerk wird beim nächsten 'docker compose up' automatisch neu erstellt."
|
||||
echo ""
|
||||
echo "✅ Fertig! Du kannst jetzt 'docker compose up -d' ausführen."
|
||||
|
||||
Reference in New Issue
Block a user