From 33005cc4182a76008dcd63e35cea846558d8ee95 Mon Sep 17 00:00:00 2001 From: Auto-Sync Date: Sun, 8 Mar 2026 05:08:40 +0100 Subject: [PATCH] Auto-Sync: 2026-03-08 05:08 --- arakava-news/STATE.md | 7 ++-- homelab.conf | 73 ++++++++++++++++++++++++++++++++++++++ infrastructure/STATE.md | 9 ++--- scripts/sync-state.sh | 77 +++++++++++++++++++++-------------------- smart-home/STATE.md | 2 +- 5 files changed, 120 insertions(+), 48 deletions(-) create mode 100644 homelab.conf diff --git a/arakava-news/STATE.md b/arakava-news/STATE.md index 7d4f0c06..80d7508d 100644 --- a/arakava-news/STATE.md +++ b/arakava-news/STATE.md @@ -1,5 +1,5 @@ # Arakava News — Live State -> Auto-generiert: 2026-03-08 05:00 +> Auto-generiert: 2026-03-08 05:08 ## Service Status | Service | CT | Status | @@ -37,8 +37,8 @@ $5.19 verbleibend ## Container (Mirror — pve3 Muldenstein) | CT | Dienst | Tailscale | |---|---|---| -| 600 | WordPress Mirror (Docker) | 100.92.205.101 | -| 601 | RSS Manager Mirror + n8n | — (kein Tailscale) | +| 600 | WordPress Mirror (Redundanz CT 101) | 100.92.205.101 | +| 601 | RSS Manager Mirror (Redundanz CT 109) | — | ## Aktive Feeds (17) | ID | Name | Schedule | @@ -65,6 +65,7 @@ poster.py, scheduler.py, app.py, db.py ## Änderungshistorie - 08.03.2026: Domain arakavanews.com live, Mirror CT 600/601 auf pve3 +- 08.03.2026: homelab.conf als zentrale Quelle der Wahrheit - 24.02.2026: Scheduler Lock gegen Doppelstarts - 24.02.2026: Telegram auf HTML-Modus (Sonderzeichen-Fix) - 24.02.2026: Werbeartikel-Blacklist (Anzeige:, Sponsored, etc.) diff --git a/homelab.conf b/homelab.conf new file mode 100644 index 00000000..f1f737f6 --- /dev/null +++ b/homelab.conf @@ -0,0 +1,73 @@ +# ============================================================ +# homelab.conf — EINZIGE QUELLE DER WAHRHEIT +# ============================================================ +# Wenn sich eine IP, URL, ein Container oder Passwort ändert: +# → NUR DIESE DATEI editieren. +# → sync-state.sh liest hieraus und generiert alles andere. +# → Niemals STATE.md, MOTDs oder Issues manuell pflegen. +# ============================================================ + +# --- DOMAINS --- +DOMAIN_PRIMARY="arakavanews.com" +DOMAIN_OLD="arakava-news-2.orbitalo.net" +DOMAIN_MATOMO="matomo.orbitalo.net" +DOMAIN_SEAFILE="seafile.orbitalo.net" +DOMAIN_GRAFANA="grafana.orbitalo.net" + +# --- SERVER (Tailscale IPs) --- +SRV_HETZNER="100.88.230.59" +SRV_PVE1="100.122.56.60" +SRV_PVE1_LOCAL="192.168.0.197" +SRV_HELMUT="100.87.235.11" +SRV_PVE2="100.99.101.37" +SRV_PVE3="100.109.101.12" +SRV_PBS="100.99.139.22" + +# --- PASSWÖRTER --- +PW_HETZNER="Astral-Proxmox!2026" +PW_DEFAULT="astral66" +PW_WP_ADMIN="eJIyhW0p5PFacjvvKGufKeXS" + +# --- CONTAINER: pve-hetzner --- +# Format: CT_="name|tailscale_ip|dienste" +CT_101="wordpress-v2|100.91.212.19|WordPress + MySQL (Docker)" +CT_103="seafile|100.75.247.60|Seafile" +CT_109="rss-manager|100.113.244.101|RSS Manager + Matomo" +CT_110="portainer|100.109.206.43|Portainer Docker UI" +CT_111="forgejo|100.89.246.60|Forgejo Git" +CT_144="muldenstein-backup|—|Backup-Archiv" +CT_999="cluster-docu|100.79.8.49|Dokumentation" + +# --- CONTAINER: pve1 (Kambodscha) --- +CT_136="gold-silber-v3|100.72.230.87|Edelmetall-Bot" +CT_143_PVE1="smart-home|—|ioBroker + Grafana + InfluxDB" + +# --- CONTAINER: pve3 (Muldenstein) --- +CT_139="Syncthing-Muldenstein|—|Syncthing" +CT_141="syncthing|—|Syncthing" +CT_142="WG-easy|—|WireGuard" +CT_143_PVE3="Raspi-Broker|—|MQTT Broker" +CT_145="flugscanner-mu|—|Flugpreisscanner Node" +CT_504="projektscan-template|—|Projektscan" +CT_600="wp-mirror|100.92.205.101|WordPress Mirror (Redundanz CT 101)" +CT_601="rss-mirror|—|RSS Manager Mirror (Redundanz CT 109)" + +# --- TELEGRAM BOTS --- +TG_CHAT_ID="674951792" +TG_MUTTER_TOKEN="8551565940:AAHIUpZND-tCNGv9yEoNPRyPt4GxEPYBJdE" +TG_FUENFVORACHT_TOKEN="8799990587:AAEoQuohGdoJ2WudoOHs_j5Ns3iwft6OlFc" +TG_EDELMETALL_TOKEN="8262992299:AAEf8YHPsz42ZdP85DV7JqC4822Ts75GqF4" + +# --- API KEYS --- +FORGEJO_TOKEN="b874766bdf357bd4c32fa4369d0c588fc6193336" +FORGEJO_SYNC_TOKEN="5402da0447b0eb6aede721a8748a08974ddc5c42" +GITHUB_PAT="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" +OPENROUTER_KEY="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" + +# --- ROUTING (Cloudflare Tunnels) --- +# Format: TUNNEL_="domain|ziel|status" +TUNNEL_101_PRIMARY="arakavanews.com|:80|aktiv" +TUNNEL_101_OLD="arakava-news-2.orbitalo.net|301→arakavanews.com|aktiv" +TUNNEL_109="matomo.orbitalo.net|:80|aktiv" +TUNNEL_600="arakavanews.com|:80|standby" +TUNNEL_601="rss-manager|:8080|standby" diff --git a/infrastructure/STATE.md b/infrastructure/STATE.md index 92c8f6b6..39802485 100644 --- a/infrastructure/STATE.md +++ b/infrastructure/STATE.md @@ -1,5 +1,5 @@ # Infrastruktur — Live State -> Auto-generiert: 2026-03-08 05:00 +> Auto-generiert: 2026-03-08 05:08 ## pve-hetzner Disk | Mount | Belegt | @@ -37,14 +37,9 @@ ## Container auf pve3 (Muldenstein) | CT | Name | Tailscale IP | Dienste | |---|---|---|---| -| 139 | Syncthing-Muldenstein | — | Syncthing | -| 141 | syncthing | — | Syncthing | -| 142 | WG-easy | — | WireGuard | -| 143 | Raspi-Broker | — | MQTT Broker | -| 145 | flugscanner-mu | — | Flugpreisscanner Node | -| 504 | projektscan-template | — | Projektscan | | 600 | wp-mirror | 100.92.205.101 | WordPress Mirror (Redundanz CT 101) | | 601 | rss-mirror | — | RSS Manager Mirror (Redundanz CT 109) | +| 145 | flugscanner-mu | — | Flugpreisscanner Node | ## Routing - Cloudflare Tunnel CT 101: arakavanews.com → :80 diff --git a/scripts/sync-state.sh b/scripts/sync-state.sh index 918d97ec..a280a148 100755 --- a/scripts/sync-state.sh +++ b/scripts/sync-state.sh @@ -6,12 +6,19 @@ # Telegram-Alerts bei Service-Ausfällen und Push-Fehlern # Stand: 08.03.2026 # ============================================================ +# WICHTIG: Alle variablen Daten kommen aus homelab.conf. +# Niemals hier IPs, URLs oder Credentials hardcoden! +# ============================================================ set -euo pipefail REPO="/opt/homelab-brain" -FORGEJO_TOKEN="5402da0447b0eb6aede721a8748a08974ddc5c42" -TG_TOKEN="8551565940:AAHIUpZND-tCNGv9yEoNPRyPt4GxEPYBJdE" -TG_CHAT="674951792" + +# --- Quelle der Wahrheit laden --- +source "$REPO/homelab.conf" + +TG_TOKEN="$TG_MUTTER_TOKEN" +TG_CHAT="$TG_CHAT_ID" +FORGEJO_TOKEN="$FORGEJO_SYNC_TOKEN" DEBOUNCE_DIR="/tmp/homelab_watchdog" DATE=$(date '+%Y-%m-%d %H:%M') CHANGED=0 @@ -96,7 +103,7 @@ OR_BALANCE=$(pct exec 109 -- python3 -c " import requests try: r = requests.get('https://openrouter.ai/api/v1/auth/key', - headers={'Authorization': 'Bearer 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'}, + headers={'Authorization': 'Bearer $OPENROUTER_KEY'}, timeout=5) d = r.json().get('data', {}) remaining = float(d.get('limit', 20)) - float(d.get('usage', 0)) @@ -126,22 +133,22 @@ $FEED_ACTIVITY $OR_BALANCE ## URLs -- Blog: https://arakavanews.com -- Admin: https://arakavanews.com/wp-admin (admin / eJIyhW0p5PFacjvvKGufKeXS) -- RSS Manager: http://100.113.244.101:8080 (admin / astral66) -- Matomo: https://matomo.orbitalo.net (admin / astral66) +- Blog: https://$DOMAIN_PRIMARY +- Admin: https://$DOMAIN_PRIMARY/wp-admin (admin / $PW_WP_ADMIN) +- RSS Manager: http://$(echo $CT_109 | cut -d'|' -f2):8080 (admin / $PW_DEFAULT) +- Matomo: https://$DOMAIN_MATOMO (admin / $PW_DEFAULT) ## Container (Primary — pve-hetzner) | CT | Dienst | Tailscale | |---|---|---| -| 101 | WordPress + MySQL (Docker) | 100.91.212.19 | -| 109 | RSS Manager + Matomo | 100.113.244.101 | +| 101 | $(echo $CT_101 | cut -d'|' -f3) | $(echo $CT_101 | cut -d'|' -f2) | +| 109 | $(echo $CT_109 | cut -d'|' -f3) | $(echo $CT_109 | cut -d'|' -f2) | ## Container (Mirror — pve3 Muldenstein) | CT | Dienst | Tailscale | |---|---|---| -| 600 | WordPress Mirror (Docker) | 100.92.205.101 | -| 601 | RSS Manager Mirror + n8n | — (kein Tailscale) | +| 600 | $(echo $CT_600 | cut -d'|' -f3) | $(echo $CT_600 | cut -d'|' -f2) | +| 601 | $(echo $CT_601 | cut -d'|' -f3) | $(echo $CT_601 | cut -d'|' -f2) | ## Aktive Feeds (17) | ID | Name | Schedule | @@ -168,6 +175,7 @@ poster.py, scheduler.py, app.py, db.py ## Änderungshistorie - 08.03.2026: Domain arakavanews.com live, Mirror CT 600/601 auf pve3 +- 08.03.2026: homelab.conf als zentrale Quelle der Wahrheit - 24.02.2026: Scheduler Lock gegen Doppelstarts - 24.02.2026: Telegram auf HTML-Modus (Sonderzeichen-Fix) - 24.02.2026: Werbeartikel-Blacklist (Anzeige:, Sponsored, etc.) @@ -198,13 +206,13 @@ cat > "$REPO/infrastructure/STATE.md" << EOF ## Aktive Container auf pve-hetzner | CT | Name | Tailscale IP | Dienste | |---|---|---|---| -| 101 | wordpress-v2 | 100.91.212.19 | WordPress + MySQL (Docker) | -| 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) | -| 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 (http://100.79.8.49:8080) | +| 101 | $(echo $CT_101 | cut -d'|' -f1) | $(echo $CT_101 | cut -d'|' -f2) | $(echo $CT_101 | cut -d'|' -f3) | +| 103 | $(echo $CT_103 | cut -d'|' -f1) | $(echo $CT_103 | cut -d'|' -f2) | $(echo $CT_103 | cut -d'|' -f3) ($DOMAIN_SEAFILE) | +| 109 | $(echo $CT_109 | cut -d'|' -f1) | $(echo $CT_109 | cut -d'|' -f2) | $(echo $CT_109 | cut -d'|' -f3) | +| 110 | $(echo $CT_110 | cut -d'|' -f1) | $(echo $CT_110 | cut -d'|' -f2) | $(echo $CT_110 | cut -d'|' -f3) | +| 111 | $(echo $CT_111 | cut -d'|' -f1) | $(echo $CT_111 | cut -d'|' -f2) | $(echo $CT_111 | cut -d'|' -f3) (http://$(echo $CT_111 | cut -d'|' -f2):3000) | +| 144 | $(echo $CT_144 | cut -d'|' -f1) | $(echo $CT_144 | cut -d'|' -f2) | $(echo $CT_144 | cut -d'|' -f3) | +| 999 | $(echo $CT_999 | cut -d'|' -f1) | $(echo $CT_999 | cut -d'|' -f2) | $(echo $CT_999 | cut -d'|' -f3) (http://$(echo $CT_999 | cut -d'|' -f2):8080) | ## Gelöschte Container (24.02.2026) | CT | Name | Grund | @@ -219,35 +227,30 @@ cat > "$REPO/infrastructure/STATE.md" << EOF ## Container auf pve1 (Kambodscha) | CT | Name | Dienste | |---|---|---| -| 136 | gold-silber-v3 | Edelmetall-Bot (Tailscale: 100.72.230.87) | -| 143 | smart-home | ioBroker + Grafana + InfluxDB | +| 136 | $(echo $CT_136 | cut -d'|' -f1) | $(echo $CT_136 | cut -d'|' -f3) (Tailscale: $(echo $CT_136 | cut -d'|' -f2)) | +| 143 | $(echo $CT_143_PVE1 | cut -d'|' -f1) | $(echo $CT_143_PVE1 | cut -d'|' -f3) | ## Container auf pve3 (Muldenstein) | CT | Name | Tailscale IP | Dienste | |---|---|---|---| -| 139 | Syncthing-Muldenstein | — | Syncthing | -| 141 | syncthing | — | Syncthing | -| 142 | WG-easy | — | WireGuard | -| 143 | Raspi-Broker | — | MQTT Broker | -| 145 | flugscanner-mu | — | Flugpreisscanner Node | -| 504 | projektscan-template | — | Projektscan | -| 600 | wp-mirror | 100.92.205.101 | WordPress Mirror (Redundanz CT 101) | -| 601 | rss-mirror | — | RSS Manager Mirror (Redundanz CT 109) | +| 600 | $(echo $CT_600 | cut -d'|' -f1) | $(echo $CT_600 | cut -d'|' -f2) | $(echo $CT_600 | cut -d'|' -f3) | +| 601 | $(echo $CT_601 | cut -d'|' -f1) | $(echo $CT_601 | cut -d'|' -f2) | $(echo $CT_601 | cut -d'|' -f3) | +| 145 | $(echo $CT_145 | cut -d'|' -f1) | $(echo $CT_145 | cut -d'|' -f2) | $(echo $CT_145 | cut -d'|' -f3) | ## Routing -- Cloudflare Tunnel CT 101: arakavanews.com → :80 -- Cloudflare Tunnel CT 101: arakava-news-2.orbitalo.net → 301 → arakavanews.com -- Cloudflare Tunnel CT 109: matomo.orbitalo.net → :80 +- Cloudflare Tunnel CT 101: $DOMAIN_PRIMARY → :80 +- Cloudflare Tunnel CT 101: $DOMAIN_OLD → 301 → $DOMAIN_PRIMARY +- Cloudflare Tunnel CT 109: $DOMAIN_MATOMO → :80 - Cloudflare Tunnel CT 600: Standby (WordPress Mirror) - Cloudflare Tunnel CT 601: Standby (RSS Manager Mirror) - Kein Traefik, kein PBS-Gateway mehr ## Zugangsdaten -- pve-hetzner: root / Astral-Proxmox!2026 -- pve1: root / astral66 -- Alle CTs: root / astral66 -- Seafile: admin@orbitalo.net / astral66 -- Forgejo: orbitalo / astral66 +- pve-hetzner: root / $PW_HETZNER +- pve1: root / $PW_DEFAULT +- Alle CTs: root / $PW_DEFAULT +- Seafile: admin@orbitalo.net / $PW_DEFAULT +- Forgejo: orbitalo / $PW_DEFAULT ## Telegram Bots | Bot | Token (Auszug) | Chat-ID | diff --git a/smart-home/STATE.md b/smart-home/STATE.md index 37c80161..289f8645 100644 --- a/smart-home/STATE.md +++ b/smart-home/STATE.md @@ -1,5 +1,5 @@ # Smart Home Muldenstein — Live State -> Auto-generiert: 2026-03-08 05:00 +> Auto-generiert: 2026-03-08 05:08 ## Backup-Status - Letztes Backup: 513M Mar 8 04:01