From 62ac7ebd5d238946c40830c04905b2b3d2e33960 Mon Sep 17 00:00:00 2001 From: Auto-Sync Date: Tue, 24 Feb 2026 06:40:10 +0100 Subject: [PATCH] Auto-Sync: 2026-02-24 06:40 --- arakava-news/STATE.md | 79 +++++++++-------- infrastructure/STATE.md | 59 ++++++------ scripts/sync-state.sh | 192 ++++++++++++++++++++-------------------- smart-home/STATE.md | 8 +- 4 files changed, 176 insertions(+), 162 deletions(-) diff --git a/arakava-news/STATE.md b/arakava-news/STATE.md index 395727ad..e547de8b 100644 --- a/arakava-news/STATE.md +++ b/arakava-news/STATE.md @@ -1,12 +1,11 @@ # Arakava News — Live State -> Auto-generiert: 2026-02-24 06:30 | Manueller Abschnitt am Ende. +> Auto-generiert: 2026-02-24 06:40 ## Service Status -| Service | Status | -|---|---| -| rss-manager (CT 109) | active | -| WordPress Docker (CT 101) | running | -| n8n Workflows | ⛔ deaktiviert | +| Service | CT | Status | +|---|---|---| +| rss-manager | 109 | active | +| WordPress Docker | 101 | running | ## Letzte Feed-Aktivität (Top 5) Photon.info (KI-Analyse): 2026-02-24 05:13:04 @@ -23,38 +22,44 @@ ## OpenRouter Guthaben $19.51 verbleibend -## Credentials -- WordPress: https://arakava-news-2.orbitalo.net | admin / eJIyhW0p5PFacjvvKGufKeXS -- RSS Manager: http://:8080 -- OpenRouter: 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 +## URLs +- Blog: https://arakava-news-2.orbitalo.net +- Admin: https://arakava-news-2.orbitalo.net/wp-admin (admin / eJIyhW0p5PFacjvvKGufKeXS) +- RSS Manager: http://100.113.244.101:8080 (admin / astral66) +- Matomo: https://matomo.orbitalo.net (admin / astral66) -## Feeds (17 aktiv) -| ID | Name | Kategorie | Schedule | -|---|---|---|---| -| 1 | Dr. Bines Substack | 13 | 08/14/20 Uhr | -| 3 | NachDenkSeiten | 5 | 07/13/19 Uhr | -| 4 | Tichys Einblick | 6 | 07:30/13:30/19:30 | -| 5 | Junge Freiheit | 7 | 08/14/20 Uhr | -| 6 | PAZ | 8 | 08:30/14:30/20:30 | -| 7 | Apollo News | 9 | 09/15/21 Uhr | -| 8 | Apolut | 10 | 09:30/15:30/21:30 | -| 9 | Achgut.com | 15 | 10/16/22 Uhr | -| 10 | Heise Security | 11 | alle 4h | -| 11 | Golem.de | 12 | alle 2h | -| 12 | Heise Online | 3 | alle 3h | -| 13 | Rubikon.news | 17 | alle 3h | -| 14 | Corona-Transition | 18 | alle 4h | -| 15 | Photon.info (KI) | 3 | alle 6h | -| 16 | Antispiegel | 20 | 08:30/14:30/20:30 | -| 17 | Riehle News | 21 | 09:00 Uhr | +## Container +| CT | Dienst | Tailscale | +|---|---|---| +| 101 | WordPress + MySQL (Docker) | 100.91.212.19 | +| 109 | RSS Manager + Matomo | 100.113.244.101 | + +## Aktive Feeds (17) +| ID | Name | Schedule | +|---|---|---| +| 1 | Dr. Bines Substack | 08/14/20 Uhr | +| 3 | NachDenkSeiten | 07/13/19 Uhr | +| 4 | Tichys Einblick | 07:30/13:30/19:30 | +| 5 | Junge Freiheit | 08/14/20 Uhr | +| 6 | PAZ | 08:30/14:30/20:30 | +| 7 | Apollo News | 09/15/21 Uhr | +| 8 | Apolut | 09:30/15:30/21:30 | +| 9 | Achgut.com | 10/16/22 Uhr | +| 10 | Heise Security | alle 4h | +| 11 | Golem.de | alle 2h | +| 12 | Heise Online | alle 3h | +| 13 | Rubikon.news | alle 3h | +| 14 | Corona-Transition | alle 4h | +| 15 | Photon.info (KI-Analyse) | alle 6h | +| 16 | Antispiegel | 08:30/14:30/20:30 | +| 17 | Riehle News | 09:00 Uhr | ## Code (CT 109: /opt/rss-manager/) -- poster.py, scheduler.py, app.py, db.py, github_researcher.py -- Vollcode: github.com/Orbitalo/Wordpress-V3-MCP-Projekt +poster.py, scheduler.py, app.py, db.py -## Offene Aufgaben v3 -- [ ] CT 112 anlegen, Docker Compose v3 -- [ ] Retry-Logik in poster.py -- [ ] Telegram Alerting bei Feed-Fehlern - -## Notizen (manuell) +## Änderungshistorie +- 24.02.2026: Scheduler Lock gegen Doppelstarts +- 24.02.2026: Telegram auf HTML-Modus (Sonderzeichen-Fix) +- 24.02.2026: Werbeartikel-Blacklist (Anzeige:, Sponsored, etc.) +- 23.02.2026: Matomo von CT 113 → CT 109 migriert +- 23.02.2026: CT 100/102/104/105/106/113 gelöscht diff --git a/infrastructure/STATE.md b/infrastructure/STATE.md index 966695a2..ad5f1fee 100644 --- a/infrastructure/STATE.md +++ b/infrastructure/STATE.md @@ -1,45 +1,52 @@ # Infrastruktur — Live State -> Auto-generiert: 2026-02-24 06:30 +> Auto-generiert: 2026-02-24 06:40 ## pve-hetzner Disk | Mount | Belegt | |---|---| | / (root) | 11% von 98G | -| /var/lib/vz (VMs) | 2% von 2.9T | +| /var/lib/vz (VMs/CTs) | 2% von 2.9T | -## Container auf pve-hetzner +## Aktive Container auf pve-hetzner | CT | Name | Tailscale IP | Dienste | |---|---|---|---| -| 100 | traefik | 100.78.77.115 | Traefik, Pangolin, Uptime-Kuma | -| 101 | moltbot | 100.91.212.19 | @MutterbotAI_bot | -| 102 | dify | 100.113.136.30 | Dify RAG + @DifyRagBot | +| 101 | wordpress-v2 | 100.91.212.19 | WordPress + MySQL (Docker) | | 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) | -| 104 | n8n | 100.125.102.93 | n8n (Workflows deaktiviert) | -| 107 | ragflow | 100.116.125.12 | RAGFlow (in Einrichtung) | -| 109 | rss-manager | — | RSS Manager + KI | -| 110 | portainer | 100.109.206.43 | Portainer UI | +| 109 | rss-manager | 100.113.244.101 | RSS Manager + Matomo | +| 110 | portainer | 100.109.206.43 | Portainer Docker UI | +| 111 | forgejo | 100.89.246.60 | Forgejo Git (http://100.89.246.60:3000) | | 144 | muldenstein-backup | — | Backup-Archiv | -| 999 | cluster-docu | 100.79.8.49 | Dokumentation | +| 999 | cluster-docu | 100.79.8.49 | Dokumentation (http://100.79.8.49:8080) | -## Container auf pve1 Kambodscha -| CT | Name | IP | Dienste | -|---|---|---|---| -| 135 | edelmetall | 192.168.0.219 | Streamlit Gold/Silber | -| 888 | MCP-Proxmox | 192.168.0.116 | Proxmox MCP | -| 999 | cluster-docu | 192.168.0.209 | Doku-Mirror | +## Gelöschte Container (24.02.2026) +| CT | Name | Grund | +|---|---|---| +| 100 | traefik | Abgelöst durch Cloudflare Tunnel | +| 102 | dify | Experiment fehlgeschlagen | +| 104 | n8n | Nicht aktiv genutzt | +| 105 | debian-12 | Nicht genutzt | +| 106 | wordpress-news | Abgelöst durch CT 101 | +| 113 | matomo | Integriert in CT 109 | -## Container auf pve3 Muldenstein -| CT | Name | IP | Dienste | -|---|---|---|---| -| 134 | gold-silber-de | 100.69.161.128 | Dashboard DE (blei.orbitalo.info) | -| 143 | raspi-broker | 192.168.178.36 | InfluxDB, Grafana, ioBroker | +## Container auf pve1 (Kambodscha) +| CT | Name | Dienste | +|---|---|---| +| 136 | gold-silber-v3 | Edelmetall-Bot (Tailscale: 100.72.230.87) | +| 143 | smart-home | ioBroker + Grafana + InfluxDB | + +## Routing +- Cloudflare Tunnel CT 101: arakava-news-2.orbitalo.net → :80 +- Cloudflare Tunnel CT 109: matomo.orbitalo.net → :80 +- Kein Traefik, kein PBS-Gateway mehr ## Zugangsdaten - pve-hetzner: root / Astral-Proxmox!2026 - pve1: root / astral66 -- Alle lokalen CTs: root / astral66 +- Alle CTs: root / astral66 - Seafile: admin@orbitalo.net / astral66 -- n8n: wuttig@gmx.de / Astral66 -- Dify: admin@orbitalo.net / astral66 +- Forgejo: orbitalo / astral66 -## Notizen (manuell) +## Telegram Bots +| Bot | Token (Auszug) | Chat-ID | +|---|---|---| +| Mutter (@MutterbotAI_bot) | 8551565940:... | 674951792 | diff --git a/scripts/sync-state.sh b/scripts/sync-state.sh index 112d0893..a20f6583 100755 --- a/scripts/sync-state.sh +++ b/scripts/sync-state.sh @@ -1,20 +1,15 @@ #!/bin/bash # ============================================================ # homelab-brain Auto-Sync Script -# Läuft alle 15 Min auf pve-hetzner -# Aktualisiert STATE.md Dateien, pushed nach GitHub -# und sendet Telegram-Alerts bei Service-Ausfällen -# -# Setup (einmalig auf pve-hetzner): -# git clone https://@github.com/Orbitalo/homelab-brain.git /opt/homelab-brain -# chmod +x /opt/homelab-brain/scripts/sync-state.sh -# echo "*/15 * * * * root /opt/homelab-brain/scripts/sync-state.sh >> /var/log/homelab-sync.log 2>&1" >> /etc/crontab +# Läuft alle 15 Min auf pve-hetzner via Cron +# Aktualisiert STATE.md Dateien, pushed nach Forgejo +# Telegram-Alerts bei Service-Ausfällen und Push-Fehlern +# Stand: 24.02.2026 # ============================================================ set -euo pipefail REPO="/opt/homelab-brain" -GH_TOKEN="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" -FORGEJO_TOKEN="04f9ca5b5db295ececd2656d7b113c37d90c38fd" +FORGEJO_TOKEN="5402da0447b0eb6aede721a8748a08974ddc5c42" TG_TOKEN="8551565940:AAHIUpZND-tCNGv9yEoNPRyPt4GxEPYBJdE" TG_CHAT="674951792" DEBOUNCE_DIR="/tmp/homelab_watchdog" @@ -37,7 +32,7 @@ tg_alert() { fi curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \ -d "chat_id=${TG_CHAT}" \ - -d "text=🚨 Homelab Watchdog%0A%0A${msg}" \ + -d "text=Homelab Watchdog%0A%0A${msg}" \ -d "parse_mode=Markdown" > /dev/null 2>&1 echo "$now" > "$lockfile" log "Alert gesendet: $key" @@ -49,14 +44,13 @@ check_service() { local status status=$(pct exec "$ct" -- systemctl is-active "$service" 2>/dev/null || echo "unknown") if [ "$status" != "active" ]; then - tg_alert "service_${service}" "⚠️ *${name}* ist DOWN%0AService: ${service}%0ACT: ${ct}%0AStatus: ${status}" + tg_alert "service_${service}" "*${name}* ist DOWN%0AService: ${service}%0ACT: ${ct}%0AStatus: ${status}" echo "DOWN" else - # Wenn vorheriger Alert vorhanden → Recovery-Meldung if [ -f "$DEBOUNCE_DIR/service_${service}.lock" ]; then curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \ -d "chat_id=${TG_CHAT}" \ - -d "text=✅ *${name}* wieder online" \ + -d "text=*${name}* wieder online" \ -d "parse_mode=Markdown" > /dev/null 2>&1 rm -f "$DEBOUNCE_DIR/service_${service}.lock" fi @@ -65,7 +59,7 @@ check_service() { } cd "$REPO" -git pull --quiet +git pull --quiet 2>/dev/null || true # ───────────────────────────────────────────────────── # 0. SERVICE WATCHDOG @@ -74,7 +68,7 @@ log "Watchdog läuft..." RSS_LIVE=$(check_service 109 rss-manager "RSS Manager") WP_LIVE=$(pct exec 101 -- docker inspect --format='{{.State.Status}}' wordpress-app 2>/dev/null || echo "unknown") if [ "$WP_LIVE" != "running" ]; then - tg_alert "wordpress" "⚠️ *WordPress Docker* ist DOWN%0AStatus: ${WP_LIVE}%0ACT: 101" + tg_alert "wordpress" "*WordPress Docker* ist DOWN%0AStatus: ${WP_LIVE}%0ACT: 101" fi # ───────────────────────────────────────────────────── @@ -87,19 +81,19 @@ WP_STATUS=$(pct exec 101 -- docker inspect --format='{{.State.Status}}' wordpres # Letzte Feed-Aktivität aus SQLite FEED_ACTIVITY=$(pct exec 109 -- python3 -c " -import sqlite3, json +import sqlite3 db = sqlite3.connect('/opt/rss-manager/rss_manager.db') rows = db.execute(\"SELECT name, last_run FROM feeds WHERE enabled=1 ORDER BY last_run DESC LIMIT 5\").fetchall() for r in rows: print(f' {r[0]}: {r[1] or \"nie\"}') " 2>/dev/null || echo " (nicht abrufbar)") -# Letzte Fehler (letzte 24h) +# Fehler letzte 24h ERRORS=$(pct exec 109 -- bash -c "grep -c 'ERROR' /opt/rss-manager/logs/service.log 2>/dev/null || echo 0") LAST_ERROR=$(pct exec 109 -- bash -c "grep 'ERROR' /opt/rss-manager/logs/service.log 2>/dev/null | tail -1 || echo 'keine'") # OpenRouter Balance OR_BALANCE=$(pct exec 109 -- python3 -c " -import requests, sys +import requests try: r = requests.get('https://openrouter.ai/api/v1/auth/key', headers={'Authorization': 'Bearer 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'}, @@ -113,14 +107,13 @@ except Exception as e: cat > "$REPO/arakava-news/STATE.md" << EOF # Arakava News — Live State -> Auto-generiert: $DATE | Manueller Abschnitt am Ende. +> Auto-generiert: $DATE ## Service Status -| Service | Status | -|---|---| -| rss-manager (CT 109) | $RSS_STATUS | -| WordPress Docker (CT 101) | $WP_STATUS | -| n8n Workflows | ⛔ deaktiviert | +| Service | CT | Status | +|---|---|---| +| rss-manager | 109 | $RSS_STATUS | +| WordPress Docker | 101 | $WP_STATUS | ## Letzte Feed-Aktivität (Top 5) $FEED_ACTIVITY @@ -132,41 +125,47 @@ $FEED_ACTIVITY ## OpenRouter Guthaben $OR_BALANCE -## Credentials -- WordPress: https://arakava-news-2.orbitalo.net | admin / eJIyhW0p5PFacjvvKGufKeXS -- RSS Manager: http://:8080 -- OpenRouter: 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 +## URLs +- Blog: https://arakava-news-2.orbitalo.net +- Admin: https://arakava-news-2.orbitalo.net/wp-admin (admin / eJIyhW0p5PFacjvvKGufKeXS) +- RSS Manager: http://100.113.244.101:8080 (admin / astral66) +- Matomo: https://matomo.orbitalo.net (admin / astral66) -## Feeds (17 aktiv) -| ID | Name | Kategorie | Schedule | -|---|---|---|---| -| 1 | Dr. Bines Substack | 13 | 08/14/20 Uhr | -| 3 | NachDenkSeiten | 5 | 07/13/19 Uhr | -| 4 | Tichys Einblick | 6 | 07:30/13:30/19:30 | -| 5 | Junge Freiheit | 7 | 08/14/20 Uhr | -| 6 | PAZ | 8 | 08:30/14:30/20:30 | -| 7 | Apollo News | 9 | 09/15/21 Uhr | -| 8 | Apolut | 10 | 09:30/15:30/21:30 | -| 9 | Achgut.com | 15 | 10/16/22 Uhr | -| 10 | Heise Security | 11 | alle 4h | -| 11 | Golem.de | 12 | alle 2h | -| 12 | Heise Online | 3 | alle 3h | -| 13 | Rubikon.news | 17 | alle 3h | -| 14 | Corona-Transition | 18 | alle 4h | -| 15 | Photon.info (KI) | 3 | alle 6h | -| 16 | Antispiegel | 20 | 08:30/14:30/20:30 | -| 17 | Riehle News | 21 | 09:00 Uhr | +## Container +| CT | Dienst | Tailscale | +|---|---|---| +| 101 | WordPress + MySQL (Docker) | 100.91.212.19 | +| 109 | RSS Manager + Matomo | 100.113.244.101 | + +## Aktive Feeds (17) +| ID | Name | Schedule | +|---|---|---| +| 1 | Dr. Bines Substack | 08/14/20 Uhr | +| 3 | NachDenkSeiten | 07/13/19 Uhr | +| 4 | Tichys Einblick | 07:30/13:30/19:30 | +| 5 | Junge Freiheit | 08/14/20 Uhr | +| 6 | PAZ | 08:30/14:30/20:30 | +| 7 | Apollo News | 09/15/21 Uhr | +| 8 | Apolut | 09:30/15:30/21:30 | +| 9 | Achgut.com | 10/16/22 Uhr | +| 10 | Heise Security | alle 4h | +| 11 | Golem.de | alle 2h | +| 12 | Heise Online | alle 3h | +| 13 | Rubikon.news | alle 3h | +| 14 | Corona-Transition | alle 4h | +| 15 | Photon.info (KI-Analyse) | alle 6h | +| 16 | Antispiegel | 08:30/14:30/20:30 | +| 17 | Riehle News | 09:00 Uhr | ## Code (CT 109: /opt/rss-manager/) -- poster.py, scheduler.py, app.py, db.py, github_researcher.py -- Vollcode: github.com/Orbitalo/Wordpress-V3-MCP-Projekt +poster.py, scheduler.py, app.py, db.py -## Offene Aufgaben v3 -- [ ] CT 112 anlegen, Docker Compose v3 -- [ ] Retry-Logik in poster.py -- [ ] Telegram Alerting bei Feed-Fehlern - -## Notizen (manuell) +## Änderungshistorie +- 24.02.2026: Scheduler Lock gegen Doppelstarts +- 24.02.2026: Telegram auf HTML-Modus (Sonderzeichen-Fix) +- 24.02.2026: Werbeartikel-Blacklist (Anzeige:, Sponsored, etc.) +- 23.02.2026: Matomo von CT 113 → CT 109 migriert +- 23.02.2026: CT 100/102/104/105/106/113 gelöscht EOF CHANGED=1 log "Arakava News STATE.md aktualisiert" @@ -176,11 +175,6 @@ log "Arakava News STATE.md aktualisiert" # ───────────────────────────────────────────────────── log "Sammle Infrastruktur Status..." -# Container-Status auf pve-hetzner -CT_STATUS=$(pvesh get /nodes/pve-hetzner/lxc --output-format=text 2>/dev/null | \ - awk '{print $1, $2}' | grep -v "^vmid" || echo "(nicht abrufbar)") - -# Disk-Auslastung DISK_ROOT=$(df -h / | awk 'NR==2{print $5 " von " $2}') DISK_DATA=$(df -h /var/lib/vz | awk 'NR==2{print $5 " von " $2}' 2>/dev/null || echo "n/a") @@ -192,44 +186,51 @@ cat > "$REPO/infrastructure/STATE.md" << EOF | Mount | Belegt | |---|---| | / (root) | $DISK_ROOT | -| /var/lib/vz (VMs) | $DISK_DATA | +| /var/lib/vz (VMs/CTs) | $DISK_DATA | -## Container auf pve-hetzner +## Aktive Container auf pve-hetzner | CT | Name | Tailscale IP | Dienste | |---|---|---|---| -| 100 | traefik | 100.78.77.115 | Traefik, Pangolin, Uptime-Kuma | -| 101 | moltbot | 100.91.212.19 | @MutterbotAI_bot | -| 102 | dify | 100.113.136.30 | Dify RAG + @DifyRagBot | +| 101 | wordpress-v2 | 100.91.212.19 | WordPress + MySQL (Docker) | | 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) | -| 104 | n8n | 100.125.102.93 | n8n (Workflows deaktiviert) | -| 107 | ragflow | 100.116.125.12 | RAGFlow (in Einrichtung) | -| 109 | rss-manager | — | RSS Manager + KI | -| 110 | portainer | 100.109.206.43 | Portainer UI | +| 109 | rss-manager | 100.113.244.101 | RSS Manager + Matomo | +| 110 | portainer | 100.109.206.43 | Portainer Docker UI | +| 111 | forgejo | 100.89.246.60 | Forgejo Git (http://100.89.246.60:3000) | | 144 | muldenstein-backup | — | Backup-Archiv | -| 999 | cluster-docu | 100.79.8.49 | Dokumentation | +| 999 | cluster-docu | 100.79.8.49 | Dokumentation (http://100.79.8.49:8080) | -## Container auf pve1 Kambodscha -| CT | Name | IP | Dienste | -|---|---|---|---| -| 135 | edelmetall | 192.168.0.219 | Streamlit Gold/Silber | -| 888 | MCP-Proxmox | 192.168.0.116 | Proxmox MCP | -| 999 | cluster-docu | 192.168.0.209 | Doku-Mirror | +## Gelöschte Container (24.02.2026) +| CT | Name | Grund | +|---|---|---| +| 100 | traefik | Abgelöst durch Cloudflare Tunnel | +| 102 | dify | Experiment fehlgeschlagen | +| 104 | n8n | Nicht aktiv genutzt | +| 105 | debian-12 | Nicht genutzt | +| 106 | wordpress-news | Abgelöst durch CT 101 | +| 113 | matomo | Integriert in CT 109 | -## Container auf pve3 Muldenstein -| CT | Name | IP | Dienste | -|---|---|---|---| -| 134 | gold-silber-de | 100.69.161.128 | Dashboard DE (blei.orbitalo.info) | -| 143 | raspi-broker | 192.168.178.36 | InfluxDB, Grafana, ioBroker | +## Container auf pve1 (Kambodscha) +| CT | Name | Dienste | +|---|---|---| +| 136 | gold-silber-v3 | Edelmetall-Bot (Tailscale: 100.72.230.87) | +| 143 | smart-home | ioBroker + Grafana + InfluxDB | + +## Routing +- Cloudflare Tunnel CT 101: arakava-news-2.orbitalo.net → :80 +- Cloudflare Tunnel CT 109: matomo.orbitalo.net → :80 +- Kein Traefik, kein PBS-Gateway mehr ## Zugangsdaten - pve-hetzner: root / Astral-Proxmox!2026 - pve1: root / astral66 -- Alle lokalen CTs: root / astral66 +- Alle CTs: root / astral66 - Seafile: admin@orbitalo.net / astral66 -- n8n: wuttig@gmx.de / Astral66 -- Dify: admin@orbitalo.net / astral66 +- Forgejo: orbitalo / astral66 -## Notizen (manuell) +## Telegram Bots +| Bot | Token (Auszug) | Chat-ID | +|---|---|---| +| Mutter (@MutterbotAI_bot) | 8551565940:... | 674951792 | EOF CHANGED=1 log "Infrastruktur STATE.md aktualisiert" @@ -239,7 +240,6 @@ log "Infrastruktur STATE.md aktualisiert" # ───────────────────────────────────────────────────── log "Sammle Smart Home Status..." -# Backup-Status LAST_BACKUP=$(ls -t /home/backup-muldenstein/backups/*.tar.gz 2>/dev/null | head -1 | xargs ls -lh 2>/dev/null | awk '{print $5, $6, $7, $8}' || echo "nicht abrufbar") BACKUP_COUNT=$(ls /home/backup-muldenstein/backups/*.tar.gz 2>/dev/null | wc -l || echo "0") @@ -252,7 +252,7 @@ cat > "$REPO/smart-home/STATE.md" << EOF - Backups gesamt: $BACKUP_COUNT - Ziel: /home/backup-muldenstein/backups/ (CT 144) -## Services (CT 143: 192.168.178.36) +## Services (CT 143) | Dienst | URL | |---|---| | Grafana | https://grafana.orbitalo.net | @@ -266,10 +266,8 @@ cat > "$REPO/smart-home/STATE.md" << EOF - Disk > 90% ## Backup-Zeitplan -- täglich 04:00 → Script: /root/backup-to-hetzner.sh (auf pve3) +- täglich 04:00 → /root/backup-to-hetzner.sh (auf pve3) - Retention: 30d tägl, 90d wöchl, unbegrenzt monatl - -## Notizen (manuell) EOF CHANGED=1 log "Smart Home STATE.md aktualisiert" @@ -282,9 +280,15 @@ if [ "$CHANGED" -eq 1 ]; then git -C "$REPO" add -A git -C "$REPO" -c user.email="sync@homelab" -c user.name="Auto-Sync" \ commit -m "Auto-Sync: $DATE" --quiet || true - git -C "$REPO" push \ - "https://orbitalo:${FORGEJO_TOKEN}@git.orbitalo.net/orbitalo/homelab-brain.git" main --quiet - log "Push erfolgreich" + if git -C "$REPO" push \ + "http://orbitalo:${FORGEJO_TOKEN}@100.89.246.60:3000/orbitalo/homelab-brain.git" main --quiet 2>/tmp/git-push-err; then + log "Push erfolgreich" + rm -f "$DEBOUNCE_DIR/git_push.lock" + else + ERR=$(cat /tmp/git-push-err | head -1) + log "Push FEHLER: $ERR" + tg_alert "git_push" "*Homelab Git-Sync fehlgeschlagen*%0A%0AFehler: ${ERR}%0AZeit: ${DATE}" + fi else log "Keine Änderungen" fi diff --git a/smart-home/STATE.md b/smart-home/STATE.md index 40d7cb7c..416b071f 100644 --- a/smart-home/STATE.md +++ b/smart-home/STATE.md @@ -1,12 +1,12 @@ # Smart Home Muldenstein — Live State -> Auto-generiert: 2026-02-24 06:30 +> Auto-generiert: 2026-02-24 06:40 ## Backup-Status - Letztes Backup: 242M Feb 8 06:29 - Backups gesamt: 1 - Ziel: /home/backup-muldenstein/backups/ (CT 144) -## Services (CT 143: 192.168.178.36) +## Services (CT 143) | Dienst | URL | |---|---| | Grafana | https://grafana.orbitalo.net | @@ -20,7 +20,5 @@ - Disk > 90% ## Backup-Zeitplan -- täglich 04:00 → Script: /root/backup-to-hetzner.sh (auf pve3) +- täglich 04:00 → /root/backup-to-hetzner.sh (auf pve3) - Retention: 30d tägl, 90d wöchl, unbegrenzt monatl - -## Notizen (manuell)