2
Home
l.kirchner edited this page 2026-06-13 14:37:04 +02:00
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 — Runner, Deploy, Logs, Healthz |
| nexus-db | nexus-db (10.11.20.67) |
DSN/Smokes: nexus-Wiki, Konfigwerte-Tabelle; Credentials: /root/nexus-db.credentials. Encoding UTF8 erzwungen + geprüft (Issue #8). Wartung: su - postgres -c "psql -d nexus" (kein sudo auf dem LXC) |
| 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 MUSSbuild.funcsourcen (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.
- DB-Installer: Locale vor der PostgreSQL-Installation aktiv machen, DB explizit mit
TEMPLATE template0 ENCODING 'UTF8' LC_COLLATE/LC_CTYPE 'en_US.UTF-8'anlegen und das Encoding nach dem Install verifizieren (Helferensure_utf8_locale_active/assert_db_encoding_utf8inlib/install.func). Postgres-Wartung persu - postgres -c …, nichtsudo(die minimalen LXCs haben kein sudo). - 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 2�0) 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. |
| 2026-06-13 | Encoding wird bei initdb eingefroren — eine kaputte Locale zur Installationszeit ist Datenbank-Schaden, kein Schönheitsfehler. nexus-db lief vor dem locale-Fix bei initdb unter LANG=C → SQL_ASCII-Cluster → psycopg3 liefert bytes → SQLAlchemy crasht (db: unreachable). → Locale aktiv vor dem PG-Install, DB explizit mit template0/ENCODING 'UTF8'/en_US.UTF-8 anlegen, Encoding nach Install prüfen und sonst abbrechen (Issue #8 / PR #9). |