doku: Sicherung (PBS als zweite Schicht, Einschalten), Probe-Wiederherstellung, Waechter, offene Faeden
- BETRIEB.md: PBS-Sicherung (was, wohin, warum seit 21.08. aus, Zugang nur auf der Box) mit Anleitung zum Einschalten samt Probelauf; neuer Abschnitt Probe-Wiederherstellung (Takt, Pruefungen, Ergebnisdatei, Meldung); Waechter-Tabelle und Hirn-Pruefung; Betreff [Sicherung]. - OFFENE-FAEDEN.md: erledigt und raus: ungepinnte Abhaengigkeiten, Hirn-Pruefung, synchrone Radar-Suche und Laden ohne Ergebnis, Kleinkram im Code. Neu offen: PBS einschalten (Lead). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
3f05263b63
commit
43c058d7cc
+49
-2
@@ -50,6 +50,7 @@ sudo journalctl -u llama-swap -n 100 # Motor (System-Dienst)
|
|||||||
| `[Box wieder ok]` | Wächter | ein gemeldeter roter Hinweis ist erledigt |
|
| `[Box wieder ok]` | Wächter | ein gemeldeter roter Hinweis ist erledigt |
|
||||||
| `[Homelab-Problem]` / `[Homelab wieder ok]` | Wächter der Homelab-Instanz | wie oben, sobald diese Instanz läuft |
|
| `[Homelab-Problem]` / `[Homelab wieder ok]` | Wächter der Homelab-Instanz | wie oben, sobald diese Instanz läuft |
|
||||||
| `[Modell-Radar]` | `backend/radar_lauf.py` | ein Kandidat hat den Nachttest bestanden |
|
| `[Modell-Radar]` | `backend/radar_lauf.py` | ein Kandidat hat den Nachttest bestanden |
|
||||||
|
| `[Sicherung]` | `backend/services/probe_wiederherstellung.py` | die monatliche Probe-Wiederherstellung war rot (normale Dringlichkeit) |
|
||||||
| `[Stack-Radar]` | `jobs/stack-radar.sh` | Samstagsbericht |
|
| `[Stack-Radar]` | `jobs/stack-radar.sh` | Samstagsbericht |
|
||||||
| `[Morgenmeldung]` | `morgenmeldung.sh` | Sammelmeldung der Nacht, 07:00 |
|
| `[Morgenmeldung]` | `morgenmeldung.sh` | Sammelmeldung der Nacht, 07:00 |
|
||||||
| `[Alarm] Deploy` | `deploy.sh` | Deploy gescheitert, der alte Stand läuft wieder (dringend) |
|
| `[Alarm] Deploy` | `deploy.sh` | Deploy gescheitert, der alte Stand läuft wieder (dringend) |
|
||||||
@@ -70,6 +71,7 @@ soll kein Alarm sein).
|
|||||||
| Platte (`MC_DATEN_DIR`, auf der Box `/srv/models`) | ab 90 % | ab 80 % |
|
| Platte (`MC_DATEN_DIR`, auf der Box `/srv/models`) | ab 90 % | ab 80 % |
|
||||||
| Festgehaltene Updates | – | jeder Pin |
|
| Festgehaltene Updates | – | jeder Pin |
|
||||||
| Partner-Instanz (nur mit `MC_PARTNER_URL`) | „<Name> antwortet nicht" | – |
|
| Partner-Instanz (nur mit `MC_PARTNER_URL`) | „<Name> antwortet nicht" | – |
|
||||||
|
| Sicherung (seit 24.09.) | – | `pbs-backup` scheitert; Probe-Wiederherstellung rot, älter als 40 Tage oder noch nie gelaufen (sobald ihr Timer eingerichtet ist) |
|
||||||
| Abgestürzte Prüfung | – | „Eine Prüfung des Wächters lief nicht" |
|
| Abgestürzte Prüfung | – | „Eine Prüfung des Wächters lief nicht" |
|
||||||
|
|
||||||
In der Rolle `homelab` prüft der Wächter bisher nur Platte und Partner und meldet mit „[Homelab-Problem]".
|
In der Rolle `homelab` prüft der Wächter bisher nur Platte und Partner und meldet mit „[Homelab-Problem]".
|
||||||
@@ -87,6 +89,9 @@ In der Rolle `homelab` prüft der Wächter bisher nur Platte und Partner und mel
|
|||||||
erscheint der Hinweis erneut).
|
erscheint der Hinweis erneut).
|
||||||
- Der Wächter ist der einzige Schreiber von `/srv/models/mc2-waechter.json`. Ist sein letzter Takt älter als
|
- Der Wächter ist der einzige Schreiber von `/srv/models/mc2-waechter.json`. Ist sein letzter Takt älter als
|
||||||
5 Minuten, zeigt die Startseite „Wächter schweigt".
|
5 Minuten, zeigt die Startseite „Wächter schweigt".
|
||||||
|
- **Hirn (seit 24.09.):** Geprüft wird gezielt das Modell mit der Rolle `hermes` und sein Zustand in llama-swap
|
||||||
|
(`/running`), nicht mehr „irgendein Modell läuft". Lädt es gerade (`starting`), ist das kein Befund — höchstens
|
||||||
|
10 Minuten lang (`MC_WAECHTER_HIRN_LADEN_S`), danach heißt der Hinweis „Lucys Hirn lädt nicht fertig".
|
||||||
|
|
||||||
## Dienste schlafen legen und wecken
|
## Dienste schlafen legen und wecken
|
||||||
|
|
||||||
@@ -190,8 +195,50 @@ Prüfen: `curl http://<ip>:9001/api/homelab/ziele` (nach etwa einer Minute stehe
|
|||||||
die Liste der Modelldateien.
|
die Liste der Modelldateien.
|
||||||
- Eine Sicherung ist seit 24.09. rund 12 MB groß.
|
- Eine Sicherung ist seit 24.09. rund 12 MB groß.
|
||||||
- **Nicht enthalten:** Modelle (neu ladbar), Code (Git), venvs, `~/.ssh` (auch nicht der Spiegel-Schlüssel).
|
- **Nicht enthalten:** Modelle (neu ladbar), Code (Git), venvs, `~/.ssh` (auch nicht der Spiegel-Schlüssel).
|
||||||
- **Weitere Schichten:** Die Sicherung der Box nach PBS (`pbs-backup.timer`) ist seit 21.08. aus. PBS sichert die
|
- **Zweite Schicht: PBS** (`pbs-backup.timer`, täglich 03:50; Units und Skript seit 24.09. im Repo):
|
||||||
Proxmox-Container, das QNAP macht Snapshots; beides läuft auf den anderen Geräten und ist hier nicht geprüft.
|
`deploy/pbs-backup.sh` sichert `~/.hermes` ganz (auch Sitzungen und Protokolle, die der Tarball weglässt),
|
||||||
|
`~/wissens-vault` (optional) und `/etc/llama-swap` als pxar-Archive auf den Proxmox Backup Server
|
||||||
|
(`192.168.178.156:8007`, Container 105, Datastore `qnap` = NFS-Freigabe auf dem QNAP, Backup-ID `aibox`). Der PBS
|
||||||
|
dedupliziert (ein Lauf dauert inkrementell rund 30 s) und hebt 7 Tage, 4 Wochen und 3 Monate auf (Prune-Job auf dem
|
||||||
|
PBS). Zugang `~/.config/pbs-backup/env` (Benutzer `aibox@pbs`, Rolle DatastoreBackup, Rechte 600) und der Client
|
||||||
|
`~/bin/proxmox-backup-client` liegen nur auf der Box, nie im Repo. Die Sicherung lief vom 09.07. bis 20.08. täglich
|
||||||
|
grün; am 21.08. brach sie ab (ihr erster Quellordner `/srv/models/mem0`, das abgelöste Gedächtnis, fehlte) und wurde
|
||||||
|
im KISS-Umbau abgeschaltet. Das neue Skript kennt mem0 nicht mehr. `deploy.sh` spielt die Units aus, schaltet sie
|
||||||
|
aber weder ein noch aus. Scheitert ein Lauf, zeigt der Wächter gelb.
|
||||||
|
- **Außerdem:** Der PBS sichert die Proxmox-Container, das QNAP macht Snapshots; beides läuft auf den anderen Geräten
|
||||||
|
und ist hier nicht geprüft.
|
||||||
|
|
||||||
|
**PBS-Sicherung einschalten** (einmalig nach dem Deploy, der die neuen Units ausspielt):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||||||
|
systemctl --user cat pbs-backup.service | grep ExecStart # muss auf deploy/pbs-backup.sh zeigen
|
||||||
|
systemctl --user start pbs-backup.service # Probelauf; kehrt nach dem Lauf zurück (~30 s)
|
||||||
|
journalctl --user -u pbs-backup.service -n 20 --no-pager # erwartet: „Duration: …“ und „End Time: …“, kein „Error“
|
||||||
|
systemctl --user enable --now pbs-backup.timer # holt beim ersten Start den seit 21.08. verpassten Lauf nach
|
||||||
|
systemctl --user list-timers pbs-backup.timer # nächster Lauf 03:50
|
||||||
|
```
|
||||||
|
|
||||||
|
Ausschalten: `systemctl --user disable --now pbs-backup.timer`. Die alte Fassung `~/bin/pbs-backup.sh` wird danach
|
||||||
|
nicht mehr gebraucht; der Client daneben schon.
|
||||||
|
|
||||||
|
## Probe-Wiederherstellung (monatlich, seit 24.09.)
|
||||||
|
|
||||||
|
- **Wann:** `mc2-probe-wiederherstellung.timer`, am ersten Montag im Monat um 05:15 — nie sonntags (Updates ab 04:30),
|
||||||
|
lange nach der Sicherung um 03:30. `Persistent=true` holt einen verpassten Lauf nach. Von Hand:
|
||||||
|
`systemctl --user start mc2-probe-wiederherstellung.service` oder Knopf „Jetzt prüfen" am Hinweis.
|
||||||
|
- **Was:** `backend/services/probe_wiederherstellung.py` packt die jüngste Sicherung aus `/srv/models/mc2-backups` in
|
||||||
|
einen eigenen Tmp-Ordner `/var/tmp/mc2-probe-*` aus, prüft und löscht ihn wieder. Lebende Dateien fasst sie nie
|
||||||
|
an. `.env` und die Token-Dateien packt sie nicht aus, sie prüft nur, dass sie in der Sicherung stehen.
|
||||||
|
- **Geprüft:** Die jüngste Sicherung ist höchstens 48 Stunden alt und lässt sich vollständig lesen. Lucys Gedächtnis
|
||||||
|
(`memories/`) und `SOUL.md` sind da und stimmen mit dem lebenden Stand überein, soweit er vor der Sicherung schon so
|
||||||
|
dastand. Skills, Cron-Skripte und Hermes-Cron-Jobs sind da, `config.yaml` ist lesbar, `.env` vorhanden, die
|
||||||
|
llama-swap-Config hat Modelle, jede `mc2-*.json` des Box-Wart-Zustands ist lesbar, die systemd-Units samt
|
||||||
|
llama-swap-Drop-ins sind drin.
|
||||||
|
- **Ergebnis:** `/srv/models/mc2-probe-wiederherstellung.json` (Zeit, `gruen`/`rot`, Sicherung, Geprüftes, Fehler)
|
||||||
|
und `journalctl --user -u mc2-probe-wiederherstellung`. Bei Rot: Meldung „[Sicherung]" in normaler Dringlichkeit
|
||||||
|
(nachts in die Morgenmeldung) und ein gelber Hinweis des Wächters. Gelb auch, wenn die letzte Probe älter als
|
||||||
|
40 Tage ist.
|
||||||
|
|
||||||
## Zurückspielen
|
## Zurückspielen
|
||||||
|
|
||||||
|
|||||||
@@ -43,15 +43,9 @@ Technik: [ARCHITEKTUR.md](../ARCHITEKTUR.md), Abschnitt „Der Homelab-Teil“;
|
|||||||
und `restore.sh` sichern es samt Kopie `desktop-gateway-token`. Entfernen ist Security-Config.
|
und `restore.sh` sichern es samt Kopie `desktop-gateway-token`. Entfernen ist Security-Config.
|
||||||
2. **Units nur auf der Box:** `hermes-builtin-ui.service` samt Drop-ins und die llama-swap-Drop-ins (darunter
|
2. **Units nur auf der Box:** `hermes-builtin-ui.service` samt Drop-ins und die llama-swap-Drop-ins (darunter
|
||||||
`warmset.conf`) liegen nicht im Repo; seit 24.09. stehen sie als Kopie in jeder Sicherung.
|
`warmset.conf`) liegen nicht im Repo; seit 24.09. stehen sie als Kopie in jeder Sicherung.
|
||||||
3. **Ungepinnte Abhängigkeiten:** `backend/requirements.txt` nur mit `>=`, jeder Deploy zieht die neueste Version.
|
3. **PBS-Sicherung einschalten:** Units und Skript liegen seit 24.09. im Repo (`deploy/pbs-backup.*`), Zugang und
|
||||||
Was nachweislich zusammen lief, steht in `known-good/` jeder Sicherung.
|
Client sind auf der Box, der PBS ist erreichbar. Nach dem Deploy einmal von Hand einschalten
|
||||||
4. **Der Wächter hält das Hirn für bereit, sobald irgendein Modell läuft** (`pruefe_kern()`). Ein abgestürztes Hirn
|
([BETRIEB.md](../BETRIEB.md), Sicherung); danach die Zeile vom 21.08. in [VERDIKTE.md](VERDIKTE.md) nachziehen.
|
||||||
neben einem geladenen Coder bliebe unbemerkt. Klären, ob gewollt.
|
|
||||||
5. **Radar „Jetzt suchen" läuft synchron** und kann Minuten dauern; `POST /api/models/{id}/load` meldet `ok`, egal
|
|
||||||
was die Engine antwortet.
|
|
||||||
6. **Kleinkram im Code:** `mcp/mcp_mc.py` (MCP aus) ruft die nie vorhandene Route `/api/routing/route`;
|
|
||||||
`hermes-postcheck.sh` warnt bei jedem Lauf über den entfernten Patch-Träger; `voice_service/app.py` nennt
|
|
||||||
faster-whisper statt Parakeet; `.aiexclude` gilt nur Antigravity.
|
|
||||||
|
|
||||||
## Aufräumen auf der Box (nur per User-Klick)
|
## Aufräumen auf der Box (nur per User-Klick)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user