Files
hoerdle/docs/CADDY_TROUBLESHOOTING.md
Hördle Bot e3a09864a6 Refactor: Dokumentation nach docs/ verschoben
- Alle Markdown-Dateien (außer README.md) nach docs/ verschoben
- Referenzen in README.md aktualisiert
- /docs zu .dockerignore hinzugefügt
2025-12-01 17:58:32 +01:00

5.0 KiB

Caddy Zertifikat-Troubleshooting

Problem: Zertifikat für Punycode-Domain (hördle.de / xn--hrdle-jua.de) fehlt

Wenn die Domain hördle.de (xn--hrdle-jua.de) einen ERR_SSL_PROTOCOL_ERROR zeigt, bedeutet das, dass kein gültiges SSL-Zertifikat vorhanden ist.

Schritt 1: Zertifikat-Status prüfen

Führe das Check-Script aus:

./scripts/check-caddy-certificates.sh

Dieses Script prüft:

  • Ob Caddy läuft
  • Welche Zertifikate vorhanden sind
  • Ob die DNS-Einträge korrekt sind
  • Ob die HTTPS-Verbindungen funktionieren

Schritt 2: DNS-Einträge prüfen

Wichtig: Beide Domains müssen auf die gleiche Server-IP zeigen!

In GoDaddy prüfen:

  1. Gehe zu GoDaddy DNS-Verwaltung

  2. Prüfe die A-Records:

    Für hoerdle.de:

    • Name: @ oder hoerdle.de
    • Typ: A
    • Wert: DEINE_SERVER_IP

    Für hördle.de (Punycode):

    • Name: @ oder xn--hrdle-jua.de (oder der Unicode-Name, falls unterstützt)
    • Typ: A
    • Wert: GLEICHE_SERVER_IP wie hoerdle.de

DNS manuell testen:

# Prüfe hoerdle.de
dig +short hoerdle.de @8.8.8.8

# Prüfe xn--hrdle-jua.de (Punycode)
dig +short xn--hrdle-jua.de @8.8.8.8

# Beide sollten die gleiche IP zurückgeben!

Schritt 3: Zertifikat neu erstellen

Wenn die DNS-Einträge korrekt sind, lösche das alte (fehlgeschlagene) Zertifikat und lass Caddy es neu erstellen:

./scripts/renew-caddy-certificates.sh

Wähle Option 2: "Nur Zertifikat für xn--hrdle-jua.de löschen"

Schritt 4: Caddy-Logs überwachen

Während Caddy das Zertifikat erstellt, überwache die Logs:

docker logs hoerdle-caddy -f

Du solltest sehen:

  • [INFO] attempting ACME challenge - Caddy versucht die Challenge
  • [INFO] successfully completed ACME challenge - Challenge erfolgreich
  • [INFO] certificate obtained successfully - Zertifikat erstellt

Bei Fehlern siehst du:

  • [ERROR] acme: error - Challenge fehlgeschlagen
  • [ERROR] unable to validate - Validierung fehlgeschlagen

Schritt 5: Häufige Probleme und Lösungen

Problem 1: DNS zeigt auf falsche IP

Symptom: dig zeigt eine andere IP als erwartet

Lösung:

  1. Prüfe DNS-Einträge in GoDaddy
  2. Warte auf DNS-Propagierung (kann 5-60 Minuten dauern)
  3. Verwende einen DNS-Checker: https://www.whatsmydns.net/

Problem 2: Port 80 nicht erreichbar

Symptom: Caddy-Logs zeigen "connection refused" oder Timeout

Lösung:

  1. Prüfe Firewall: sudo ufw status
  2. Prüfe ob Port 80 offen ist: sudo netstat -tulpn | grep :80
  3. Prüfe ob Caddy auf Port 80 lauscht: docker exec hoerdle-caddy netstat -tulpn | grep :80

Problem 3: Let's Encrypt Rate Limit

Symptom: Logs zeigen "too many certificates already issued"

Lösung:

  • Warte 1 Woche (Rate Limit von Let's Encrypt)
  • Oder verwende Staging-Environment zum Testen:
    tls {
        staging
    }
    

Problem 4: Punycode-Domain wird nicht erkannt

Symptom: Caddy erstellt Zertifikat nur für hoerdle.de, nicht für xn--hrdle-jua.de

Lösung:

  1. Prüfe ob beide Domains in der Caddyfile stehen
  2. Prüfe DNS-Einträge (siehe Schritt 2)
  3. Erzwinge Zertifikat-Erstellung (siehe Schritt 3)

Manuelle Zertifikat-Löschung

Falls das Script nicht funktioniert, kannst du Zertifikate manuell löschen:

# Alle Zertifikate löschen
docker exec hoerdle-caddy rm -rf /data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/*

# Nur Punycode-Zertifikat löschen (manuell)
docker exec hoerdle-caddy find /data/caddy/certificates -name "*xn--*" -delete

# Container neu starten
docker compose -f docker-compose.caddy.yml --profile production restart caddy

DNS-Propagierung prüfen

Nach DNS-Änderungen kann es bis zu 60 Minuten dauern, bis alle DNS-Server aktualisiert sind:

# Prüfe DNS-Propagierung weltweit
curl "https://dnschecker.org/#A/hoerdle.de"
curl "https://dnschecker.org/#A/xn--hrdle-jua.de"

Test-Zertifikat erstellen (Staging)

Zum Testen ohne Rate-Limits kannst du ein Staging-Zertifikat erstellen:

  1. Temporär Caddyfile ändern (in beiden Domain-Blocks):
tls {
    staging
}
  1. Container neu starten
  2. Zertifikat erstellen lassen
  3. Zurück zu Produktion ändern (Staging-Block entfernen)
  4. Erneut Container neu starten

Verifizieren, dass es funktioniert

Nach erfolgreicher Zertifikats-Erstellung:

# Teste HTTPS-Verbindung
curl -I https://hoerdle.de
curl -I https://xn--hrdle-jua.de

# Prüfe Zertifikat-Details
echo | openssl s_client -connect hoerdle.de:443 -servername hoerdle.de 2>/dev/null | openssl x509 -noout -subject -dates
echo | openssl s_client -connect xn--hrdle-jua.de:443 -servername xn--hrdle-jua.de 2>/dev/null | openssl x509 -noout -subject -dates

Support

Falls das Problem weiterhin besteht:

  1. Prüfe Caddy-Logs: docker logs hoerdle-caddy
  2. Prüfe DNS: dig +short xn--hrdle-jua.de @8.8.8.8
  3. Prüfe Firewall: sudo ufw status
  4. Prüfe Port-Zugriff: curl -I http://hoerdle.de