# Kündigung: Export, Archiv und Abbau — Entwurf

**Stand:** 2026-08-04
**Zustand:** Entwurf, vom Betreiber in den tragenden Punkten bestätigt. Der
Ablauf und die Archivfrist stehen; offen ist allein der technische Weg, wie der
Export die Maschine verlässt — siehe „Die eine harte Stelle".

## Worum es geht

Beim Kündigen verspricht CluPilot dem Kunden heute schriftlich einen fertigen
Datenexport. Im Code steht dazu `(both mocked for now)`. Es gibt **keinen
Export**, und es gab nie einen.

Und die zweite Hälfte: die virtuelle Maschine eines gekündigten Kunden wird
**nie abgebaut**. Sie läuft weiter, für immer, mit ihrem Speicher und ihrem
Platz auf dem Host — einem Platz, den der Betreiber nicht mehr verkaufen kann.

## Was heute schon richtig ist

Nicht alles fehlt. Am Laufzeitende zieht `EndInstanceService` die Adresse ein:
Traefik-Route weg, DNS-Eintrag weg, `status = 'ended'`. Das schliesst eine
echte Lücke (ein Hostname, der auf einen Gast zeigt, den der Host später an
jemand anderen vergibt) und bleibt unverändert.

Ebenso bleibt: **eine Kündigung endet nichts früher.** Wer am Zweiten kündigt,
hat bis zum Monatsende bezahlt und arbeitet bis dahin weiter. `hasEnded()` ist
die ganze Regel, und sie wird nicht angefasst.

## Der Ablauf

Vom Betreiber so entworfen:

### 1. Beim Kündigen wird gefragt

Der Kündigungsdialog stellt **eine** zusätzliche Frage: *Möchten Sie einen
Datenexport?*

Das ist der Angelpunkt des ganzen Entwurfs. Wer keinen braucht — weil er seine
Dateien längst synchronisiert hat, weil er zu einem anderen Anbieter zieht, der
selbst überträgt —, löst keine Arbeit aus und wartet auf nichts. Wer einen
braucht, sagt es zu dem Zeitpunkt, an dem er ohnehin über seine Daten
nachdenkt.

Die Antwort steht am Datensatz der Instanz. Sie lässt sich bis zum Laufzeitende
ändern: es ist dieselbe Frage, und ein Kunde, der es sich überlegt, soll nicht
anrufen müssen.

### 2. Bis zum Laufzeitende ändert sich nichts

Der Kunde arbeitet weiter. Keine Sperre, keine Einschränkung, keine
Erinnerungsmail, die wie eine Mahnung klingt.

**Eine Erinnerung sieben Tage vor Ende** gehört trotzdem hinein, und zwar aus
einem Grund, der leicht übersehen wird: **ab dem Laufzeitende kommt der Kunde
nicht mehr an seine Nextcloud.** Die Adresse ist dann eingezogen. Wer selbst
etwas herunterladen will, muss es **vorher** tun, und das weiss er nur, wenn es
ihm jemand sagt.

Die Erinnerung nennt das Datum, den Weg zum Selbst-Herunterladen, und ob ein
Export bestellt ist oder nicht — mit dem Knopf, das noch zu ändern.

### 3. Am Laufzeitende

Die Adresse geht (baut schon). Die Maschine **läuft weiter** — sie wird
gebraucht, für den Export und als Rückfahrkarte.

Danach trennt sich der Weg:

**Kein Export bestellt:** nichts weiter. Die Frist läuft.

**Export bestellt:** der Export wird erzeugt und auf dem Speicherserver
abgelegt. Ist er fertig, bekommt der Kunde eine Mail mit einem zeitlich
begrenzten Link.

### 4. Die Bestätigung, und was ohne sie gilt

Die Mail bittet den Kunden zu bestätigen, dass sein Export vollständig ist.
Sie sagt im selben Atemzug, **was ohne Bestätigung geschieht**: nach Ablauf der
Frist gilt der Export als angenommen, und die Maschine wird abgebaut.

