Auto-Sync: 2026-02-24 06:40

This commit is contained in:
Auto-Sync 2026-02-24 06:40:10 +01:00
parent 8e6d77d932
commit 62ac7ebd5d
4 changed files with 176 additions and 162 deletions

View file

@ -1,12 +1,11 @@
# Arakava News — Live State # 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
| Service | Status | | Service | CT | Status |
|---|---| |---|---|---|
| rss-manager (CT 109) | active | | rss-manager | 109 | active |
| WordPress Docker (CT 101) | running | | WordPress Docker | 101 | running |
| n8n Workflows | ⛔ deaktiviert |
## Letzte Feed-Aktivität (Top 5) ## Letzte Feed-Aktivität (Top 5)
Photon.info (KI-Analyse): 2026-02-24 05:13:04 Photon.info (KI-Analyse): 2026-02-24 05:13:04
@ -23,38 +22,44 @@
## OpenRouter Guthaben ## OpenRouter Guthaben
$19.51 verbleibend $19.51 verbleibend
## Credentials ## URLs
- WordPress: https://arakava-news-2.orbitalo.net | admin / eJIyhW0p5PFacjvvKGufKeXS - Blog: https://arakava-news-2.orbitalo.net
- RSS Manager: http://<CT109-IP>:8080 - Admin: https://arakava-news-2.orbitalo.net/wp-admin (admin / eJIyhW0p5PFacjvvKGufKeXS)
- OpenRouter: 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 - RSS Manager: http://100.113.244.101:8080 (admin / astral66)
- Matomo: https://matomo.orbitalo.net (admin / astral66)
## Feeds (17 aktiv) ## Container
| ID | Name | Kategorie | Schedule | | CT | Dienst | Tailscale |
|---|---|---|---| |---|---|---|
| 1 | Dr. Bines Substack | 13 | 08/14/20 Uhr | | 101 | WordPress + MySQL (Docker) | 100.91.212.19 |
| 3 | NachDenkSeiten | 5 | 07/13/19 Uhr | | 109 | RSS Manager + Matomo | 100.113.244.101 |
| 4 | Tichys Einblick | 6 | 07:30/13:30/19:30 |
| 5 | Junge Freiheit | 7 | 08/14/20 Uhr | ## Aktive Feeds (17)
| 6 | PAZ | 8 | 08:30/14:30/20:30 | | ID | Name | Schedule |
| 7 | Apollo News | 9 | 09/15/21 Uhr | |---|---|---|
| 8 | Apolut | 10 | 09:30/15:30/21:30 | | 1 | Dr. Bines Substack | 08/14/20 Uhr |
| 9 | Achgut.com | 15 | 10/16/22 Uhr | | 3 | NachDenkSeiten | 07/13/19 Uhr |
| 10 | Heise Security | 11 | alle 4h | | 4 | Tichys Einblick | 07:30/13:30/19:30 |
| 11 | Golem.de | 12 | alle 2h | | 5 | Junge Freiheit | 08/14/20 Uhr |
| 12 | Heise Online | 3 | alle 3h | | 6 | PAZ | 08:30/14:30/20:30 |
| 13 | Rubikon.news | 17 | alle 3h | | 7 | Apollo News | 09/15/21 Uhr |
| 14 | Corona-Transition | 18 | alle 4h | | 8 | Apolut | 09:30/15:30/21:30 |
| 15 | Photon.info (KI) | 3 | alle 6h | | 9 | Achgut.com | 10/16/22 Uhr |
| 16 | Antispiegel | 20 | 08:30/14:30/20:30 | | 10 | Heise Security | alle 4h |
| 17 | Riehle News | 21 | 09:00 Uhr | | 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/) ## Code (CT 109: /opt/rss-manager/)
- poster.py, scheduler.py, app.py, db.py, github_researcher.py poster.py, scheduler.py, app.py, db.py
- Vollcode: github.com/Orbitalo/Wordpress-V3-MCP-Projekt
## Offene Aufgaben v3 ## Änderungshistorie
- [ ] CT 112 anlegen, Docker Compose v3 - 24.02.2026: Scheduler Lock gegen Doppelstarts
- [ ] Retry-Logik in poster.py - 24.02.2026: Telegram auf HTML-Modus (Sonderzeichen-Fix)
- [ ] Telegram Alerting bei Feed-Fehlern - 24.02.2026: Werbeartikel-Blacklist (Anzeige:, Sponsored, etc.)
- 23.02.2026: Matomo von CT 113 → CT 109 migriert
## Notizen (manuell) - 23.02.2026: CT 100/102/104/105/106/113 gelöscht

