Eigener Forgejo auf jeder Iris-Installation (Git-Server) #112
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#112
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?
Jede Iris-Installation bringt standardmäßig einen eigenen, kleinen Forgejo (Git-Server) mit. Er löst das Henne-Ei-Problem des Vault-Syncs (iris/Iris#76: „Woher kommt der Forgejo bei einer Neuinstallation?“) und ist später der Test-Forgejo für das Plugin iris-dev. Ergebnis einer Grill-me-Runde am 2026-10-20; Entwurf und Hintergrund: Plan
VAULT-SYNC.md§7a.Grundidee und Rollen
brew install forgejo) als Hintergrunddienst (launchd), ohne Docker; Linux als weiterer Compose-Dienstforgejo(indocker-compose.ymlund der Deploy-Vorlage).iris-vaultan und veröffentlicht das Vault, ohne dass der Nutzer etwas eintippt.Zugang und Sicherheit
Application Support/Iris/forgejo-admin.json, kein Schlüsselbund – keine automatisierten Schlüsselbund-Aufrufe; Linux: verschlüsselter Secret-Store). „Zugangsdaten anzeigen“ gibt es nur auf Knopfdruck, nie automatisch. (Abweichung: eine einmalige Anzeige bei der Einrichtung gibt es nicht.)127.0.0.1(http://127.0.0.1:3300). Ein Schalter „Für andere Rechner freigeben“ stellt den Forgejo um auf HTTPS, alle Schnittstellen und die Adressehttps://<rechnername>.local:3300und zieht die Adresse des Vault-Remotes mit (gemessen: Forgejo schreibt die ROOT_URL fest in die LFS-Links, darum muss die Adresse zum erreichbaren Namen passen; Entscheidung des Nutzers „Umschalten + Adresse mitziehen“). Linux: Freigabe nur von Hand (Compose-Port), Route antwortet409 sharing_unsupported.http.<adresse>.sslCAInfo).Oberfläche (erster Wurf: Iris und IrisClient, iOS später)
/forgejo/*(Bearer, auf beiden Servern gleich): Status, Freigabe an/aus, Zugangsdaten, verbundene Rechner, Widerruf, Einrichtung.Betrieb
~/Library/Application Support/Iris/forgejo, Linux<IRIS_DOCKER_DIR>/data/forgejo. Vor dem Veröffentlichen prüft Iris den freien Platz gegen die Vault-Größe und warnt klar. In den Einstellungen verschiebbar (Mac: der Standardordner wird ein Verweis auf den neuen Ort; Linux: Compose-Volume).forgejo(Datenbank, Repositories, LFS) ist ausgeschlossen – er enthielte das Vault ein zweites Mal; im Backup bleiben Zugangsdaten, Iris-CA, gemerkte CAs und der Marker „Vault liegt auf dem eigenen Git-Server“. Nach einer Wiederherstellung baut Iris den Git-Server neu auf und veröffentlicht das Vault neu; Zugänge anderer Rechner sind danach widerrufen. (Abweichung: Datenbank mit Konten/Tokens und andere Repositories werden nicht gesichert.) Linux: Daten des Git-Servers sind nie Teil der Backup-Einheiten.GET /api/v1/versionund lehnt Versionen unter einer Mindestversion mit klarer Meldung ab.iris-vaultpro Rechner.Tests
Ein echter Wegwerf-Forgejo für Integrationstests (leerer Datenordner, eigener Port; Linux/Dev-Host: Docker-Container, Mac: das Homebrew-Binary mit temporärem Verzeichnis): Ersteinrichtung (Admin, Repository, Token), Anmeldung mit Passwort und Zwei-Faktor, Token-Rechte, Klon und Push mit LFS, Widerruf, 404 bei fehlendem Anhang. Die bestehenden Attrappen-Tests bleiben für den schnellen Lauf. Das schließt die Lücke „Token-Erzeugung mit Passwort, Zwei-Faktor-Header (
X-GITEA-OTP) und Token-Rechte nie gegen einen echten Forgejo gesehen“ aus #76.Meilensteine (in dieser Reihenfolge, jeweils lauffähig und getestet)
M1 Linux-Kern: Compose-Dienst, automatische Ersteinrichtung (Admin, Repository, Token), Wire-Routen, Integrationstest gegen echten Wegwerf-Forgejo auf dem Dev-Host
M2 Mac:
brew install forgejoim Onboarding bei den Abhängigkeiten, Hintergrunddienst (launchd), Ersteinrichtung, Vault-Weg „Dieser Rechner“ (inkl. Platzprüfung)M3 Freigabe und Verbinden: Schalter „Für andere Rechner freigeben“, Iris-CA-Zertifikat, Fingerabdruck-Bestätigung, ein zweiter Rechner verbindet sich (Karte „Anderer Forgejo“ mit Mindestversion-Prüfung)
M4 Verwaltung: Einstellungen „Git-Server“ (Status, Zugangsdaten, Verbundene Rechner, Widerruf), eingebettete Web-View mit Auto-Anmeldung
M5 Backup und Bestand: Backup ohne Vault-Repository (inkl. Neuveröffentlichen nach Wiederherstellung), Hinweis für Mac-Bestandsinstallationen, Linux-Update
Datenort verschieben (Mac)
Offen (Stand 2026-10-20; Einzelheiten im Plan
VAULT-SYNC.md§7a „Offene Punkte zum Git-Server“).local, Klon über HTTPS), echte Wiederherstellung aus einem Backup-Zip, „Iris-Server aktualisieren“ auf einem Bestandsserver, Datenort auf eine externe Platte mit großem Bestand, Zwei-Faktor (X-GITEA-OTP), Forgejo-Major-Update perbrew upgrade.git lfs push --allwartet auf Okay); Testmaschinemac-vmnoch nicht neu verbunden.Bewusst ausgeklammert
iOS-Verwaltung (später), Verbindungscode oder Liste gekoppelter Iris-Server (später als Komfort denkbar), Forgejo-Verbund mit gegenseitigen Mirrors, GitHub/GitLab als Ziel, alles was iris-dev vom Forgejo braucht (mehrere Konten, Organisationen).
Abnahmekriterien
Verwandt
iris/Iris#76 (Vault-Synchronisation), Plan
VAULT-SYNC.md§7a, Plugin iris-dev (später).PR #62 gemergt: feat(forgejo): eigener Git-Server im Linux-Server, Einrichtung und Routen /forgejo/* (iris/Iris#112)
iris/iris-linux-server#62
Commits:
PR #88 gemergt: docs(wire): Eigener Git-Server /forgejo/* (iris/Iris#112)
alf/2ndbrain#88
Commits:
M1 (Linux-Kern) fertig – PR iris/iris-linux-server#62, Wire-Doku im Root-Repo.
Befund/Änderung: Compose-Dienst
forgejo(Imagecodeberg.org/forgejo/forgejo:16, kein Host-Port);app/forgejo_service.pyrichtet beim Start Administratoriris-admin(Zufallspasswort im Secret-Store) und privates Repositoryiris-vaultein, idempotent und selbstheilend. RoutenGET /forgejo/status,POST /forgejo/setup,GET /forgejo/credentials,POST /forgejo/publish-vault.vault_forge.loginkennttoken_nameund erkennt einen Forgejo mit REQUIRE_SIGNIN_VIEW (403 auf/api/v1/version).Geprüft: 11 Unit-Tests (Attrappe) + 3 Integrationstests gegen einen echten Wegwerf-Forgejo 16.0.6 (Einrichtung, Passwort-Selbstheilung, Token per Passwort, Veröffentlichen mit LFS-Anhang, Klon durch Peer mit identischem Anhang); Sync-Suite (66) grün. Damit ist auch Token-Erzeugung per Basic-Auth und LFS-Batch gegen echten Forgejo belegt.
Grenzen/offen: nicht auf dem Dev-Host deployt (Platte 95 %, neuer Dienst startet beim nächsten
up -d --build); Zwei-Faktor-Header weiter ungeprüft; Mac-Gegenstück (Swift-VaultForge-Versionscheck, Homebrew/launchd) = M2.PR #63 gemergt: fix(forgejo): eindeutiger Token-Name je Veröffentlichen (iris/Iris#112)
iris/iris-linux-server#63
Commits:
PR #89 gemergt: docs(wire): Mac-Server bietet /forgejo/* (iris/Iris#112)
alf/2ndbrain#89
Commits:
PR #28 gemergt: feat(vault-sync): Karten „Dieser Rechner“ / „Anderer Forgejo“ im Sheet Vault verbinden (iris/Iris#112)
iris/2ndbrain-ios#28
Commits:
PR #113 gemergt: feat(forgejo): eigener Git-Server auf dem Mac, Routen /forgejo/*, Onboarding und Karte „Dieser Rechner“ (iris/Iris#112)
#113
Commits:
M2 (Mac) fertig – PR iris/Iris#113 (Mac), IrisRemote-PR (iOS), Wire-Doku Root-Repo; Folgefix iris-linux-server#63.
Gebaut:
ForgejoCore.swift(app.ini nur 127.0.0.1, Port ab 3300, launchd-Agentcom.alflewerken.iris.forgejomit KeepAlive, Administratoriris-admin+ privates Repositoryiris-vault, Zugangsdaten inApplication Support/Iris/forgejo-admin.json0600 – bewusst kein Schlüsselbund),ForgejoController.swift, Routen/forgejo/{status,setup,credentials,publish-vault}im Mac-Server (Wire wie Linux), Start beim App-Start vor der Sync-Erkennung, Onboarding: Forgejo als Pflicht-Abhängigkeit (brew install forgejo, danach Einrichtung). Sheet „Vault verbinden“ beginnt mit den Karten „Dieser Rechner“ / „Anderer Forgejo" (Iris, IrisClient, IrisRemote). Swift-VaultForge.loginerkennt Forgejo mit Pflicht-Anmeldung (Fix des alten Versionschecks) und nimmt einen Token-Namen.Befunde: Das Homebrew-Binary (Forgejo 17.0.0) liest keine
FORGEJO__…-Variablen – alles steht in derapp.ini. Forgejo lehnt doppelte Token-Namen ab: ein zweites „Bereitstellen“ scheiterte (Linux und Mac); Name trägt jetzt Zeitpunkt + Zufallsanhang, Regressionstests in beiden.Geprüft:
scripts/test-forgejo-core.shmit echtem Forgejo 17 (45 Prüfungen: Einrichtung, Idempotenz, Passwort-Selbstheilung, launchd laden/entfernen, Veröffentlichen mit LFS-Anhang, Klon mit echtem Anhang, Wiederholung); Linux 14 Tests (davon 3 gegen echten Forgejo), Linux-Dev-Host aktualisiert; Iris, IrisClient, IrisRemote bauen.Grenzen/offen: Oberfläche und Onboarding auf frischer Maschine nie bedient; Platzprüfung vor „Dieser Rechner“ und Datenort verschieben noch nicht gebaut;
startIfConfiguredinstalliert nichts (Bestand → M5). Nächste: M3 (Freigabe für andere Rechner, HTTPS mit Iris-CA, Verbinden).PR #64 gemergt: feat(forgejo): Vertrauen in die Iris-CA per Fingerabdruck, /forgejo/sharing (iris/Iris#112)
iris/iris-linux-server#64
Commits:
PR #90 gemergt: docs(wire): Freigabe und Vertrauen per Fingerabdruck (iris/Iris#112)
alf/2ndbrain#90
Commits:
PR #29 gemergt: feat(vault-sync): Fingerabdruck-Bestätigung für Server mit eigener Iris-CA (iris/Iris#112)
iris/2ndbrain-ios#29
Commits:
PR #114 gemergt: feat(forgejo): Freigabe, HTTPS mit Iris-CA und Vertrauen per Fingerabdruck (iris/Iris#112)
#114
Commits:
M3 (Freigabe, HTTPS mit Iris-CA, Verbinden) fertig – Server-Seite; Oberfläche folgt mit M4.
Entscheidung nach Messung: Forgejo schreibt die ROOT_URL fest in die LFS-Links der Anhänge (per Probelauf bestätigt, unabhängig vom Host-Header). „Immer HTTPS unter Rechnername, nur Schnittstelle umschalten“ geht daher nicht (der eigene Rechner erreicht seinen Namen nicht, solange nur loopback lauscht). Mit dem Nutzer entschieden: Umschalten + Adresse mitziehen. Ungeteilt
http://127.0.0.1:3300; „Freigeben“ → HTTPS, alle Schnittstellen,<rechnername>.local:3300; die Adresse des Vault-Remotes und der Token-Geltungsbereich ziehen automatisch mit, Zurückschalten ebenso.Gebaut:
ForgejoTLS.swift(Iris-CA EC P-256, Serverzertifikat mit SAN, Kette = Zertifikat + CA, Fingerabdruck SHA-256, gemerkte CAs je Adresse, URLSession-Delegate),ForgejoCore.setSharing,VaultSyncSetup.moveRemote,POST /forgejo/sharing,statusmitshared/ca_fingerprint;forge/loginmittrust_fingerprintund Fehleruntrusted_certificate(Mac, Linux-Server); git/git-lfs bekommen die bestätigte CA nur für diese Adresse (http.<adresse>.sslCAInfo); Fingerabdruck-Bestätigung im Sheet „Anderer Forgejo“ (Iris, IrisClient, IrisRemote). Linux-Server:409 sharing_unsupported(Container kann seinen Port nicht selbst veröffentlichen).Geprüft:
test-forgejo-core.shgegen echten Forgejo 17: 67 Prüfungen (Freigabe an/aus, HTTPS, falscher/richtiger Fingerabdruck, Klon mit LFS-Anhang über HTTPS, Vault-Adresse umgezogen); Pythontest_forgejo_tls.pymit eigenem HTTPS-Server + CA; Sync-Suiten grün; alle drei Apps bauen. Falle: Python 3.13+ verlangt AKI/SKI in der Kette.Offen: kein Schalter und keine Fingerabdruck-Anzeige in der Oberfläche (M4); echter Zweirechner-Test über das LAN; Linux-Freigabe nur per .env/Compose von Hand; Namensänderung des Rechners erneuert das Zertifikat nicht automatisch.
PR #65 gemergt: feat(forgejo): Verbundene Rechner auflisten und entziehen (iris/Iris#112)
iris/iris-linux-server#65
Commits:
PR #91 gemergt: docs(wire): Verbundene Rechner und Token-Namen (iris/Iris#112)
alf/2ndbrain#91
Commits:
PR #116 gemergt: feat(forgejo): Einstellungen Git-Server, verbundene Rechner, Weboberfläche (iris/Iris#112)
#116
Commits:
M4 (Verwaltung + Weboberfläche) fertig – Server und Oberfläche gebaut, Oberfläche nicht bedient.
Gebaut: Einstellungen → „Git-Server …" (Iris und IrisClient): Status, Schalter „Für andere Rechner freigeben" mit Fingerabdruck, „Zugangsdaten anzeigen" nur auf Knopfdruck, „Verbundene Rechner" mit „Zugang entziehen". Routen
GET /forgejo/tokens,DELETE /forgejo/tokens/{id}auf Mac und Linux (nur Token „Iris Vault…"; das eigene Token ist geschützt: 409own_token). Token-Namen tragen den Rechnernamen („Iris Vault-Sync – ()"). Weboberfläche im eigenen Fenster (WKWebView, nicht persistenter Datenspeicher, Iris füllt das Anmeldeformular selbst aus, Zertifikat der Iris-CA wird geprüft).Geprüft: Mac
test-forgejo-core.sh72 Prüfungen gegen echten Forgejo 17 (Zugang eines anderen Rechners sichtbar/entziehbar, eigener geschützt); Linux Attrappe + echter Forgejo; Iris und IrisClient bauen.Grenzen: Weboberfläche nur, wenn der Client auf demselben Rechner wie der Server läuft (ungeteilt ist Forgejo nur über 127.0.0.1 erreichbar); iOS-Verwaltung ausgeklammert; Installation per Knopf (M5); keine Oberfläche bedient.
Nächste: M5 (Backup ohne Vault-Repository, Bestand: Linux automatisch beim Server-Update, Mac einmaliger Hinweis „Jetzt einrichten?", Datenort/Platzprüfung).
PR #66 gemergt: fix(docker): git safe.directory fuer das Vault im Container (iris/Iris#112)
iris/iris-linux-server#66
Commits:
Echter Durchlauf auf dem Linux-Dev-Server (kleiner Bestand statt Studio-Vault):
publish_vaultmit dem Dev-Vault (257 MB, 339 LFS-Anhänge) gegen den mitgelieferten Forgejo.Fund: erst scheiterte es mit „detected dubious ownership in repository at '/vault'" (Server läuft als root, Vault gehört dem Host-Nutzer). Fix:
git config --system safe.directory '*'im Dockerfile (iris-linux-server).Ergebnis danach:
published, Sync-Statussynced, ein zweiter Klon im Container liefert alle 339 Anhänge, geprüfter Anhang bytegleich (SHA-256). Das Studio-Vault wurde nicht angefasst.PR #67 gemergt: feat(forgejo): Bestand und Platzpruefung auf dem Linux-Server (iris/Iris#112)
iris/iris-linux-server#67
Commits:
PR #92 gemergt: docs(wire): Platzpruefung, Backup und Installation des Git-Servers (iris/Iris#112)
alf/2ndbrain#92
Commits:
PR #30 gemergt: feat(vault-sync): Meldung bei zu wenig Platz fuer den Git-Server (iris/Iris#112)
iris/2ndbrain-ios#30
Commits:
PR #117 gemergt: feat(forgejo): Backup ohne Git-Server-Daten, Wiederherstellung, Platzpruefung, Installation (iris/Iris#112)
#117
Commits:
M5 (Backup, Bestand, Platzprüfung) fertig.
Backup/Wiederherstellung (Mac):
iris-app-dataschließt/forgejoaus (Datenbank, Repositories, LFS würden das Vault verdoppeln, bis 60 GB). Zugangsdaten, Iris-CA, gemerkte CAs und der Markerforgejo-vault.flagbleiben im Backup. Nach dem Zurücklesen bautrebuildAfterRestoreden Git-Server neu auf (Administrator mit dem gesicherten Passwort, leeresiris-vault) und veröffentlicht das Vault neu. Zugänge anderer Rechner sind danach widerrufen (sie verbinden sich neu). Linux: Daten des Git-Servers gehören nie zu den Backup-Einheiten – nichts zu ändern.Platzprüfung: vor „Dieser Rechner“ (Vault ohne .git × 1,1 + 1 GiB gegen freien Platz,
409 not_enough_space:<nötig>:<frei>, Klartext in allen Clients); entfällt, wenn das Vault schon ein Remote hat.Bestand: Linux – der Dienst
forgejokommt beim „Iris-Server aktualisieren“ persyncMissingComposeServices; der Server findet den Container über das Compose-Label (auf dem Dev-Host geprüft). Mac –POST /forgejo/install/ Knopf „Installieren und einrichten“ und einmaliger Hinweis „Eigenen Git-Server einrichten?“ 30 s nach dem Start (nur nach abgeschlossenem Onboarding).Geprüft: Mac
test-forgejo-core.sh80 Prüfungen gegen echten Forgejo 17 (Platzmangel, Wiederherstellung: Daten weg → Administrator/Repository neu, gleiche Zugangsdaten); Linux 13 Tests + Dev-Host; Iris, IrisClient, IrisRemote bauen. Gefundener Fehler:launchctl bootoutwartet nicht auf das Ende des Dienstes, direktesbootstrapscheitert → behoben.Nicht gebaut: Datenort verschieben (Konfiguration enthält absolute Pfade) – auf Wunsch. Nie bedient: Oberfläche, Hinweis-Dialog, echte Wiederherstellung aus einem Backup-Zip, Server-Update eines Bestandsservers. Issue bleibt offen (Abnahme durch den Nutzer).
PR #93 gemergt: docs(wire): Datenort des Git-Servers verschieben (iris/Iris#112)
alf/2ndbrain#93
Commits:
PR #118 gemergt: feat(forgejo): Datenort des Git-Servers verschieben (iris/Iris#112)
#118
Commits:
Datenort verschieben fertig (Mac). Der Standardordner
…/Iris/forgejowird nach dem Verschieben ein Verweis auf den neuen Ort; Konfiguration (absolute Pfade), launchd-Dienst und Backup bleiben unverändert. Ablauf: Platz am Ziel prüfen → Dienst anhalten → rsync → Umschalten → Dienst starten und prüfen → erst dann das Alte löschen; bei jedem Fehler Rollback. Auch „zurück an den Standardort". RoutePOST /forgejo/move-data, Abschnitt „Datenort" in Einstellungen → Git-Server (Ordnerwahl nur, wenn Iris und Server auf demselben Mac laufen). Linux: Volume in der Compose-Datei, nicht per Route.Geprüft:
test-forgejo-core.sh91 Prüfungen gegen echten Forgejo 17 (hinaus, Anmeldung am neuen Ort, unzulässiges/nicht leeres Ziel abgelehnt, zurück, Altdaten entfernt); Iris und IrisClient bauen. Nicht bedient: Oberfläche, echtes Verschieben auf eine externe Platte mit großem Bestand.PR #119 gemergt: fix(onboarding): nach Dieser Rechner mit leerem Vault geht es weiter statt zu haengen (iris/Iris#112)
#119
Commits:
PR #120 gemergt: fix(onboarding): erst das Vault, dann der Git-Server; Vault von Forgejo holen statt verbinden (iris/Iris#112)
#120
Commits:
PR #121 gemergt: fix(onboarding): Weiche mit vier Wegen, nach dem Vault-Schritt immer mit einem Forgejo verbunden (iris/Iris#112)
#121
Commits:
PR #68 gemergt: fix(deploy): Browser-Port je Instanz statt fest 8095, Server findet ihn ueber die Docker-API (iris/Iris#112)
iris/iris-linux-server#68
Commits:
PR #124 gemergt: fix(deploy): freier Host-Port fuer den Browser-Dienst beim Erstellen eines Linux-Servers (iris/Iris#112)
#124
Commits:
PR #69 gemergt: fix(hermes): venv-Aufbau von Skills mit langem Exec-Timeout statt 120 s (iris/Iris#112)
iris/iris-linux-server#69
Commits:
PR #125 gemergt: fix(vault-sync): Klon-Adresse aus der Anmeldung statt aus der clone_url des Forgejo (iris/Iris#112)
#125
Commits:
PR #71 gemergt: fix(vault-sync): Klon-Adresse aus der Anmeldung statt aus der clone_url des Forgejo (iris/Iris#112)
iris/iris-linux-server#71
Commits:
PR #126 gemergt: fix(forgejo): Freigabe nennt sich mit der IP, Adresse wird bei IP-Wechsel nachgezogen (iris/Iris#112)
#126
Commits:
PR #127 gemergt: fix(deploy): Server komplett loeschen auch mit root-eigenen Dateien aus Containern (iris/Iris#112)
#127
Commits:
PR #72 gemergt: fix(hermes): Seed-Kopie atomar mit Marker, halb befuellte Instanz wird repariert (iris/Iris#112)
iris/iris-linux-server#72
Commits:
PR #128 gemergt: fix(onboarding): Assistent fuer eine neue Verbindung ersetzt ein offen gebliebenes Fenster (iris/Iris#112)
#128
Commits:
PR #129 gemergt: fix(onboarding): geschlossenes Assistenten-Fenster wird freigegeben, kein unsichtbares Altfenster mehr (iris/Iris#112)
#129
Commits:
alf referenced this issue from iris/iris-linux-server2026-10-22 17:13:46 +00:00
PR #212 gemergt: fix(git-server): Fehlermeldung nach Aktion bleibt sichtbar, z. B. abgelehnte Freigabe (#112)
#212
Commits:
Stand: „Freigeben“ auf dem Linux-Server zeigte keine Rückmeldung
POST /forgejo/sharingantwortet auf dem Linux-Server absichtlich mit 409sharing_unsupported(Docker, kein veröffentlichter Port). Der Fehlertext wurde gesetzt, aber vomrefresh()direkt danach gelöscht, weilrun()die Meldung zu Beginn leert. Der Schalter sprang zurück, sonst passierte nichts.refresh()behält die Meldung der vorangegangenen Aktion (keepMessage). Das betrifft alle Aktionen der Git-Server-Einstellungen (Freigabe, Einrichten, Installieren, Datenort), nicht nur die Freigabe.http://forgejo:3300, kein Host-Port). Ob und wie das gebaut wird, ist noch nicht entschieden.PR #106 gemergt: feat(forgejo): Freigabe des Git-Servers auch auf dem Linux-Server (iris/Iris#112)
iris/iris-linux-server#106
Commits:
Stand (Linux-Server): „Für andere Rechner freigeben“ funktioniert jetzt auch auf dem Linux-Server
POST /forgejo/sharinglehnte auf Linux mit 409sharing_unsupportedab; der Forgejo lief ohne Host-Port nur im Docker-Netz.app/forgejo_sharing.py. Freigegeben lauscht derserver-Prozess auf Port 3300 (neu indocker-compose.ymlam Dienstserververöffentlicht), spricht HTTPS mit einem Zertifikat der Iris-CA dieses Servers (Kette mit CA, Fingerabdruck = CA) und leitet anforgejo:3300weiter.ROOT_URL/DOMAINschreibt der Server in dieapp.inides Forgejo und startet ihn neu (die beiden Umgebungsvariablen stehen nicht mehr in der Compose-Datei). Zustand inforgejo-sharing.json, Wiederaufnahme beim Serverstart, Rückfall bei Fehlern. Für die Anhang-Links der freigegebenen Adresse vertrautvault_git_syncder Iris-CA und meldet sich dort an (git-lfs wendetinsteadOfnicht an; gefunden beim Test). Fehlercodes:compose_outdated,port_in_use,host_required.test_forgejo_sharing.py(u. a. echte TLS-Weiterleitung, Kette, Rückfall, Neustart) plus die bestehenden Forgejo-/Sync-Tests grün (lokal). Live aufalf@iris-serverper rsync-Deploy: Freigabe ein → TLS auf 3300 mit Kette Git-Server + CA, Fingerabdruck stimmt,/api/healthzmit der CA; LFS-Push und -Klon (2 MB) vom Mac überhttps://192.168.178.153:3300mit gleichem Inhalt; LFS-Klon des Servers selbst über die freigegebene Adresse; Neustart des Servers nimmt die Weiterleitung wieder auf; Freigabe aus → Port zu,app.inizurück auf intern. Danach wieder ausgeschaltet.deployment/docker-compose.deploy.yml.template(hat Port 3300 nicht, mehrere Instanzen pro Host bräuchten je einen eigenen Port); Adresswechsel (DHCP) bei freigegebenem Server (Freigabe aus- und einschalten).cannot open '.git/FETCH_HEAD': Permission denied(Rechte im Vault-.git), unabhängig von der Freigabe; nicht angefasst.PR #213 gemergt: feat(git-server): Meldungen der Freigabe auf dem Linux-Server, Handbuch (#112)
#213
Commits:
Stand (App): Meldungen der Freigabe für den Linux-Server; Handbuch
compose_outdated,port_in_use,host_required;sharing_unsupportednicht mehr als Docker-Hinweis. Handbuchkapitel „Vault-Synchronisation“: Hinweis zur Compose-Datei und zum Adresswechsel statt „Linux kann nicht freigeben“. Server-Teil: iris-linux-server (eigener PR), Wire-Doku im Wurzel-Repo.PR #126 gemergt: docs(wire): Freigabe des Git-Servers auf dem Linux-Server (iris/Iris#112)
alf/2ndbrain#126
Commits:
PR #109 gemergt: fix(forgejo): fehlende Dateien der Freigabe nachgereicht (iris/Iris#112)
iris/iris-linux-server#109
Commits:
Nachtrag zu iris-linux-server#106: fehlende Dateien
-aeingereicht.app/forgejo_sharing.pyundtests/test_forgejo_sharing.pyfehlten im Repository, währendforgejo_routes.pyundforgejo_service.pydas Modul schon importierten. Ein Build ausmain(z. B. über die Registry) wäre beim Start mitImportErrorgescheitert. Der Dev-Host lief nicht betroffen, weil dort per rsync vom lokalen Stand deployt wurde.rsync -nzeigt keinen Unterschied zwischen lokalem Stand und iris-server.mainwurde nicht gestartet.