Bisher war die H:-Nearline-Kopie nur als Backup-Ziel beschrieben
(CAPACITY_AND_LIFECYCLE), nicht als Restore-Quelle. Im Ernstfall fehlte der
Hinweis, dass auf baerchen eine frische lokale Kopie aller Dumps + Bundles
liegt.
- ops/h-drive-nearline/README.md: neuer Abschnitt "Restore aus H:/ (DR-Fall)"
mit Inhalt, Rueckspiel-Weg (-> RESTORE_MATRIX / SERVICES_RECOVERY) und
Pflicht-Frische-Pruefung (deckt den S4U-Stale-Fall ab).
- docs/DISASTER_RECOVERY.md: baerchen-Abschnitt verweist jetzt auf die
H:-Fallback-Restore-Quelle und das Runbook.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Task "KalliLab H Drive Nearline Pull" am 2026-06-21 von S4U auf LogonType
Interactive ("Nur ausfuehren, wenn der Benutzer angemeldet ist") umgestellt.
Kein gespeichertes Passwort noetig, da michi der dauerhaft angemeldete
Konsolen-User ist. Per Scheduler ausgeloest, Ergebnis 0x0 verifiziert
(SMB-Zugriff vorhanden, Spiegel frisch).
Doku korrigiert: README beschreibt jetzt Interactive als angewendete Loesung
(Password war nur die nicht genutzte Alternative). MASTER_TODO: Root-Cause
behoben, nur noch optionale Healthchecks-URL offen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diagnose 2026-06-21: Der Scheduled Task "KalliLab H Drive Nearline Pull"
lief als LogonType S4U (ohne gespeichertes Passwort) und hatte damit keine
Netzwerk-Anmeldeinformationen fuer den SMB-Share \192.168.178.58\backups.
Jeder geplante 05:30-Lauf brach still mit Exit 1 ab, ohne Report; der
Nearline-Spiegel war 2026-06-19 bis 2026-06-21 veraltet. Manuell nachgezogen,
Spiegel wieder frisch.
pull-critical-backups.ps1: explizites `exit 0` auf dem Erfolgspfad, damit der
letzte robocopy-Exitcode (1 = "Dateien kopiert") nicht als Prozess-Exit leakt
und der Scheduled Task ein wahrheitsgemaesses Ergebnis meldet.
README: Pflicht-Hinweis, dass der Task mit gespeichertem Passwort (nicht S4U)
laufen muss. MASTER_TODO: Root-Cause + verbleibender Operator-Schritt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Schliesst den lokalen Code-Stand fuer zwei offene MASTER_TODO-Punkte ab.
monitoring: restliche Einzeldatei-Bind-Mounts (alertmanager, blackbox,
loki, promtail, alertmanager-ntfy-bridge) auf Directory-Mounts umgestellt,
analog zum Prometheus-Fix vom 2026-06-19. Vermeidet "Stale NFS file handle"
auf dem /mnt/user-FUSE-Share bei git/Komodo-Updates. grafana-provisioning
war bereits Directory-Mount. `docker compose config` gruen. Beim Deploy
--force-recreate noetig, da sich Mount-Zielpfade aendern.
backup: endpoint-agnostischer Dead-Man's-Switch (Healthchecks-kompatibel,
Cloud oder self-hosted) in pull-critical-backups.ps1 und pre-borg.sh.
Pings /start, Erfolg und /fail; No-Op ohne konfigurierte URL, bricht also
keinen Lauf. Ping-URLs sind Capability-URLs und bleiben als Secret
ausserhalb des Repos.
Doku: SECRETS_MAP, Nearline-README und MASTER_TODO nachgezogen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Bewertungs-Banner: LEFT JOIN von der immer vorhandenen Temperatur-Reihe statt
CROSS JOIN; leeres gw3000a_daily_rain killt die Zeile nicht mehr. Ergebnis als
numerischer Code 0-4 mit Value-Mapping auf Text+Farbe (robust gegen Strings).
- Regen-Karte: noValue "0 mm" statt "No data", wenn keine Regen-Samples vorliegen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 6 runde Gauges wie im Wetterarchiv (Temp max/min, Luftfeuchte Ø, Boee max,
UV max, Solar max) mit denselben continuous-Farbverlaeufen
- Strip aus 3 Stat-Karten (Gefuehlt max, Regen, Luftdruck Ø) mit Sparkline
- Bewertungs-Banner und 2 Tagescharts (Temperatur, Solar+UV)
Loest den schwer lesbaren einzeiligen Markdown-Block endgueltig ab.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Die markdown-html-Tabellenzelle rendert in Grafana 13 als Klartext (eine
ueberlaufende Zeile). Ersetzt durch native Panels:
- farbcodiertes Bewertungs-Banner (stat, background-color per Mapping)
- 8 Kennzahl-Karten mit Mini-Sparkline (T min/max, Regen, UV, Boee,
Luftfeuchte, Luftdruck, Solar) inkl. Thresholds in Blau/Cyan/Amber/Gruen
- 2 Tagescharts: Temperatur (Aussen/Gefuehlt/Taupunkt) und Solar+UV
Gleiche $__timeFilter-Queries wie das Wetterarchiv-Dashboard.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- weather-report-history.json (ha-weather-report-history): Finder-Tabelle,
eine Zeile pro Tag (Datum, Kurzbewertung, T min/max/Mittel, Regen, UV, Boee)
mit Drilldown-Data-Link aufs Tagesbericht-Dashboard
- weather-day-report.json: Zeitzone Europe/Berlin, Info-Panel zur Tagesauswahl,
Nav-Dropdown zu den Wetter-Dashboards
- monitoring/README: Abschnitt Wetter-Tagesberichte (finden, Datum waehlen,
Quelle InfluxDB-SQL statt Markdown-Index, Deploy, Explore-Test)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Prometheus laeuft jetzt mit stabilem Directory-Mount (recreated, 25 Regeln
aktiv). Verbleibendes Einzeldatei-Muster bei den uebrigen Monitoring-Services
als Folge-Item praezisiert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Einzeldatei-Bind-Mounts von alerts.yml/prometheus.yml brechen auf dem
Unraid-FUSE-Share bei git/Komodo-Updates zu "Stale NFS file handle"
(Inode-Wechsel) -> Config-Reload laedt 0 Regeln, nur --force-recreate heilt.
Umgestellt auf stabilen Directory-Mount ./prometheus:/etc/prometheus/config:ro
plus angepasste --config.file und rule_files. Kuenftig reicht ein Reload.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Dump-Alerts live verifiziert (25 Regeln geladen, 0 feuern, Scope-Drift 0).
Stale-Handle der Prometheus-alerts.yml (FUSE-Einzeldatei-Mount) per
--force-recreate behoben; Directory-Mount-Hardening als TODO aufgenommen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Host-Clone-Pull und Borg-UI-Scope sind erledigt/verifiziert (Live-Drift 0,
alle 33 Quellen konfiguriert). Offen bleiben nur der Prometheus-Config-Reload
fuer die neuen Dump-Alerts und der Nearline-Dead-Man's-Switch.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Findings aus dem Backup-/Restore-Audit 2026-06-18 umgesetzt:
- Dump-Frische als Prometheus-Metrik (homelab_borg_dump_present /
homelab_borg_dump_age_seconds) im Host-Exporter; schliesst den
Blindfleck, dass Borg weiterlaeuft und stale Dumps archiviert, ohne
Job-Fehler.
- Neue Alerts HomelabBorgDumpMissing / HomelabBorgDumpStale (critical)
plus ALERT_RULES.md.
- Freshness-Gate (.sh + .ps1) und H:-Nearline-Pull um n8n.sqlite.dump
und postgresql17-globals.sql ergaenzt.
- Critical-Container-Watch um mail-archiver, n8n, homeassistant,
smarthome-mosquitto erweitert.
- BACKUP_SCOPE: /mnt/user/projekte und sonstige User-Shares ausserhalb
App-Scope als bewusste offene Operator-Entscheidung dokumentiert;
Hermes-data-Pfad als geparkt klargestellt.
- MASTER_TODO: Nearline-Pull-Ueberwachung, Host-Pull-Nachzug und
projekte-Scope-Entscheidung aufgenommen.
Enthaelt ausserdem die zuvor vorbereiteten Scope-Erweiterungen
(nextcloud html+data, n8n, filebrowser, influxdb3) und Scope-Drift-/
Retention-/Compact-/Check-Alerts.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
InfluxDB 3 Core kompaktiert nicht; haeufige HA-Writes liessen "°C"/"%"/"hPa"
ins 432-Dateien-Query-Limit laufen -> No data in Grafana. --query-file-limit
auf 20000 angehoben (Stopgap; langfristig Enterprise-Compaction oder weniger
Writes).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
displayMode: hidden ist in dieser Grafana-Version fuer Timeseries ungueltig
und liess die Panels (Solarstrahlung, Luftdruck, Wallbox-Ladeleistung) leer.
Auf legend.showLegend=false umgestellt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Live-Gauges (Temp/Feuchte/Wind/UV/Solar mit Farbverlauf) + Luftdruck-Stat
oben, aufgehuebschte Verlaufs-Charts (Temp/Feuchte/Wind mit Innen-Serien,
Solar als Flaeche), Regen pro Tag als barchart. Analog zum Solar-Dashboard.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- "Tages Produktion 30 Tage" auf barchart-Panel (timeseries-bars rendert
spaerliche Tageswerte nicht); format table + xField time
- "Erreichte TOP kWh": Subquery hat keine Zeitspalte -> format table statt
time_series (behebt Panel-Fehler); Heute als skalare Query
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LCD-Segment-Bargauges mit continuous-GrYlRd, radiale Gauges im selben
Farbverlauf, Power-Chart als gruen/gelb gefuellte Flaechen, 30-Tage-
Balken mit GrYlRd, Top-Tag + Heute als LCD-Bars. SolarEdge-Entitaeten
und Batterie/Wallbox-Panels beibehalten.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wallbox-Ladeleistung (Verlauf + Gauge), Gesamt geladen und aktuelle
Session aus eh7klptt_* im Grafana Solar-Dashboard ergaenzt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Die generische Berlin-Wetterkachel ist durch die lokale Ecowitt-Kachel
(custom-api aus HA) ersetzt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
toFloat erwartet eine Zahl, der HA-State kommt aber als String -> Template-
Fehler. Boee jetzt direkt per (.Subrequest "gust").JSON.Float "state" lesen,
gjson parst den numerischen String korrekt fuer den Schwellenvergleich.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>