Lebenszyklus von Nutzern und Mandanten
Diese Seite beschreibt, was in den zwei wichtigsten Lebenszyklen passiert und wann: bei den Personen in deiner Organisation und bei der Organisation selbst. Beide Lebenszyklen sorgen dafür, dass die Vernichtung nur dann unumkehrbar ist, wenn sie es sein muss (nach Ablauf der Aufbewahrungsfrist); jeder Schritt davor lässt sich rückgängig machen.
Lebenszyklus eines Nutzers
Ein Nutzer existiert in fremforge nur als Mitglied einer oder mehrerer Organisationen. Das Entfernen aus einer Organisation betrifft nur diesen Mandanten; das gesamte Konto wird erst deaktiviert, wenn der Nutzer aus seiner letzten Organisation entfernt wird.
Entfernen aus einer einzelnen Organisation
Du entfernst ein Mitglied aus deiner Organisation entweder von Hand (der Abschnitt zur Nutzerverwaltung unter Abrechnung listet jedes Mitglied mit seiner letzten Aktivität, unterstützt das Entfernen mehrerer Mitglieder auf einmal und bietet eine optionale automatische Bereinigung) oder per SCIM-Deprovisionierung aus deinem IdP. Das Verhalten ist in beiden Fällen dasselbe:
- Das Forgejo-Ereignis
org_member.removedwird ausgelöst. - fremforge berechnet
seats_in_useaus der aktuellen Mitgliederliste von Forgejo neu und erzeugt das Audit-Ereignistenant.seat.released. Der frei gewordene Nutzer steht sofort für deine nächste Einladung oder SSO-JIT-Anmeldung zur Verfügung. - Alle auf die Organisation beschränkten PATs, die der ausscheidende Nutzer für diesen Mandanten hat, werden widerrufen.
- War es seine letzte Organisation, greift der unten beschriebene Ablauf zur Deaktivierung verwaister Konten.
Dein vertragliches Nutzerlimit wird durch die Bereinigung nie gesenkt. seats_in_use sinkt; das Limit bleibt unverändert. Um das Limit zu senken, nutze die Seite Abrechnung (Senkungen der Nutzeranzahl gelten ab der nächsten Verlängerung; eine jährliche Vorauszahlung wird gemäß §4.7 der Nutzungsbedingungen nicht erstattet).
Automatische Bereinigung inaktiver Konten
Auf der Seite Mitglieder kann ein Owner eine Inaktivitätsschwelle festlegen (Standard: deaktiviert). Ist sie gesetzt, entfernt ein täglicher Job Mitglieder, deren Forgejo-last_login älter als die Schwelle ist. Owner, Operator-Konten und Bot-Konten werden nie automatisch entfernt; eine Untergrenze pro Mandant (Standard 30 Tage) verhindert, dass Mitglieder bei längerer Abwesenheit versehentlich entfernt werden. Der tägliche Job entfernt höchstens 50 Mitglieder pro Mandant und Tag, eine Sicherheitsbremse, damit eine falsch konfigurierte Richtlinie nicht in einem Durchlauf eine ganze Organisation leert.
Deaktivierung verwaister Konten (letzte Organisation)
Hat ein Nutzer nach dem oben beschriebenen Entfernen über alle Mandanten hinweg keine Mitgliedschaft in einer Organisation mehr, macht fremforge automatisch Folgendes:
- Setzt
prohibit_login=truefür den Forgejo-Nutzer (keine Anmeldung mehr per SSO oder lokalen Zugangsdaten). - Widerruft alle Forgejo-PATs dieses Nutzers, überall.
- Archiviert alle Repositorys im persönlichen Namensraum des Nutzers, löscht sie aber NICHT. Das Archiv bewahrt die Historie; der Kunde kann sie wiederherstellen, indem er den Nutzer erneut einlädt, bevor die 14-tägige Frist bis zum endgültigen Löschen abläuft.
- Verzeichnet die Deaktivierung im Buch
orphaned_usersmitcleanup_due_at = today + 14 days.
Lädst du den Nutzer innerhalb der 14 Tage erneut in eine Organisation ein, wird er wiederhergestellt: prohibit_login wird aufgehoben, PATs lassen sich neu erstellen, und der Grabstein des verwaisten Kontos bekommt einen Stempel restored_at, sodass der Job für das endgültige Löschen ihn überspringt.
Endgültiges Löschen (verwaist + 14 Tage)
Ein täglicher Job löscht die Forgejo-Konten endgültig, die seit mehr als 14 Tagen als verwaist deaktiviert sind und in dieser Zeit nicht erneut eingeladen wurden. Mit 14 Tagen bleibt die gesamte Löschung, einschließlich der Speicherkopien, die nach einem Löschvorgang 7 Tage aufbewahrt werden, innerhalb der 30 Tage, die der Datenschutzhinweis §6 für Kontodaten zusagt. Der Forgejo-Aufruf DELETE /api/v1/admin/users/{u} entfernt das Nutzerkonto; die archivierten persönlichen Repositorys des Nutzers werden dabei mit entfernt. Das Audit-Log behält zur Nachverfolgbarkeit ein Ereignis forgejo.user.orphan_hard_deleted, das dem ursprünglich auslösenden Mandanten zugeordnet ist.
Nach dem endgültigen Löschen sind Benutzername und Kontohistorie weg. Über die 14 Tage hinaus gibt es keine Wiederherstellung; leg bei Bedarf einen neuen Nutzer aus deinem IdP an.
Lebenszyklus eines Mandanten
Ein Mandant durchläuft fünf Zustände. Die Zustandsmaschine läuft nur vorwärts, mit Ausnahme des Rückwegs cancellation_scheduled → active (Kündigung zurücknehmen) und suspended → active (Reaktivierung).
| Zustand | Auslöser | Bedeutung |
|---|---|---|
trial | Registrierung | Die ersten 30 Tage, keine Karte erforderlich. Der Job für abgelaufene Testphasen setzt den Mandanten auf suspended, wenn er bis trial_expires_at nicht umgestiegen ist. |
active | Bezahlter Plan beginnt | Normalbetrieb. |
suspended | Mahnverfahren über T+14 hinaus oder Testphase abgelaufen | Schreibzugriff ist pausiert; Lesen, Export und Reaktivierung funktionieren weiter. |
cancellation_scheduled | Kunde hat gekündigt | Der Dienst läuft bis cancel_effective_at weiter. Ein Rückgängigmachen führt jederzeit vor diesem Datum zurück zu active. |
cancelled | cancel_effective_at erreicht | Die Forgejo-Organisation wird schreibgeschützt. 90 Tage für Export und Reaktivierung. |
deleted | cancel_effective_at + 90d | Forgejo-Organisation und personenbezogene Daten endgültig vernichtet. Vernichtungsbescheinigung ausgestellt. |
Kündigung ausgelöst
Wenn du auf der Seite Abrechnung auf Abo kündigen klickst:
- Der Status wechselt zu
cancellation_scheduled, undcancel_effective_atwird gesetzt (monatlich: +30 Tage; jährlich: das Ende der vorausbezahlten Laufzeit; die Jahresgebühr wird gemäß §4.7 der Nutzungsbedingungen nicht erstattet). - Laufender Mehrverbrauch wird über die aktive Zahlungsmethode abgerechnet.
- Das SEPA-Mandat bei Mollie wird widerrufen, damit keine weiteren automatischen Abbuchungen erfolgen.
- Jeder Empfänger in
billing_emailsbekommt eine Bestätigungs-E-Mail. Die Abrechnungsseite zeigt jetzt ein Banner mit Countdown bis zum Ende des Lesezugriffs, eine Aufforderung zum Datenexport und eine Schaltfläche zum Rückgängigmachen.
Die Schaltfläche zum Rückgängigmachen steht bis cancel_effective_at zur Verfügung und danach während der 90 Tage mit Lesezugriff erneut als Schaltfläche zur Reaktivierung (eine neue Zahlungsmethode wird über den normalen Checkout eingerichtet).
Kündigung wirksam (+0 Tage)
Bei cancel_effective_at setzt der tägliche Job cancellation-effect den Status auf cancelled und archiviert jedes Repository der Forgejo-Organisation (schreibgeschützt). Die Organisation selbst bleibt bestehen, die Daten bleiben erhalten; der Schreibzugriff ist überall pausiert außer in der Abrechnung (für die Reaktivierung) und im Datenexport (für die Portabilität).
Endgültige Löschung (+90 Tage)
Neunzig Tage nachdem die Kündigung wirksam wurde, führt derselbe tägliche Job die physische Löschung durch. Die Löschung beachtet folgende Sperren, und jede einzelne verhindert die Bereinigung an diesem Tag:
legal_hold = truefür den Mandanten (eine vom Betreiber gesetzte Kennzeichnung für gerichtliche oder behördliche Aufbewahrungsanordnungen).- Ein Export-Job, der noch in der Warteschlange steht oder läuft.
- Eine laufende Zahlung (Mollie-Webhook-Status
open,pendingoderauthorized).
Sind alle Sperren aufgehoben, macht fremforge Folgendes:
- Erzeugt das Audit-Ereignis
tenant.physically_deleted(aufgezeichnet, solange der Mandantenbereich noch gültig ist, damit die Audit-Kette die Aktion erfasst). - Widerruft das Renovate-Bot-Konto des Mandanten und dessen PAT.
- Entfernt alle Webhook-Zustellungsjobs des Mandanten aus der Warteschlange.
- Löscht die Forgejo-Organisation: Repositorys, LFS-Objekte und den gesamten Zustand der Organisation.
- Löscht den Kundendatensatz bei Mollie.
- Löscht die personenbezogenen Daten des Mandanten (Anzeigename, E-Mail-Adresse des Abrechnungskontakts, Abrechnungs-E-Mails, Verweise auf Mollie und Dinero, USt-IdNr.) und markiert den Mandanten als gelöscht.
- Erzeugt die Vernichtungsbescheinigung als PDF (siehe unten) und archiviert sie in OBS im durch Legal Hold geschützten Bucket. Schickt die Bescheinigung an die hinterlegte Adresse des Abrechnungskontakts.
Vernichtungsbescheinigung
Ein einseitiges PDF, das bei der physischen Löschung erzeugt und an den Abrechnungskontakt geschickt wird. Es enthält:
- Slug, Anzeigename, USt-IdNr. und Kennung des Mandanten.
- Das Datum, an dem die Kündigung wirksam wurde, und das Datum der endgültigen Löschung.
- Die Kategorien vernichteter Daten (Forgejo-Inhalte, Mandantenkonfiguration, zugehörige Mitgliedskonten, Audit-Nutzdaten, personenbezogene Abrechnungsdaten).
- Die verbleibenden Ausnahmen von der Löschung, die weiterhin gelten (siehe unten).
- Einen SHA-256-Ankerhash, der die Bescheinigung zur gegenseitigen Prüfung mit dem Audit-Ereignis
tenant.physically_deletedverknüpft.
Brauchst du später eine neue Ausfertigung, liegt das Archiv in einem WORM-gesperrten OBS-Bucket. Schreib an compliance@frem.sh, dann stellen wir sie aus dem Archiv neu aus.
Aufbewahrungsfristen (AVV §9)
| Zeit ab Kündigung | Was passiert |
|---|---|
| +0 Tage (cancel_effective_at) | Status → cancelled. Forgejo-Organisation archiviert, schreibgeschützt. Export und Reaktivierung möglich. |
| +90 Tage | Status → deleted. Forgejo-Organisation physisch gelöscht; ihre Dateien (LFS, Anhänge, Pakete, Avatare) bleiben 7 weitere Tage als alte Versionen im Objektspeicher und sind nach etwa +102 Tagen weg, innerhalb der 30 Tage, die AVV §9 erlaubt. Personenbezogene Daten geleert. Kunde bei Mollie entfernt. Vernichtungsbescheinigung ausgestellt. In derselben Nacht werden die personenbezogenen Daten in den Audit-Ereignissen des Mandanten pseudonymisiert (Akteur und Nutzdaten gelöscht; die Hash-Kette bleibt prüfbar). Hält eine Löschsperre die Löschung zurück (ein laufender Export oder eine laufende Zahlung, Legal Hold) oder schlägt sie fehl, wird sie jede Nacht erneut versucht, und die Pseudonymisierung folgt in der Nacht, in der die Löschung abgeschlossen ist. |
| +150 Tage (bis 03.11.2026) | Bis zum 03.11.2026: Backups, die den Mandanten enthalten, werden bis +150 Tage bereinigt (AVV 1.39 §9). |
| bis zu +210 Tage (ab 03.11.2026) | Ab dem 03.11.2026 (AVV 1.41 §9): Backups werden nicht pro Mandant bearbeitet, gelöschte Daten bleiben also in den verschlüsselten Backups, bis diese ablaufen, bis zu 90 Tage nach der Löschung und spätestens nach +210 Tagen ab der Kündigung. |
Verbleibende Ausnahmen
Für manche Datenkategorien gelten gesetzliche Aufbewahrungspflichten, die über die primäre Löschung nach +90 Tagen hinausgehen. Sie sind in AVV §9 beschrieben und auf der Vernichtungsbescheinigung vermerkt:
- Buchhaltungsunterlagen (Rechnungen, Belegdateien): 5 Jahre aufbewahrt gemäß Bogføringsloven §10.
- Metadaten des Audit-Logs: 3 Jahre aufbewahrt, bei der Löschung pseudonymisiert (+90 Tage oder in der Nacht, in der eine verzögerte Löschung abgeschlossen ist); keine Repository-Inhalte, keine personenbezogenen Daten.
- WORM-gesperrte Compliance-Objekte (Anker der Audit-Kette, das PDF der Vernichtungsbescheinigung selbst): aufbewahrt, bis die Sperrfrist abläuft. Als Ausnahme in AVV Anhang §9 beschrieben.
Legal Hold
Betreiber können für einen Mandanten legal_hold = true setzen, wenn eine Aufbewahrungsanordnung vorliegt (Vorladung, DSGVO-Untersuchung, Rechtsstreit). Solange die Kennzeichnung gesetzt ist, überspringt der Job cancellation-effect den Mandanten vollständig: keine physische Löschung, kein Leeren personenbezogener Daten, keine Bereinigung der Backups. Die Kennzeichnung kann nur der Betreiber setzen; Kunden können sie nicht umschalten.
Der Hold setzt außerdem die Löschung jeder Klasse der Aufbewahrung von Nachweisen aus, solange die Organisation besteht: das Schwärzen von Audit-Nutzdaten, die Aufbewahrung des Zugriffslogs, behobene Befunde, SBOMs, Attestierungen, Exportaufzeichnungen und das Leeren der Befunde geschlossener Pull Requests (seit dem 08.10.2026; davor haben das Schwärzen von Audit-Nutzdaten und das Bereinigen von SBOMs den Hold nicht geprüft).
Häufige Fragen
Mein Nutzer wird als belegt angezeigt, obwohl das Mitglied gegangen ist. Die Mitgliederliste von Forgejo filtert Nutzer mit prohibit_login=true heraus, ein deaktivierter Nutzer ohne weitere Organisation zählt also nicht zu deinem seats_in_use. Wirkt deine Zahl veraltet, berechnet der nächtliche Job seat-cap-drift-check sie neu.
Bekomme ich Geld zurück, wenn ich das Nutzerlimit senke? Nein. Senkungen der Nutzeranzahl gelten ab dem nächsten Abrechnungszyklus (monatlich) oder der nächsten Jahresverlängerung (jährlich). Eine jährliche Vorauszahlung wird gemäß §4.7 der Nutzungsbedingungen nicht erstattet. Das Formular für das Nutzerlimit findest du unter Abrechnung.
Komme ich nach den 90 Tagen noch an meine Daten? Nein. Wenn du das liest, sind sie bereits weg (Forgejo-Organisation, Repositorys, LFS, Mitglieder, personenbezogene Daten). Kopien in den verschlüsselten Backups sind bis zum 03.11.2026 nach +150 Tagen weg; ab dem 03.11.2026 (AVV 1.41) laufen sie mit den Snapshots ab, spätestens nach +210 Tagen. Plane Exporte während des Zeitraums mit Lesezugriff; genau deshalb zeigt die Abrechnungsseite eine Aufforderung zum Export.
Erfolgt die Löschung nach Art. 17 DSGVO bei der Kündigung oder nach +90 Tagen? Nach +90 Tagen wird der primäre Speicher gelöscht. Die Backups folgen: Bis zum 03.11.2026 werden sie bis +150 Tage ab der Kündigung bereinigt; ab dem 03.11.2026 (AVV 1.41 §9) laufen gelöschte Daten mit den verschlüsselten Snapshots ab, bis zu 90 Tage nach der Löschung und spätestens nach +210 Tagen. Die Vernichtungsbescheinigung ist das Dokument, das du deiner Aufsichtsbehörde vorlegen kannst.
Was, wenn ich versehentlich kündige? Klick auf der Abrechnungsseite auf die Schaltfläche zum Rückgängigmachen; sie funktioniert während der gesamten Frist (bis cancel_effective_at). Danach hast du im Zeitraum mit Lesezugriff noch 90 Tage, um über den normalen Checkout zu reaktivieren. Nach +90 Tagen gibt es keine Wiederherstellung.