Das ist die Entscheidung des Betreibers, und sie ist richtig herum: eine
Maschine, die auf eine Bestätigung wartet, die nie kommt, steht ewig. Aber sie
gilt nur, weil der Satz in der Mail steht — eine stillschweigende Zustimmung,
die niemandem angekündigt wurde, wäre keine.

### 5. Nach vierzehn Tagen

Vierzehn Tage nach dem Laufzeitende — oder früher, sobald der Kunde bestätigt
hat:

1. Die Maschine wird heruntergefahren.
2. Sie wird als Ganzes auf den Speicherserver archiviert.
3. Sie wird vom Host gelöscht. Der Platz ist wieder verkaufbar.

**Das Archiv ist das Sicherheitsnetz des Betreibers**, nicht das des Kunden. Er
kann daraus eine Maschine wiederherstellen. Der Kunde kann mit einem
Festplattenabbild nichts anfangen — dafür ist der Export da. Die beiden sind
keine Alternativen, sie beantworten verschiedene Fragen.

---

## Die eine harte Stelle

**Der Export passt nicht auf die Festplatte des Kunden.**

Aus dem Katalog:

| Paket | Kontingent | Platte | Luft |
|---|---|---|---|
| Start | 30 GB | 40 GB | 10 GB |
| Team | 85 GB | 100 GB | 15 GB |
| Business | 175 GB | 200 GB | 25 GB |

Ein Kunde, der sein Kontingent ausnutzt, hat **keinen Platz für ein Archiv
seiner eigenen Daten**. Der naheliegende Weg — im Gast ein `tar` bauen und es
danach abholen — scheitert genau bei den Kunden, bei denen es am meisten
zählt.

Dazu kommt: CluPilot erreicht einen Gast **nur über den Proxmox-Gastagenten**.
Der führt Befehle aus; er ist kein Weg, hundert Gigabyte herauszutragen.

### Drei Wege, und was sie kosten

**A — Vom Host aus, an der Maschine vorbei.** Die Platte des Gastes liegt als
Datenträger auf dem Proxmox-Host, und dorthin hat CluPilot eine SSH-Verbindung.
Die Platte wird auf dem Host schreibgeschützt eingehängt, das Datenverzeichnis
direkt auf den Speicherserver gepackt. **Kein Platz im Gast nötig, kein
Gastagent im Spiel.** Braucht Werkzeug auf dem Host (`qemu-nbd` oder
`libguestfs`), das dort noch nicht steht.

**B — Aus dem Archiv heraus.** Die Maschine wird ohnehin archiviert. Man
archiviert zuerst, holt die Dateien danach **auf dem Speicherserver** aus dem
Abbild und packt sie dort. Ein Vorgang trägt beide Zwecke. Braucht dafür einen
Speicherserver, der das Abbild öffnen kann — er wird damit vom Ablageort zum
Werkzeug.

**C — Kein Archiv von uns, nur ein Hinweis.** Der Kunde lädt vor dem
Laufzeitende selbst herunter; wir erinnern ihn zweimal und geben ihm den Weg.
Nichts zu bauen, kein Speicherbedarf. **Aber der Satz im Kündigungsdialog muss
geändert werden** — was dann versprochen wird, ist eine Frist und eine
Anleitung, kein fertiger Export.

**Gewählt: A.** Er ist der einzige, der ohne Umweg das liefert, was versprochen
wurde, und er belastet weder die Maschine des Kunden noch macht er den
Speicherserver zu etwas, das rechnen können muss. Der Preis ist ein Werkzeug auf
dem Host — und Hosts richtet dieses Produkt selbst ein, das ist ein Schritt in
der Übernahme, kein Handgriff des Betreibers.

### Und ein Loch in dieser Empfehlung, das erst beim Ausarbeiten auffiel

Die Maschine **läuft** zu dem Zeitpunkt noch. Sie muss laufen: sie ist die
Rückfahrkarte der vierzehn Tage.

