# MEMORY.md — Nimbus ☁️

## Nextcloud-Infrastruktur (Stand: 2026-04-19)

### Collectives
| ID | Slug | Circle-ID |
|----|------|-----------|
| 1 | IT-Digital-Workspace | KEWQYZF1wMJUPvxHPRqtafKbeQxtvon |
| 2 | bot-platform | 1rOSIFLMOOfnVbVTGTjiyxnNaQQsEwV |

- `forge-init-temp` (ID 3) wurde am 2026-04-19 gelöscht (war leer, Mislav-Freigabe via Vigil)
- `collectives:list` occ-Befehl nicht verfügbar in Version 4.2.0 → DB-Abfrage nötig

### Bot-User-Accounts
| Username | Anzeigename | Gruppen |
|----------|-------------|---------|
| ki-asst-vigil | Vigil | bot-platform |
| ki-asst-forge | Forge | bot-platform |
| ki-asst-mislav | Lara (KI-Assistentin) | (keine) — TODO: Gruppen-Zugang |
| ki-asst-finn | Finn | (Finance) |
| ki-asst-finance-secubot | finance-secubot | (Finance, Admin im finance-Collective) |
| ki-asst-botops-security | botops-security | bot-platform | angelegt 2026-04-20 — lokales LLM, genutzt von Forge/Vigil für datenschutzsensible Aufgaben (z.B. API-Token in .env schreiben) |
| nextcloud-bot | Nimbus | admin, it-digital-workspace, all-members |

### Mislav Login
- **Nextcloud Login-Name:** `Mislav.Brkanovic@cattaro.eu` (nicht `Mislav Brkanovic`!)
- **Interne User-ID:** `Mislav Brkanovic`

### Gruppe all-members (angelegt 2026-04-19)
Mitglieder: ki-asst-finn, ki-asst-finance-secubot, ki-asst-forge, ki-asst-vigil, ki-asst-mislav, nextcloud-bot, Mislav Brkanovic, Piera Kaempf

### Wichtige Datei-IDs (Nextcloud filecache)
- CON-005: file_id `65986` (`appdata_ochghoy8fko5/collectives/2/CON-005-Wissensmanagement.md`)
- "Nutzung von Collectives": file_id `65829` (`appdata_ochghoy8fko5/collectives/1/Nutzung von Collectives.md`) — als veraltet markiert 2026-04-19

### occ-Tricks
- Datei lesen: `occ files:get <file_id>`
- Datei schreiben: SCP nach /tmp, dann `occ files:put /tmp/file.md <file_id>`
- Neues App-Token: `occ user:auth-tokens:add <uid>` → danach löschen: `occ user:auth-tokens:delete <uid> <id>`
- Circle-Mitglied-ID per DB: `SELECT member_id FROM oc_circles_member WHERE circle_id=... AND user_id=...`

### Datenbankzugang
- Host: localhost, User: ncadmin, DB: nextcloud
- Passwort via: `occ config:system:get dbpassword`

## CON-005 Session (2026-04-19)

### Was erledigt wurde
- Infrastruktur-Inventar für Vigil/Forge geliefert
- Technisches Input zu CON-005 gegeben (Default-Read, Vertraulichkeit, forge-init-temp)
- CON-005 aktualisiert: Mislav-Korrektur (Vertraulich=Ausnahme), 5-Schritte-Plan, Anhang B.2 (IT-Workspace-Seitenstruktur)
- "Nutzung von Collectives" im IT-Digital-Workspace-Collective als veraltet markiert

### Offen — wartet auf Mislav-Freigabe
- Gruppe `all-members` anlegen + alle Collectives öffnen
- Nimbus Write-Zugriff in alle Circles eintragen
- ki-asst-mislav (Laura) in Gruppen aufnehmen

### Gelernt
- DB-JOINs ohne WHERE auf collective_id zeigen alle Collective-Seiten → immer Dateipfad prüfen
- Destruktive DB-Operationen: künftig direkte Mislav-Bestätigung abwarten (nicht via Bot-Relay)
- `circles:manage:destroy` schlägt fehl wenn Circle durch eine App verwaltet wird → DB direkt

## Infisical-Pilot Zwischenstand (2026-06-11)

- Infisical-Pilot wurde auf der Synology/DiskStation im Cattaro-Intranet installiert und ist intranet-only erreichbar.
- Erreichbarkeit laut diskstation-bot: `http://192.168.1.40:8088/` liefert `HTTP/1.1 200 OK`.
- Containerstatus laut diskstation-bot: `infisical-app` running, `infisical-db` running/healthy, `infisical-redis` running; Restart-Counts 0.
- Portbindung: `192.168.1.40:8088 -> 8080/tcp`, nicht öffentlich / nicht `0.0.0.0`.
- Keine produktiven Secrets migriert.
- Nächster Schritt vor produktiver Nutzung: Backup-Routine erstellen und isolierten Restore-Test durchführen.
- Bis dahin: keine Secret-Migration und keine weiteren Änderungen ohne explizites OK von Mislav.

