Eigener Forgejo: Admin-Zugangsdaten ins geteilte App-Support-Verzeichnis spiegeln #90
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/iris-linux-server#90
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
forgejo_service.ensure_setup()spiegelt zusätzlichforgejo-admin.json(Benutzer, Passwort, interne Adresse; Rechte 600, atomar, idempotent) in das geteilte App-Support-Verzeichnis (data/iris-app-support; inserverunter/home/iris/Library/Application Support/Iris, in beiden Hermes-Containern unter/root/Library/Application Support/Irisgemountet).Wofür: Plugin-Skripte, die in den Containern laufen (z. B.
iris-plugin-dev, iris/iris-plugins#224: eigener Forgejo als Default + Picker), kennen keinen Fernet-Secret-Store. Die Datei im geteilten Verzeichnis ist in Panel (Server-Container) und Hermes-Containern sichtbar — eine Quelle, kein Env-Plumbing pro Container, und kein Passwort in der Plugin-Konfigurationsdatei. Auf dem Mac schreibt die App dieselbe Datei (kein App-Änderung nötig).Warum nicht Umgebungsvariablen: Das Panel-Skript und der Agent (Hermes-/Sandbox-Container) bekämen beide eigenes Plumben; die Datei folgt
ensure_setup()und heilt sich selbst (z. B. nach einer Passwort-Reset-Zurücksetzung). Ein Schreibfehler bleibt eine Logzeile und bricht das Setup nicht.Panel-Skripte: Zugangsdaten des eigenen Forgejo als Umgebungsvariablento Eigener Forgejo: Admin-Zugangsdaten ins geteilte App-Support-Verzeichnis spiegelnPR #92 gemergt: feat(forgejo): Admin-Zugangsdaten als forgejo-admin.json ins geteilte App-Support-Verzeichnis spiegeln (#90)
#92
Commits:
Befund
Die Zugangsdaten des eigenen Forgejo lagen nur im Fernet-Secret-Store (Server-Prozess). Plugin-Skripte, die in den Containern laufen, kennen diesen nicht — auf dem Linux-Server hätte
iris-plugin-dev(iris/iris-plugins#224) weder im Panel noch im Hermes-Container den eigenen Forgejo erkennen können.Geändert
app/forgejo_service.py:ensure_setup()schreibt nach der Einrichtung (Admin + Repoiris-vault)forgejo-admin.json(Benutzer, Passwort, interneFORGEJO_URL) ins geteilte App-Support-Verzeichnis ($IRIS_APP_SUPPORToder~/Library/Application Support/Iris) — Rechte 600, atomar (.tmp→replace), idempotent (gleicher Inhalt = kein Schreibzugriff), einOSErrorbleibt eine Logzeile. Dasselbe Verzeichnis bind-mounted:server(/home/iris/...) und beide Hermes-Container (/root/...), dieselbedata/iris-app-support-Datenbank.tests/test_forgejo_service.py: neuer Test (Spiegelinhalt inkl. interner Adresse, 0600, Idempotenz, Aktualisierung nach Passwort-Reset).Geprüft
pytest tests/test_forgejo_service.pylokal: 14 passed (davon 1 neu; 120 s — die Laufzeit steckt im bereits bestehenden Unreachable-Test).data/iris-app-supporthängt inserver(Zeile 131),hermes(258),hermes-scheduled(349) und der Sandbox-Vorlage (379) — ein File erreicht beide Seiten; die App schreibt auf dem Mac in dasselbe Verzeichnis.server-Home/home/irisund Hermes-Home/root—Path.home()/Library/Application Support/Irislöst in beiden Containern auf den Mount (ohne Env-Var).Nicht geprüft
alf@iris-serverdeployet (das geschieht als nächster Schritt zusammen mit dem Plugin-Paket);docker compose up -d --buildund das Vorhandensein der Datei nach einem Neustart fehlen noch.iris-Users auf den Mount, falls der Host-Ordner anders geowned ist (das entrypoint-chowndecktdata/-Pfade;iris-app-supportist bereits in Betrieb, da die Plugin-Konfigurationsdateien dort landen).Grenzen / Offen
forgejo-admin.json0600) — bewusst: nur so finden es auch die Container. Beide unterdata/, nie im Image.ensure_setup()beim nächsten Serverstart den gesparten Wert zurücksetzt (bestehendes Verhalten des Secret-Stores).