Vault-Sync: .git des Vaults gehört root, Fetch scheitert an FETCH_HEAD (Permission denied) #107
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#107
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?
Befund
Auf dem Dev-Host
alf@iris-serverschlägt die Vault-Synchronisation fehl, weil das.gitdes Vaultsrootgehört, der Server-Prozess aber alsirisläuft:Gemessen am 2026-10-28 im Container
iris-server:/vaultgehörtiris:iris,/vault/.gitgehörtroot:root(angelegt 2026-10-20 10:36)./vault/.gitgehören nichtiris;FETCH_HEADfehlt noch, git kann es nicht anlegen.iris(siehe Abschnitt „server läuft als non-root“ inlinux-server/CLAUDE.md).Vermutung (nicht belegt)
Das Repository wurde als
rootangelegt, etwa durch eingit initoder einen Commit perdocker execohne-u iris, oder durch einen älteren Server als root.docker-entrypoint.shchownt beim Start diedata/-Pfade, aber offenbar nicht das.gitim Vault. Wer es angelegt hat, ist nicht geklärt.Auswirkung
Fetch, Pull und Push des Vaults schlagen fehl;
sync_statebleibterror. Betrifft jedes Vault, dessen.gitnichtirisgehört, nicht nur den Dev-Host. Beim Test der Freigabe des Git-Servers (iris/Iris#112) aufgefallen; unabhängig davon.Zu klären
.gitdes Vaults mitchownen (selbstheilend wie beidata/), oder soll die Sync-Logik einen solchen Zustand erkennen und eine verständliche Meldung statt der git-Rohmeldung liefern?Der Dev-Host wurde nicht von Hand repariert (Regel: Zielsysteme nie von Hand patchen); der Fehler besteht dort weiter.
Zusammenhang: iris/Iris#76 (Vault-Synchronisation).
PR #108 gemergt: fix(entrypoint): .git des Vaults dem Server-Nutzer zuordnen, FETCH_HEAD-Fehler (#107)
#108
Commits:
Stand:
.gitdes Vaults wird beim Start dem Server-Nutzer zugeordnet/vault/.gitauf iris-server gehörteroot(3723 Einträge), der Server läuft alsiris; git konnteFETCH_HEADnicht anlegen.docker-entrypoint.shchownt beim Start alles unter/vault/.git, was nichtirisgehört (find … ! -user iris -exec chown). Ein sauberes Repository kostet nur den Verzeichnis-Walk; die Arbeitsdateien des Vaults bleiben unberührt (die bisherige Regel „befüllten Vault nie rekursiv anfassen“ gilt weiter,.gitgehört der Sync-Logik des Servers).alf@iris-serverper rsync +docker compose up -d --build: danach/vault/.gitiris:iris,find /vault/.git ! -user iriszählt 0;POST /vault/sync/pullmeldet den FETCH_HEAD-Fehler nicht mehr..git(viele LFS-Objekte) nicht gemessen.errormit „Zugangsdaten wurden abgelehnt“. Ursache: Das Vault hat ein Remote (http://forgejo:3300/iris-admin/iris-vault.git), aber der Server hat keine gespeicherten Zugangsdaten dafür (_load_credentials()liefert None; Vault enthält „Manuelle Änderung“ und einen lokalen Commit voraus). Das ist ein Konfigurationsstand von vor der Sync-Funktion, kein Codefehler; behoben wird er mit „Vault verbinden“ (Anmeldung am eigenen Git-Server) in der App. Nicht von Hand repariert.PR #110 gemergt: fix(entrypoint): vault-sync-credentials.json dem Server-Nutzer zuordnen, HTTP 500 beim Bereitstellen (#107)
#110
Commits:
Nachtrag: gleiche Fehlerklasse bei
vault-sync-credentials.json(HTTP 500 bei „Auf diesem Rechner bereitstellen“)PermissionError: [Errno 13] Permission denied: '/data/vault-sync-credentials.json'invault_git_sync.configure. Die Datei gehörteroot(Modus 600, angelegt 2026-10-20 10:34, zeitgleich mit dem root-eigenen.git)._load_credentials()fängt den Lesefehler ab und liefert None; deshalb meldete der Sync „Zugangsdaten wurden abgelehnt“, obwohl Zugangsdaten gespeichert waren (meine Annahme im Kommentar zu PR #108, es gäbe keine, war falsch).docker-entrypoint.shnimmtvault-sync-credentials.jsonin die Liste der beim Start dem Server-Nutzer zugeordneten Dateien auf.alf@iris-server: Datei danachiris:iris;GET /vault/sync/statusmeldetsynced,ahead 0(der Start-Sync hat den lokalen Commit hochgeladen),last_sync_atgesetzt./datasind nurbrowserundforgejo(gehören den anderen Containern, bewusst)._load_credentials()verschluckt und als „abgelehnt“ gemeldet; ob das eine eigene Meldung bekommen soll, ist nicht entschieden.