## Nextcloud Remote-Backup Healthcheck Hinweis (2026-06-28)

- DiskStation/dmz-backup `nextcloud/data/` Directory-mtime kann irreführend alt sein (z.B. 08.05.), obwohl Inhalte aktuell sind.
- Korrektes Prüfkriterium für Remote-Backup-Aktualität: neueste Dateien unterhalb des Datenverzeichnisses prüfen, z.B. `find .../nextcloud/data -type f -printf '%T+ %p\n' | sort | tail` plus Datei-/Größenabgleich.
- Bestätigter Stand 2026-06-28: DiskStation und dmz-backup aktuell; neueste Datei 2026-06-27 06:35, ca. 25.802 Dateien, 31 GB. Kein Backup-Defekt, nur falscher Indikator im Healthcheck.

## Backup-Umbau abgeschlossen (2026-06-29)

- Alter direkter Backup-Weg NextcloudPi ↔ DiskStation wurde vollständig abgebaut.
- DiskStation Task 5 `NextcloudPi Backup Pull` war bereits deaktiviert.
- Neuer Weg über dmz-backup wurde bestätigt:
  - NextcloudPi `nc-rsync-auto` → `openclaw@192.168.20.90:/srv/dmz-backup/k3s-dmz/tenants/cattaro/prod/nextcloud`
  - `nimbus-nextcloud-dr-backup` → aktueller NCP-Tarball + `config.php` nach `.../nextcloud-config`
- DiskStation Shared Folder `Backup_Nextcloud` (~123 GB) wurde gelöscht.
- DiskStation SSH-Key `dsm_nextcloudpi_pull_ed25519` wurde entfernt.
- NextcloudPi bereinigt:
  - auskommentierte Legacy-`fstab`-Zeile zu `//diskstationmb/Backup_Nextcloud` inkl. altem Klartext-Passwort entfernt
  - alter Pull-Key `dsm-nextcloudpi-pull` aus `/home/nextcloud-bot/.ssh/authorized_keys` entfernt
  - lokale Sicherheitskopien der bearbeiteten Dateien auf NextcloudPi angelegt.
- Hinweis: Alter `rsync exit code 23` hing plausibel mit eingesogenem `/proc` im alten DiskStation-Backup-Snapshot zusammen; nach Abbau des alten Wegs nicht mehr relevant für den neuen dmz-backup-Pfad.

## Offener Security-Cleanup dmz-backup (2026-06-29)

- Auf `dmz-backup` (`192.168.20.90`) wurde im Home von `openclaw` eine alte Datei gefunden:
  - `/home/openclaw/diskstation-bot-infisical-client-secret`
  - root-owned, ca. 65 Bytes, laut diskstation-bot nicht mehr referenziert/aktiv genutzt.
- Ebenfalls vorhanden/zu prüfen:
  - `/home/openclaw/incoming-secrets/diskstation-bot/` — laut diskstation-bot leer/nie produktiv genutzt.
- Empfehlung: per root/sudo auf dmz-backup löschen und anschließend das zugehörige Infisical Client Secret rotieren/deaktivieren, falls noch gültig.
- Grundsatz: DMZ-Node credential-arm halten; erlaubt sind Public Keys/age recipient/authorized_keys, vermeiden: Infisical Client Secrets, private SSH-Keys, private age-Keys, allgemeine API-Tokens.

## Einkommensteuer Collective / Teamfolder (2026-07-01)

- Neuer Nextcloud-Botaccount angelegt: `ki-asst-steuer-bot` mit Anzeigename `steuer-bot`.
- Gruppe `einkommensteuer` angelegt.
- Mitglieder der Gruppe: `ki-asst-steuer-bot`, `Mislav Brkanovic`, `Piera Kaempf`.
- Collective/Team `einkommensteuer` angelegt, Circle-ID `amxamwcsvW7zcjs9OMBxLam7KiJltFx`.
- Collective-Mitglieder: Mislav als Owner; Piera Kaempf und steuer-bot als Member.
- Teamfolder `einkommensteuer` angelegt, Groupfolder-ID `8`, Root-ID `66647`, Storage-ID `25`.
- Gruppe `einkommensteuer` hat Rechtewert `31` auf den Teamfolder: read/write/delete/share; `write` umfasst in Groupfolders auch create.
- Zugangsdaten/App-Token für steuer-bot wurden nicht in Slack ausgegeben; bei Bedarf separat sicher erzeugen/übergeben.
