Doku: Deployment-Workflow in .cursorrules + MASTER_INDEX.md

This commit is contained in:
root 2026-03-09 14:24:12 +07:00
parent 84cdf4491e
commit 48e02b1244
2 changed files with 91 additions and 26 deletions

View file

@ -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

View file

@ -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!