Die Platte einer laufenden Maschine im Vorbeigehen einzuhängen und daraus zu
lesen, liefert aber **keinen verlässlichen Stand**. Ein Dateisystem, in das
gerade geschrieben wird, ist mitten im Lesen inkonsistent — man bekäme ein
Archiv, das aussieht wie eines und Dateien enthalten kann, die halb geschrieben
sind. Das wäre die schlimmste Sorte Attrappe: eine, die man erst bemerkt, wenn
jemand die Daten wirklich braucht.

Der Weg geht deshalb über eine **Momentaufnahme**: Proxmox kann eine Maschine im
Lauf einfrieren, wir lesen aus der Momentaufnahme, und danach fällt sie wieder
weg. Der Kunde merkt nichts, die Maschine läuft weiter, und der Stand im Archiv
ist ein Stand und kein Durchschnitt.

Das ist kein Zusatz, sondern die Bedingung dafür, dass Weg A überhaupt trägt.

---

## Was ein Export enthält

- **Die Dateien aller Benutzer**, in der Ordnerstruktur, die sie in ihrer Cloud
  gesehen haben. Das ist der Teil, den ein Mensch braucht und ohne uns öffnen
  kann.
- **Ein Abzug der Datenbank**, getrennt und als solcher benannt. Er trägt
  Kontakte, Kalender und Freigaben. Ein Mensch kann damit nichts anfangen — ein
  Anbieter, zu dem der Kunde zieht, sehr wohl. Ihn wegzulassen hiesse, genau
  die Daten zurückzuhalten, die eine Übertragung möglich machen.
- **Eine Liesmich-Datei**, die sagt, was die beiden Teile sind.

---

## Wie lange ein Archiv liegen bleibt: zwölf Monate

Vom Betreiber entschieden.

Das ist die Zahl, die über den Speicherbedarf entscheidet. Ein Business-Archiv
bringt bis zu 200 GB mit; archivierte man **jede** gekündigte Maschine und
löschte nie, wüchse dieser Speicher **unbegrenzt** — zehn Kündigungen sind zwei
Terabyte, die nie wieder kleiner werden, und in zwei Jahren zahlte der Betreiber
für Kunden, die es seit anderthalb Jahren nicht mehr gibt.

Zwölf Monate sind lang genug für jede Nachfrage, die realistisch kommt, und kurz
genug, dass der Speicher eine Grösse hat statt einer Richtung.

Die Frist wird **angekündigt**, in derselben Mail, in der die Bestätigung
erbeten wird. Ein Archiv, dessen Ende niemand genannt hat, ist für den Kunden
kein Archiv, sondern eine Hoffnung.

Und sie wird **eingehalten**: ein Zeitplan räumt ab, was älter ist. Eine Frist,
die nur in einer Mail steht und die niemand vollstreckt, ist genau die Attrappe,
gegen die dieses Projekt seine Regeln geschrieben hat — der Speicher wüchse
weiter, und niemand merkte es, bis die Rechnung kommt.

---

## Was der Speicherserver dreifach trägt

Dieselbe Box trägt drei Dinge, von denen zwei ohnehin gebraucht werden:

1. **Zweiter Sicherungsort** — das Modul, das heute **verkauft wird und nichts
   tut**. Von den dreien das dringlichste, weil dort bereits Geld fliesst.
2. Die VM-Archive.
3. Die Kunden-Exporte.

Für die Exporte ist der Bedarf klein: sie leben, bis der Kunde sie geholt hat.
Drei gleichzeitig kündigende Business-Kunden sind gut 500 GB. Der grosse
Posten sind die Archive, und dort entscheidet die Frist oben.

---

## Was nicht gebaut wird

- **Kein früheres Ende.** Eine Kündigung nimmt niemandem etwas weg, wofür er
  bezahlt hat.
- **Keine Wiederherstellung durch den Kunden.** Wer zurückwill, meldet sich;
  innerhalb der vierzehn Tage steht die Maschine noch. Ein Selbstbedienungsknopf
  dafür wäre ein eigenes Vorhaben.
- **Kein Export nach dem Abbau.** Danach gibt es das Archiv, und das öffnet der
  Betreiber.
