🔧 SSL-Fehler beheben: Cloudflare Tunnel für Grafana
Problem
curl und andere CLI-Tools zeigen SSL-Handshake-Fehler:
Ursache
Cloudflare's SSL/TLS-Verschlüsselungsmodus ist nicht korrekt für HTTP-Origins konfiguriert.
✅ Lösung: Cloudflare Dashboard-Einstellungen
Option 1: SSL/TLS auf "Flexible" setzen (Empfohlen für HTTP-Origin)
- Öffne Cloudflare Dashboard:
- https://dash.cloudflare.com/
-
Wähle Domain: karma.organic
-
Navigiere zu SSL/TLS-Einstellungen:
- Linke Sidebar → SSL/TLS
-
Tab: Overview
-
Ändere Verschlüsselungsmodus:
- Aktuell wahrscheinlich: Full oder Full (strict)
- Ändere zu: Flexible
Flexible bedeutet: - ✅ Cloudflare ↔ Browser: HTTPS (SSL/TLS) - ✅ Cloudflare ↔ Origin (localhost:3001): HTTP (kein SSL) - ✅ Perfekt für unsere Konfiguration!
- Speichern und warten:
- Änderungen werden sofort aktiv
-
Warte 1-2 Minuten für Edge-Propagierung
-
Testen:
Option 2: SSL/TLS für spezifische Subdomain (Erweitert)
Falls du "Full" für andere Subdomains behalten willst:
- Page Rules erstellen:
- Cloudflare Dashboard → Rules → Page Rules
-
Create Page Rule
-
Konfiguration:
-
Save and Deploy
Option 3: Self-Signed Cert für Grafana (Nicht empfohlen)
Alternativ könntest du Grafana mit einem Self-Signed Zertifikat konfigurieren und "Full" in Cloudflare nutzen, aber das ist unnötig komplex für lokale Development.
🧪 Nach der Änderung testen
CLI-Test:
# Sollte HTTP 302 (Redirect zu /login) zeigen
curl -I https://grafana.solarlog.karma.organic
# Sollte Grafana-HTML zurückgeben
curl -sL https://grafana.solarlog.karma.organic | head -20
Browser-Test:
# Öffne in Browser
open https://grafana.solarlog.karma.organic
# Login:
# Username: admin
# Password: solarlog_grafana_2024
📊 Status-Check
# 1. Lokaler Zugriff (sollte IMMER funktionieren)
curl -I http://localhost:3001
# ✅ Erwartung: HTTP/1.1 302 Found
# 2. DNS-Auflösung
nslookup grafana.solarlog.karma.organic
# ✅ Erwartung: 104.21.40.68, 172.67.179.228
# 3. Tunnel-Status
pgrep -fl cloudflared
# ✅ Erwartung: Prozess-ID mit "run solarlog-tunnel"
# 4. HTTPS-Zugriff (nach Cloudflare-Änderung)
curl -I https://grafana.solarlog.karma.organic
# ✅ Erwartung: HTTP/1.1 302 Found
🔍 Warum Flexible und nicht Full?
| Modus | Browser→CF | CF→Origin | Use Case |
|---|---|---|---|
| Off | HTTP | HTTP | Keine Verschlüsselung |
| Flexible | HTTPS | HTTP | Origin ohne SSL (unser Fall!) |
| Full | HTTPS | HTTPS (self-signed OK) | Origin mit SSL |
| Full (strict) | HTTPS | HTTPS (valid cert) | Production mit echten Certs |
Unser Setup:
- Grafana läuft in Docker: http://localhost:3001 (kein SSL)
- Cloudflare Tunnel: Verbindet zu http://localhost:3001
- User-Zugriff: https://grafana.solarlog.karma.organic (SSL von Cloudflare)
→ "Flexible" ist die richtige Wahl!
⚠️ Wichtig: Sicherheit
Frage: Ist "Flexible" unsicher?
Antwort: Nein! Weil: 1. ✅ Traffic Browser → Cloudflare ist verschlüsselt (HTTPS) 2. ✅ Traffic Cloudflare → Origin ist lokal (localhost, kein Internet) 3. ✅ Cloudflare Tunnel nutzt eigene Verschlüsselung 4. ✅ Niemand kann Traffic zwischen Cloudflare und localhost abhören
"Flexible" ist perfekt für lokale Docker-Container!
🚀 Alternative: Browser nutzen
Falls Cloudflare-Änderung nicht sofort möglich:
Browser ignorieren oft SSL-Fehler besser als CLI-Tools:
# Öffne in Chrome/Safari/Firefox:
open https://grafana.solarlog.karma.organic
# Falls Warnung erscheint:
# Chrome: "Erweitert" → "Trotzdem fortfahren"
# Safari: "Details" → "Website besuchen"
# Firefox: "Erweitert" → "Risiko akzeptieren"
Browser haben modernere SSL-Stacks und können mit Cloudflare's Zertifikaten besser umgehen als curl/LibreSSL.
📝 Zusammenfassung
Problem:
- SSL-Handshake schlägt fehl bei curl
Ursache: - Cloudflare SSL/TLS-Modus passt nicht zu HTTP-Origin
Lösung:
1. ✅ Cloudflare Dashboard öffnen
2. ✅ SSL/TLS → Overview
3. ✅ Modus ändern: Flexible
4. ✅ 1-2 Minuten warten
5. ✅ Testen mit curl oder Browser
Nach der Änderung:
Status: Tunnel läuft ✅ | DNS propagiert ✅ | SSL-Modus anpassen ⏳