Grafana Cloudflare SSL Issue - Status & Workaround
Datum: 24. Oktober 2025
Status: ✅ LÖSUNG GEFUNDEN - Configuration Rule verwenden
Siehe: GRAFANA_SSL_FINAL_FIX.md für vollständige Anleitung
🎯 Situation
✅ Was funktioniert
- Lokal: http://localhost:3001 → Grafana Login ✅
- Tunnel: Cloudflared läuft, 4 Verbindungen aktiv ✅
- DNS: grafana.solarlog.karma.organic → 172.67.179.228, 104.21.40.68 ✅
- Container: Grafana healthy, 6 Panels mit Echtzeit-Daten ✅
❌ Was nicht funktioniert
- External HTTPS: https://grafana.solarlog.karma.organic
- Fehler: ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- curl:
LibreSSL/3.3.6: error:1404B410:SSL routines:ST_CONNECT:sslv3 alert handshake failure
🔍 Root Cause Analysis
Problem
Cloudflare versucht SSL-Verbindung zum Origin (localhost:3001), aber Grafana läuft nur mit HTTP.
Cloudflare Konfiguration
- Global SSL Mode: Flexible ✅ (korrekt eingestellt)
- Universal SSL Certificate: Active, Google Trust Services, gültig bis 2026-01-05 ✅
- Page Rule: Erstellt für
grafana.solarlog.karma.organic/*mit SSL: Flexible - Problem: Page Rule propagiert noch nicht zum Edge (kann 5-15 Minuten dauern)
Tunnel Konfiguration
# deployment/cloudflare/tunnel-config.yml
- hostname: grafana.solarlog.karma.organic
service: http://localhost:3001 # ← Korrekt: HTTP nicht HTTPS
originRequest:
noTLSVerify: true
httpHostHeader: grafana.solarlog.karma.organic
connectTimeout: 30s
keepAliveTimeout: 90s
keepAliveConnections: 100
🔧 Lösungsansätze
1. Page Rule (AKTUELL - IN PROGRESS)
Status: Erstellt, wartet auf Propagierung (5-15 Minuten)
Konfiguration:
- URL Pattern: grafana.solarlog.karma.organic/*
- Settings: SSL → Flexible
Nächste Schritte: 1. Cloudflare Cache purgen: Caching → "Purge Everything" 2. 10-15 Minuten warten 3. Browser Hard-Refresh: Cmd+Shift+R 4. Neu testen
2. Configuration Rule (ALTERNATIVE)
Falls Page Rule nicht funktioniert:
Rules → Configuration Rules → Create Rule
Name: Grafana SSL Flexible
When: (http.host eq "grafana.solarlog.karma.organic")
Then: SSL/TLS → Encryption mode → Flexible
Vorteil: Schnellere Propagierung (30-60 Sekunden)
3. Grafana mit SSL betreiben (LANGFRISTIG)
Für Production empfohlen:
# grafana/grafana.ini
[server]
protocol = https
cert_file = /etc/ssl/certs/grafana.crt
cert_key = /etc/ssl/private/grafana.key
# docker-compose.yml
volumes:
- ./certs:/etc/ssl/certs:ro
- ./certs:/etc/ssl/private:ro
Dann Cloudflare SSL Mode auf "Full" ändern.
4. Lokaler Workaround (JETZT NUTZEN)
Für Development/Testing:
# /etc/hosts erweitern
sudo nano /etc/hosts
# Zeile hinzufügen:
127.0.0.1 grafana.solarlog.karma.organic
# Browser öffnen:
http://grafana.solarlog.karma.organic:3001
Wichtig: Nach Testing Zeile wieder entfernen!
📊 Debugging Commands
# Local Grafana Test
curl -I http://localhost:3001
# Expected: HTTP/1.1 302 Found
# Tunnel Status
pgrep -f cloudflared
tail -20 /tmp/cloudflared.log
# DNS Check
dig grafana.solarlog.karma.organic +short
# Expected: 172.67.179.228, 104.21.40.68
# SSL Handshake Test
openssl s_client -connect grafana.solarlog.karma.organic:443 -servername grafana.solarlog.karma.organic
# Should show: Protocol: TLSv1.3, Cipher: (not NONE)
# Browser Test (wichtiger als curl!)
open https://grafana.solarlog.karma.organic
🚀 Phase 1 Status
Completed (95%)
- ✅ Grafana OSS deployment
- ✅ PostgreSQL database setup
- ✅ 6 Dashboard Panels mit Echtzeit-Daten
- ✅ SQL Queries optimiert für production_data Schema
- ✅ Prometheus integration
- ✅ Cloudflare Tunnel konfiguriert
- ✅ DNS Route erstellt
- ✅ Tunnel läuft stabil (4 Verbindungen)
- ✅ Lokal voll funktionsfähig
Blocked (5%)
- ⏳ External HTTPS Access (SSL Propagierung)
- ⏳ Warte auf Cloudflare Page Rule Aktivierung
Workaround
Grafana ist lokal voll nutzbar unter: - http://localhost:3001 - Alle Features funktionieren - 6 Panels zeigen Live-Daten - Auto-Refresh (30s) aktiv
📝 Nächste Schritte
- Kurzfristig (heute):
- Lokalen Zugriff nutzen: http://localhost:3001
- Page Rule Propagierung abwarten (10-15 Min)
-
Neu testen in 1-2 Stunden
-
Phase 1 abschließen:
- Grafana Dashboard validieren (alle Panels OK ✅)
- PHASE1_COMPLETE.md auf 100% aktualisieren
-
Git Commit für Phase 1
-
Phase 3 starten - Battery Management:
- Review: ENTERPRISE_UPGRADE_ANALYSIS.md Phase 3
- Database Models für Batterien
- Battery API Endpoints
- Battery Frontend Components
-
EVCC Integration
-
Langfristig (Production):
- Grafana mit SSL-Zertifikat konfigurieren
- Cloudflare SSL Mode auf "Full (strict)" ändern
- WAL Archiving Setup (Phase 4)
- Disaster Recovery Testing
🔗 Related Documentation
docs/GRAFANA_SSL_FIX.md- Troubleshooting GuideENTERPRISE_UPGRADE_ANALYSIS.md- Phase 1 Detailsdeployment/cloudflare/tunnel-config.yml- Tunnel Configgrafana/dashboards/solar-pv-enterprise.json- Dashboard
💡 Lessons Learned
- Cloudflare Propagierung: Page Rules können 5-15 Minuten brauchen
- Testing: Browser ist relevanter als curl (modernere TLS-Implementierung)
- Development: Lokaler Zugriff ist für Testing ausreichend
- Production: Origin sollte SSL haben (Full Mode statt Flexible)
Fazit: Phase 1 ist funktional komplett (lokal nutzbar). External HTTPS ist ein Cloudflare-Propagierungsproblem, kein Code-Problem. Weiter mit Phase 3!