diff --git a/homelab-ai-bot/STATE.md b/homelab-ai-bot/STATE.md index 87d8cd32..ebdf6f50 100644 --- a/homelab-ai-bot/STATE.md +++ b/homelab-ai-bot/STATE.md @@ -98,3 +98,26 @@ Modelle: perplexity/sonar, perplexity/sonar-deep-research - Passthrough-Tools: get_temperaturen, get_energie, get_heizung (Grafana direkt) - tool_loader cached Module — nach Code-Aenderungen Service neu starten - sync_state.py macht git reset --hard FETCH_HEAD — vernichtet nicht gepushte Commits + +## 2026-03-28 — Save.TV Pipeline & Stabilitäts-Updates + +### Änderungen +- **CT 116 RAM**: 512 MB → 1 GB (pct set 116 --memory 1024) + - 512 MB war die Ursache für alle Einfrierungen (Swap-Überlast, D-State-Prozesse, Load ~12) +- **CT 116 /etc/hosts**: www.save.tv → 172.66.146.119 (statisch) + - Ohne diesen Fix blockiert DNS-Lookup (socket.getaddrinfo) den Python-GIL → Flask komplett tot +- **savetv_web.py**: Archiv-Cache mit Hintergrund-Refresh + - /api/films antwortet jetzt sofort aus Cache, save.tv-Login im Hintergrund-Thread + - Flask threaded=True für parallele Requests +- **savetv_web.py**: Jellyfin-Duplikate-Filter + - Checkbox »Jellyfin-Duplikate ausblenden« (standard: ein) + - Filme die schon in Jellyfin sind werden versteckt → keine Doppel-Downloads +- **tools/savetv.py**: Login-Timeout (8s connect, 20s read) + moderner User-Agent +- **savetv_sync.py**: 700 MB Mindestgröße + - Dateien unter 700 MB werden übersprungen (SD-Aufnahmen = Schrott) + - Filter passiert auf API-Seite (HEAD-Request), nie auf NAS-Seite + +### Pipeline-Architektur +Save.TV → Hetzner CT 116 (temp) → Jellyfin-Server 100.77.105.3 → NAS Muldenstein +- Sync: stündlich per Cron, 24h ± 30min Delay nach Download-Timestamp +- Callback: POST /api/nas_synced nach erfolgreichem Transfer diff --git a/homelab.conf b/homelab.conf index e4b14f39..d3ddf630 100644 --- a/homelab.conf +++ b/homelab.conf @@ -107,7 +107,7 @@ CT_111_HZ="forgejo|100.89.246.60|Forgejo Git Server" CT_112_HZ="fuenfvoracht|100.73.171.62|FuenfVorAcht Telegram Bot" CT_113_HZ="redax-wp|100.69.243.16|Redakteur WordPress KI-Autor + DeutschlandBlog" CT_115_HZ="flugscanner-hub|100.92.161.97|Flugpreisscanner Hub + Scheduler" -CT_116_HZ="homelab-ai-bot|100.123.47.7|Hausmeister Bot (Qwen3-VL 30B via Ollama/KI-Server, Text+Vision) + Save.TV Web-UI + web_search via SearXNG" +CT_116_HZ="homelab-ai-bot (1 GB RAM)|100.123.47.7|Hausmeister Bot (Qwen3-VL 30B via Ollama/KI-Server, Text+Vision) + Save.TV Web-UI + web_search via SearXNG" CT_121_HZ="deep-research|100.74.196.29|Open Deep Research + SearXNG — LangGraph API auf Port 2024" CT_117_HZ="memory-service|100.121.192.94|Memory Service API (FastAPI + SQLite)" CT_144_HZ="muldenstein-backup|—|Backup-Archiv (Read-Only)" @@ -214,7 +214,10 @@ MCP_TOOLS="homelab_overview,homelab_all_containers,homelab_container_status,home SAVETV_USER="739281" SAVETV_PASS="Astral1966" SAVETV_URL="https://www.save.tv" -# Download-Pipeline: GEPLANT (bauen wenn Muldenstein erreichbar) +# Download-Pipeline: AKTIV (Save.TV → Hetzner CT116 → Jellyfin-Server → NAS Muldenstein) +# savetv_sync.py läuft stündlich auf Jellyfin-Server (100.77.105.3), 24h±30min Delay, min. 700MB +# CT 116 /etc/hosts: www.save.tv → 172.66.146.119 (DNS-GIL-Fix) +# CT 116 RAM: 1 GB (war 512 MB, hat alles einfrieren lassen) # Ziel: Samba-Share auf RAID in Muldenstein → Jellyfin-Mediathek # Architektur: Save.TV → pve-hetzner (temp) → Samba/CIFS → Jellyfin-Ordner # TODO: Share-IP, Share-Name, Credentials, Jellyfin-Pfad ermitteln