View file

@ -1,45 +1,52 @@
# Infrastruktur — Live State # Infrastruktur — Live State
> Auto-generiert: 2026-02-24 06:30 > Auto-generiert: 2026-02-24 06:40
## pve-hetzner Disk ## pve-hetzner Disk
| Mount | Belegt | | Mount | Belegt |
|---|---| |---|---|
| / (root) | 11% von 98G | | / (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 | | CT | Name | Tailscale IP | Dienste |
|---|---|---|---| |---|---|---|---|
| 100 | traefik | 100.78.77.115 | Traefik, Pangolin, Uptime-Kuma | | 101 | wordpress-v2 | 100.91.212.19 | WordPress + MySQL (Docker) |
| 101 | moltbot | 100.91.212.19 | @MutterbotAI_bot |
| 102 | dify | 100.113.136.30 | Dify RAG + @DifyRagBot |
| 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) | | 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) |
| 104 | n8n | 100.125.102.93 | n8n (Workflows deaktiviert) | | 109 | rss-manager | 100.113.244.101 | RSS Manager + Matomo |
| 107 | ragflow | 100.116.125.12 | RAGFlow (in Einrichtung) | | 110 | portainer | 100.109.206.43 | Portainer Docker UI |
| 109 | rss-manager | — | RSS Manager + KI | | 111 | forgejo | 100.89.246.60 | Forgejo Git (http://100.89.246.60:3000) |
| 110 | portainer | 100.109.206.43 | Portainer UI |
| 144 | muldenstein-backup | — | Backup-Archiv | | 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 ## Gelöschte Container (24.02.2026)
| CT | Name | IP | Dienste | | CT | Name | Grund |
|---|---|---|---| |---|---|---|
| 135 | edelmetall | 192.168.0.219 | Streamlit Gold/Silber | | 100 | traefik | Abgelöst durch Cloudflare Tunnel |
| 888 | MCP-Proxmox | 192.168.0.116 | Proxmox MCP | | 102 | dify | Experiment fehlgeschlagen |
| 999 | cluster-docu | 192.168.0.209 | Doku-Mirror | | 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 ## Container auf pve1 (Kambodscha)
| CT | Name | IP | Dienste | | CT | Name | Dienste |
|---|---|---|---| |---|---|---|
| 134 | gold-silber-de | 100.69.161.128 | Dashboard DE (blei.orbitalo.info) | | 136 | gold-silber-v3 | Edelmetall-Bot (Tailscale: 100.72.230.87) |
| 143 | raspi-broker | 192.168.178.36 | InfluxDB, Grafana, ioBroker | | 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 ## Zugangsdaten
- pve-hetzner: root / Astral-Proxmox!2026 - pve-hetzner: root / Astral-Proxmox!2026
- pve1: root / astral66 - pve1: root / astral66
- Alle lokalen CTs: root / astral66 - Alle CTs: root / astral66
- Seafile: admin@orbitalo.net / astral66 - Seafile: admin@orbitalo.net / astral66
- n8n: wuttig@gmx.de / Astral66 - Forgejo: orbitalo / astral66
- Dify: admin@orbitalo.net / astral66
## Notizen (manuell) ## Telegram Bots
| Bot | Token (Auszug) | Chat-ID |
|---|---|---|
| Mutter (@MutterbotAI_bot) | 8551565940:... | 674951792 |

View file

@ -1,20 +1,15 @@
#!/bin/bash #!/bin/bash
# ============================================================ # ============================================================
# homelab-brain Auto-Sync Script # homelab-brain Auto-Sync Script
# Läuft alle 15 Min auf pve-hetzner # Läuft alle 15 Min auf pve-hetzner via Cron
# Aktualisiert STATE.md Dateien, pushed nach GitHub # Aktualisiert STATE.md Dateien, pushed nach Forgejo
# und sendet Telegram-Alerts bei Service-Ausfällen # Telegram-Alerts bei Service-Ausfällen und Push-Fehlern
# # Stand: 24.02.2026
# Setup (einmalig auf pve-hetzner):
# git clone https://<TOKEN>@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
# ============================================================ # ============================================================
set -euo pipefail set -euo pipefail
REPO="/opt/homelab-brain" REPO="/opt/homelab-brain"
GH_TOKEN="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" FORGEJO_TOKEN="5402da0447b0eb6aede721a8748a08974ddc5c42"
FORGEJO_TOKEN="04f9ca5b5db295ececd2656d7b113c37d90c38fd"
TG_TOKEN="8551565940:AAHIUpZND-tCNGv9yEoNPRyPt4GxEPYBJdE" TG_TOKEN="8551565940:AAHIUpZND-tCNGv9yEoNPRyPt4GxEPYBJdE"
TG_CHAT="674951792" TG_CHAT="674951792"
DEBOUNCE_DIR="/tmp/homelab_watchdog" DEBOUNCE_DIR="/tmp/homelab_watchdog"
@ -37,7 +32,7 @@ tg_alert() {
fi fi
curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \ curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
-d "chat_id=${TG_CHAT}" \ -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 -d "parse_mode=Markdown" > /dev/null 2>&1
echo "$now" > "$lockfile" echo "$now" > "$lockfile"
log "Alert gesendet: $key" log "Alert gesendet: $key"
@ -49,14 +44,13 @@ check_service() {
local status local status
status=$(pct exec "$ct" -- systemctl is-active "$service" 2>/dev/null || echo "unknown") status=$(pct exec "$ct" -- systemctl is-active "$service" 2>/dev/null || echo "unknown")
if [ "$status" != "active" ]; then 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" echo "DOWN"
else else
# Wenn vorheriger Alert vorhanden → Recovery-Meldung
if [ -f "$DEBOUNCE_DIR/service_${service}.lock" ]; then if [ -f "$DEBOUNCE_DIR/service_${service}.lock" ]; then
curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \ curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
-d "chat_id=${TG_CHAT}" \ -d "chat_id=${TG_CHAT}" \
-d "text=*${name}* wieder online" \ -d "text=*${name}* wieder online" \
-d "parse_mode=Markdown" > /dev/null 2>&1 -d "parse_mode=Markdown" > /dev/null 2>&1
rm -f "$DEBOUNCE_DIR/service_${service}.lock" rm -f "$DEBOUNCE_DIR/service_${service}.lock"
fi fi
@ -65,7 +59,7 @@ check_service() {
} }
cd "$REPO" cd "$REPO"
git pull --quiet git pull --quiet 2>/dev/null || true
# ───────────────────────────────────────────────────── # ─────────────────────────────────────────────────────
# 0. SERVICE WATCHDOG # 0. SERVICE WATCHDOG
@ -74,7 +68,7 @@ log "Watchdog läuft..."
RSS_LIVE=$(check_service 109 rss-manager "RSS Manager") 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") WP_LIVE=$(pct exec 101 -- docker inspect --format='{{.State.Status}}' wordpress-app 2>/dev/null || echo "unknown")
if [ "$WP_LIVE" != "running" ]; then 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 fi
# ───────────────────────────────────────────────────── # ─────────────────────────────────────────────────────
@ -87,19 +81,19 @@ WP_STATUS=$(pct exec 101 -- docker inspect --format='{{.State.Status}}' wordpres
# Letzte Feed-Aktivität aus SQLite # Letzte Feed-Aktivität aus SQLite
FEED_ACTIVITY=$(pct exec 109 -- python3 -c " FEED_ACTIVITY=$(pct exec 109 -- python3 -c "
import sqlite3, json import sqlite3
db = sqlite3.connect('/opt/rss-manager/rss_manager.db') 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() 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\"}') for r in rows: print(f' {r[0]}: {r[1] or \"nie\"}')
" 2>/dev/null || echo " (nicht abrufbar)") " 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") 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'") LAST_ERROR=$(pct exec 109 -- bash -c "grep 'ERROR' /opt/rss-manager/logs/service.log 2>/dev/null | tail -1 || echo 'keine'")
# OpenRouter Balance # OpenRouter Balance
OR_BALANCE=$(pct exec 109 -- python3 -c " OR_BALANCE=$(pct exec 109 -- python3 -c "
import requests, sys import requests
try: try:
r = requests.get('https://openrouter.ai/api/v1/auth/key', r = requests.get('https://openrouter.ai/api/v1/auth/key',
headers={'Authorization': 'Bearer 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'}, headers={'Authorization': 'Bearer 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'},
@ -113,14 +107,13 @@ except Exception as e:
cat > "$REPO/arakava-news/STATE.md" << EOF cat > "$REPO/arakava-news/STATE.md" << EOF
# Arakava News — Live State # Arakava News — Live State
> Auto-generiert: $DATE | Manueller Abschnitt am Ende. > Auto-generiert: $DATE
## Service Status ## Service Status
| Service | Status | | Service | CT | Status |
|---|---| |---|---|---|
| rss-manager (CT 109) | $RSS_STATUS | | rss-manager | 109 | $RSS_STATUS |
| WordPress Docker (CT 101) | $WP_STATUS | | WordPress Docker | 101 | $WP_STATUS |
| n8n Workflows | ⛔ deaktiviert |
## Letzte Feed-Aktivität (Top 5) ## Letzte Feed-Aktivität (Top 5)
$FEED_ACTIVITY $FEED_ACTIVITY
@ -132,41 +125,47 @@ $FEED_ACTIVITY
## OpenRouter Guthaben ## OpenRouter Guthaben
$OR_BALANCE $OR_BALANCE
## Credentials ## URLs
- WordPress: https://arakava-news-2.orbitalo.net | admin / eJIyhW0p5PFacjvvKGufKeXS - Blog: https://arakava-news-2.orbitalo.net
- RSS Manager: http://<CT109-IP>:8080 - Admin: https://arakava-news-2.orbitalo.net/wp-admin (admin / eJIyhW0p5PFacjvvKGufKeXS)
- OpenRouter: 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 - RSS Manager: http://100.113.244.101:8080 (admin / astral66)
- Matomo: https://matomo.orbitalo.net (admin / astral66)
## Feeds (17 aktiv) ## Container
| ID | Name | Kategorie | Schedule | | CT | Dienst | Tailscale |
|---|---|---|---| |---|---|---|
| 1 | Dr. Bines Substack | 13 | 08/14/20 Uhr | | 101 | WordPress + MySQL (Docker) | 100.91.212.19 |
| 3 | NachDenkSeiten | 5 | 07/13/19 Uhr | | 109 | RSS Manager + Matomo | 100.113.244.101 |
| 4 | Tichys Einblick | 6 | 07:30/13:30/19:30 |
| 5 | Junge Freiheit | 7 | 08/14/20 Uhr | ## Aktive Feeds (17)
| 6 | PAZ | 8 | 08:30/14:30/20:30 | | ID | Name | Schedule |
| 7 | Apollo News | 9 | 09/15/21 Uhr | |---|---|---|
| 8 | Apolut | 10 | 09:30/15:30/21:30 | | 1 | Dr. Bines Substack | 08/14/20 Uhr |
| 9 | Achgut.com | 15 | 10/16/22 Uhr | | 3 | NachDenkSeiten | 07/13/19 Uhr |
| 10 | Heise Security | 11 | alle 4h | | 4 | Tichys Einblick | 07:30/13:30/19:30 |
| 11 | Golem.de | 12 | alle 2h | | 5 | Junge Freiheit | 08/14/20 Uhr |
| 12 | Heise Online | 3 | alle 3h | | 6 | PAZ | 08:30/14:30/20:30 |
| 13 | Rubikon.news | 17 | alle 3h | | 7 | Apollo News | 09/15/21 Uhr |
| 14 | Corona-Transition | 18 | alle 4h | | 8 | Apolut | 09:30/15:30/21:30 |
| 15 | Photon.info (KI) | 3 | alle 6h | | 9 | Achgut.com | 10/16/22 Uhr |
| 16 | Antispiegel | 20 | 08:30/14:30/20:30 | | 10 | Heise Security | alle 4h |
| 17 | Riehle News | 21 | 09:00 Uhr | | 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/) ## Code (CT 109: /opt/rss-manager/)
- poster.py, scheduler.py, app.py, db.py, github_researcher.py poster.py, scheduler.py, app.py, db.py
- Vollcode: github.com/Orbitalo/Wordpress-V3-MCP-Projekt
## Offene Aufgaben v3 ## Änderungshistorie
- [ ] CT 112 anlegen, Docker Compose v3 - 24.02.2026: Scheduler Lock gegen Doppelstarts
- [ ] Retry-Logik in poster.py - 24.02.2026: Telegram auf HTML-Modus (Sonderzeichen-Fix)
- [ ] Telegram Alerting bei Feed-Fehlern - 24.02.2026: Werbeartikel-Blacklist (Anzeige:, Sponsored, etc.)
- 23.02.2026: Matomo von CT 113 → CT 109 migriert
## Notizen (manuell) - 23.02.2026: CT 100/102/104/105/106/113 gelöscht
EOF EOF
CHANGED=1 CHANGED=1
log "Arakava News STATE.md aktualisiert" log "Arakava News STATE.md aktualisiert"
@ -176,11 +175,6 @@ log "Arakava News STATE.md aktualisiert"
# ───────────────────────────────────────────────────── # ─────────────────────────────────────────────────────
log "Sammle Infrastruktur Status..." 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_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") 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 | | Mount | Belegt |
|---|---| |---|---|
| / (root) | $DISK_ROOT | | / (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 | | CT | Name | Tailscale IP | Dienste |
|---|---|---|---| |---|---|---|---|
| 100 | traefik | 100.78.77.115 | Traefik, Pangolin, Uptime-Kuma | | 101 | wordpress-v2 | 100.91.212.19 | WordPress + MySQL (Docker) |
| 101 | moltbot | 100.91.212.19 | @MutterbotAI_bot |
| 102 | dify | 100.113.136.30 | Dify RAG + @DifyRagBot |
| 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) | | 103 | seafile | 100.75.247.60 | Seafile (seafile.orbitalo.net) |
| 104 | n8n | 100.125.102.93 | n8n (Workflows deaktiviert) | | 109 | rss-manager | 100.113.244.101 | RSS Manager + Matomo |
| 107 | ragflow | 100.116.125.12 | RAGFlow (in Einrichtung) | | 110 | portainer | 100.109.206.43 | Portainer Docker UI |
| 109 | rss-manager || RSS Manager + KI | | 111 | forgejo | 100.89.246.60 | Forgejo Git (http://100.89.246.60:3000) |
| 110 | portainer | 100.109.206.43 | Portainer UI |
| 144 | muldenstein-backup || Backup-Archiv | | 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 ## Gelöschte Container (24.02.2026)
| CT | Name | IP | Dienste | | CT | Name | Grund |
|---|---|---|---| |---|---|---|
| 135 | edelmetall | 192.168.0.219 | Streamlit Gold/Silber | | 100 | traefik | Abgelöst durch Cloudflare Tunnel |
| 888 | MCP-Proxmox | 192.168.0.116 | Proxmox MCP | | 102 | dify | Experiment fehlgeschlagen |
| 999 | cluster-docu | 192.168.0.209 | Doku-Mirror | | 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 ## Container auf pve1 (Kambodscha)
| CT | Name | IP | Dienste | | CT | Name | Dienste |
|---|---|---|---| |---|---|---|
| 134 | gold-silber-de | 100.69.161.128 | Dashboard DE (blei.orbitalo.info) | | 136 | gold-silber-v3 | Edelmetall-Bot (Tailscale: 100.72.230.87) |
| 143 | raspi-broker | 192.168.178.36 | InfluxDB, Grafana, ioBroker | | 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 ## Zugangsdaten
- pve-hetzner: root / Astral-Proxmox!2026 - pve-hetzner: root / Astral-Proxmox!2026
- pve1: root / astral66 - pve1: root / astral66
- Alle lokalen CTs: root / astral66 - Alle CTs: root / astral66
- Seafile: admin@orbitalo.net / astral66 - Seafile: admin@orbitalo.net / astral66
- n8n: wuttig@gmx.de / Astral66 - Forgejo: orbitalo / astral66
- Dify: admin@orbitalo.net / astral66
## Notizen (manuell) ## Telegram Bots
| Bot | Token (Auszug) | Chat-ID |
|---|---|---|
| Mutter (@MutterbotAI_bot) | 8551565940:... | 674951792 |
EOF EOF
CHANGED=1 CHANGED=1
log "Infrastruktur STATE.md aktualisiert" log "Infrastruktur STATE.md aktualisiert"
@ -239,7 +240,6 @@ log "Infrastruktur STATE.md aktualisiert"
# ───────────────────────────────────────────────────── # ─────────────────────────────────────────────────────
log "Sammle Smart Home Status..." 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") 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") 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 - Backups gesamt: $BACKUP_COUNT
- Ziel: /home/backup-muldenstein/backups/ (CT 144) - Ziel: /home/backup-muldenstein/backups/ (CT 144)
## Services (CT 143: 192.168.178.36) ## Services (CT 143)
| Dienst | URL | | Dienst | URL |
|---|---| |---|---|
| Grafana | https://grafana.orbitalo.net | | Grafana | https://grafana.orbitalo.net |
@ -266,10 +266,8 @@ cat > "$REPO/smart-home/STATE.md" << EOF
- Disk > 90% - Disk > 90%
## Backup-Zeitplan ## 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 - Retention: 30d tägl, 90d wöchl, unbegrenzt monatl
## Notizen (manuell)
EOF EOF
CHANGED=1 CHANGED=1
log "Smart Home STATE.md aktualisiert" log "Smart Home STATE.md aktualisiert"
@ -282,9 +280,15 @@ if [ "$CHANGED" -eq 1 ]; then
git -C "$REPO" add -A git -C "$REPO" add -A
git -C "$REPO" -c user.email="sync@homelab" -c user.name="Auto-Sync" \ git -C "$REPO" -c user.email="sync@homelab" -c user.name="Auto-Sync" \
commit -m "Auto-Sync: $DATE" --quiet || true commit -m "Auto-Sync: $DATE" --quiet || true
git -C "$REPO" push \ if git -C "$REPO" push \
"https://orbitalo:${FORGEJO_TOKEN}@git.orbitalo.net/orbitalo/homelab-brain.git" main --quiet "http://orbitalo:${FORGEJO_TOKEN}@100.89.246.60:3000/orbitalo/homelab-brain.git" main --quiet 2>/tmp/git-push-err; then
log "Push erfolgreich" 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 else
log "Keine Änderungen" log "Keine Änderungen"
fi fi

View file

@ -1,12 +1,12 @@
# Smart Home Muldenstein — Live State # Smart Home Muldenstein — Live State
> Auto-generiert: 2026-02-24 06:30 > Auto-generiert: 2026-02-24 06:40
## Backup-Status ## Backup-Status
- Letztes Backup: 242M Feb 8 06:29 - Letztes Backup: 242M Feb 8 06:29
- Backups gesamt: 1 - Backups gesamt: 1
- Ziel: /home/backup-muldenstein/backups/ (CT 144) - Ziel: /home/backup-muldenstein/backups/ (CT 144)
## Services (CT 143: 192.168.178.36) ## Services (CT 143)
| Dienst | URL | | Dienst | URL |
|---|---| |---|---|
| Grafana | https://grafana.orbitalo.net | | Grafana | https://grafana.orbitalo.net |
@ -20,7 +20,5 @@
- Disk > 90% - Disk > 90%
## Backup-Zeitplan ## 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 - Retention: 30d tägl, 90d wöchl, unbegrenzt monatl
## Notizen (manuell)