Wiki: Home angelegt — Katalog mit Betriebs-Verweisen, Konventionen, Lessons

2026-06-12 14:59:19 +02:00
commit bc00b25654
+38
@@ -0,0 +1,38 @@
# proxmox-scripts — Wiki
Lebende Doku zum Skript-Repo. Verbindlich sind README + Code; hier stehen Betriebs-Hinweise, Konventionen und Lessons.
## Skript-Katalog & Betriebs-Hinweise
| App | LXC im Einsatz | Betriebs-Doku |
|---|---|---|
| devpi | devpi | `/root`-Notizen im LXC |
| webapp | (Pattern-Vorlage) | README im Repo |
| **nexus** | `nexus` (10.11.20.66) | [nexus-Wiki → Betrieb-und-Deploy](https://gitea.luki-net.org/l.kirchner/nexus-hub/wiki/Betrieb-und-Deploy) — Runner, Deploy, Logs, Healthz |
| **nexus-db** | `nexus-db` (10.11.20.67) | DSN/Smokes: nexus-Wiki, Konfigwerte-Tabelle; Credentials: `/root/nexus-db.credentials` |
| **authentik** | `authentik` (10.11.20.22, `auth.luki-net.org`) | Runbook + Blueprints: nexus-Wiki bzw. `nexus-hub/infra/authentik/`; Bootstrap-Token nach Einrichtung rotieren |
| runner | — (PR #6 in Review) | wird nach Anlage hier ergänzt (instanzweit, Label `homelab`) |
## Konventionen (Kurzfassung — Details im README)
- Zwei Dateien pro App (`ct/` + `install/`), beide sourcen die Shared-Libs per curl — **jedes ct-Script MUSS `build.func` sourcen** (CI-Check ab PR #5).
- Unprivilegierte LXCs, dedizierte App-User, Secrets nur in `0600`-Dateien auf dem Ziel-Host.
- sudoers-Regeln matchen **wortwörtlich inkl. Argumenten** — nur exakte Befehle mit sudo aufrufen.
- Runner-Trennung: repo-scoped mit Deploy-Rechten auf dem Produktions-LXC (`nexus`) vs. instanzweit ohne Privilegien (`homelab`). Nie vermischen.
- **Beiträge nur als PR mit Cross-Review** — keine Direkt-Pushes auf main.
## Lessons Learned
| Datum | Lesson |
|---|---|
| 2026-06-11 | `source build.func` vergessen → Script bricht mit „command not found". Zweimal passiert (nexus-db: im Review gefangen; authentik: in Produktion, weil Direkt-Commit ohne Review). → PR-Pflicht + CI-Source-Check (PR #5). |
| 2026-06-11 | Eingaben mit unsichtbaren Nicht-UTF-8-Bytes (VLAN `20`) brechen `pct create`. → Input-Validierung in build.func: sichtbar ablehnen statt still strippen (PR #5). |
| 2026-06-11 | Config-Syntax muss zur **gepinnten** Image-Version passen: vLLM v0.13 verlangt `--limit-mm-per-prompt` als JSON — Pinning allein schützt nicht. Smoke-Tests als Akzeptanzkriterium fangen das. |
| 2026-06-12 | Gruppenmitgliedschaften (z. B. docker) werden beim Prozessstart eingefroren — User **vor** dem Daemon-Start in Gruppen aufnehmen (in `runner`-Installer verbaut). |
| 2026-06-12 | Repo-scoped Runner bedienen keine anderen Repos — Runs hängen still in `queued`. Scope bei der Registrierung bewusst wählen; instanzweit = Site-Admin-Token. |
## Offene Punkte
- PR #5 (K-114): Input-Validierung, Mini-CI, SSH-Root-Login-Prompt, locale-Fix — CI wartet auf den `homelab`-Runner.
- PR #6: `ct/runner.sh` — Codex-Review ausstehend.
- Nach Runner-Anlage: Katalog-Zeile `runner` hier vervollständigen.