diff --git a/.cursorrules b/.cursorrules index 59d5125f..91a71066 100644 --- a/.cursorrules +++ b/.cursorrules @@ -2,39 +2,83 @@ # REGEL: Nur diese Datei beim Start lesen. Dann NUR den einen relevanten Doc laden. # Nie mehr als 1 STATE.md gleichzeitig in den Kontext laden. +## Quelle der Wahrheit + +**`homelab-brain/homelab.conf`** = EINZIGE Datei mit IPs, URLs, Containern, Passwörtern, Tokens. +Vor JEDER Aktion mit variablen Daten: `cat homelab-brain/homelab.conf` lesen. +Daten ändern = NUR `homelab.conf` editieren + auf pve-hetzner deployen. + ## Routing-Tabelle -| Aufgabe betrifft... | Lade diese Datei | +| Aufgabe betrifft... | Lade diese Datei | |-----------------------------------|------------------------------| -| WordPress / RSS / Arakava News | arakava-news/STATE.md | -| Redakteur / WordPress KI-Autor | redax-wp/STATE.md | -| Flugpreisscanner / Selenium | flugpreisscanner/STATE.md | -| Gold / Silber / Edelmetall-Bot | edelmetall/STATE.md | -| Smart Home / ioBroker / Grafana | smart-home/STATE.md | -| ESP32 / Display / Heizung | esp32/PLAN.md | -| FünfVorAcht / Telegram KI-Poster | fuenfvoracht/STATE.md | -| Server / Container / Proxmox | infrastructure/STATE.md | -| Telegram Bots allgemein | infrastructure/STATE.md | -| TODOs / Aufgaben / Was steht an | Forgejo Issues (siehe unten) | -| Alle Projekte / Übersicht | MASTER_INDEX.md | +| IPs, URLs, Credentials, Container | homelab.conf | +| WordPress / RSS / Arakava News | arakava-news/STATE.md | +| Redakteur / WordPress KI-Autor | redax-wp/STATE.md | +| Flugpreisscanner / Selenium | flugpreisscanner/STATE.md | +| Gold / Silber / Edelmetall-Bot | edelmetall/STATE.md | +| Smart Home / ioBroker / Grafana | smart-home/STATE.md | +| ESP32 / Display / Heizung | esp32/PLAN.md | +| FünfVorAcht / Telegram KI-Poster | fuenfvoracht/STATE.md | +| Server / Container / Proxmox | infrastructure/STATE.md | +| Telegram Bots allgemein | infrastructure/STATE.md | +| TODOs / Aufgaben / Was steht an | Forgejo Issues (siehe unten) | +| Alle Projekte / Übersicht | MASTER_INDEX.md | + +## Server-Übersicht (Details in homelab.conf) + +| Logischer Name | Hostname | Standort | +|---|---|---| +| pve-hetzner | pve-hetzner | Hetzner DC | +| pve-ka-1 | pve1 | Kambodscha | +| pve-ka-2 | pve-Shops | Kambodscha | +| pve-ka-3 | pve3 | Kambodscha | +| pve-mu-2 | pve2 | Muldenstein | +| pve-mu-3 | pve3 | Muldenstein | +| pve-he | helmut-pve | Ramsin (bei Helmut) | + +**Achtung:** pve3 existiert zweimal (Kambodscha + Muldenstein). Immer den logischen Namen verwenden! ## TODO-Liste (Forgejo) -- Lesen: `curl -s -H "Authorization: token b874766bdf357bd4c32fa4369d0c588fc6193336" http://100.89.246.60:3000/api/v1/repos/orbitalo/homelab-brain/issues?state=open` -- Web: http://100.89.246.60:3000/orbitalo/homelab-brain/issues +Forgejo-URL und Token stehen in `homelab.conf` (FORGEJO_TOKEN). +- Lesen: `source homelab-brain/homelab.conf && curl -s -H "Authorization: token $FORGEJO_TOKEN" http://$(grep CT_111_HZ homelab-brain/homelab.conf | cut -d'|' -f2):3000/api/v1/repos/orbitalo/homelab-brain/issues?state=open` - Neues TODO: POST an `/api/v1/repos/orbitalo/homelab-brain/issues` mit `{"title":"...","body":"...","labels":[ID]}` - Erledigt: PATCH mit `{"state":"closed"}` -## Server-Zugang (immer verfügbar) -- pve-hetzner: `ssh root@100.88.230.59` | PW: Astral-Proxmox!2026 -- pve1 Kambodscha: `ssh root@192.168.0.197` | PW: astral66 -- Cluster-Doku: `pct exec 999 -- cat /root/.cursorrules` +## Server-Zugang +Alle IPs und Passwörter stehen in `homelab.conf`. Keine Duplikate hier. +Schnellzugriff: `source homelab-brain/homelab.conf && sshpass -p "$PW_HETZNER" ssh root@$SRV_HETZNER` -## Credentials (immer verfügbar) -- GitHub PAT: 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 -- Forgejo Token: b874766bdf357bd4c32fa4369d0c588fc6193336 -- Weitere Credentials: `pct exec 999 -- cat /root/docs/credentials.md` +## Deployment — PFLICHT-Workflow + +Code-Änderungen IMMER über das Deploy-Skript ausrollen: +```bash +./homelab-brain/scripts/deploy.sh "Beschreibung" +``` + +**Was es tut:** git commit → push Forgejo → ssh pve-hetzner git pull → Bot restart + +**NIEMALS:** +- `scp` oder `pct push` für Bot-Dateien verwenden +- Dateien direkt auf pve-hetzner editieren +- Änderungen ohne sofortigen Push machen (sync-state.sh überschreibt!) + +**Warum:** CT 116 (Hausmeister-Bot) hat einen Bind-Mount auf `/opt/homelab-brain/homelab-ai-bot/`. +Git-Pull auf pve-hetzner = Bot sieht Änderungen sofort. Kein manuelles Kopieren nötig. + +**Architektur:** +``` +Cursor (pve-ka-1) → Forgejo (CT 111) → pve-hetzner /opt/homelab-brain/ + edit+push git repo git pull + ↓ Bind-Mount + CT 116 /opt/homelab-ai-bot/ +``` ## Goldene Regeln 1. Kontextfenster schonen — nie mehr laden als nötig -2. STATE.md Dateien sind auto-generiert — immer aktuell -3. Bei Unklarheit: MASTER_INDEX.md lesen, nicht raten -4. Vor git push / Remote-Zugriff: Credentials oben prüfen, bei Bedarf credentials.md laden +2. `homelab.conf` lesen vor jeder Infrastruktur-Aktion +3. STATE.md Dateien sind auto-generiert — niemals manuell editieren +4. Variable Daten ändern = `homelab.conf` editieren, sonst NICHTS +5. Bei Unklarheit: MASTER_INDEX.md lesen, nicht raten +6. MCP-Tools nutzen fuer Live-Daten: homelab_get_errors, homelab_all_containers, homelab_query_logs, etc. +7. Server immer mit logischem Namen referenzieren (pve-ka-3, nicht "pve3") +8. Code-Änderungen NUR über `scripts/deploy.sh` deployen — KEIN scp/pct push diff --git a/MASTER_INDEX.md b/MASTER_INDEX.md index 1af2de2c..b75ddff9 100644 --- a/MASTER_INDEX.md +++ b/MASTER_INDEX.md @@ -53,8 +53,29 @@ - Web: http://100.89.246.60:3000/orbitalo/homelab-brain/issues - Details: siehe `homelab.conf` (FORGEJO_TOKEN) +## Deployment + +**Code-Änderungen deployen — EIN Befehl:** +```bash +./scripts/deploy.sh "Beschreibung" +``` + +Ablauf: `git commit → push Forgejo → pve-hetzner git pull → Bot restart` + +**Architektur:** +``` +Cursor (pve-ka-1) → Forgejo (CT 111) → pve-hetzner /opt/homelab-brain/ + ↓ Bind-Mount (mp0 in CT 116 Config) + CT 116 /opt/homelab-ai-bot/ +``` + +CT 116 liest direkt aus dem Git-Repo über einen LXC Bind-Mount. +Kein `scp` oder `pct push` nötig — Git-Pull auf pve-hetzner reicht. + ## Auto-Sync - `sync-state.sh` / `sync_state.py` — läuft alle 15 Min auf pve-hetzner - Generiert STATE.md Dateien automatisch - Watchdog mit Telegram-Alerts bei Ausfällen -- Monitor-Cron prüft alle 15 Min proaktiv auf Fehler +- Monitor-Cron (`*/5`) prüft proaktiv auf Fehler (panic/fatal/OOM) +- **Achtung:** sync-state.sh macht `git reset --hard` — lokale Änderungen + ohne Push werden überschrieben!