sultan token tenant update: Mandanten nachträglich ändern

Weitere Compose-Stacks eines Kunden sind der Regelfall; bisher ließen sich
Domains und Routenlimit nur per delete + neu anlegen (und damit ohne Knoten)
ändern. Die Änderung liegt bewusst nur auf dem Server: Ein Agent darf sich
keine Domains selbst freigeben.

- Domains und Features werden hinzugefügt/entfernt statt ersetzt; unbekannter
  Eintrag beim Entfernen ist ein Fehler, die letzte Domain bleibt
- Verlängerung in die Zukunft setzt expired auf active (der Ablauf-Job setzt
  das nie zurück); Quarantäne und Zahlungsverzug bleiben
- Wechsel auf kommerziell mit vergangenem valid_until verlangt --valid-until

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
brandClaude Opus 5.5 committed 2026-11-02 18:32:28 +01:00
1 parent dd93277750
commit c2d6dd694f
7 files changed
+413 -25

No files matched your search

+18 -2
View File
@@ -31,7 +31,24 @@ Aus dem Vertrag gehen diese Werte in den Mandanten:
| Vertragsende | `--valid-until JJJJ-MM-TT` | Default: heute + 1 Jahr. **Danach sehen Besucher die Landingpage „Hosting abgelaufen“.** |
| Zusatzfunktionen | `--features` | `custom_middleware`, `websockets`, `tcp_stream`. Ohne `custom_middleware` sind nur Standard-Middlewares erlaubt (Redirects, Pfad-Umschreibung, Header, Kompression). BasicAuth, Rate-Limit, IP-Allowlist usw. brauchen das Feature, sonst wird der Router mit Verstoß abgelehnt. `chain` und `errors` sind nie erlaubt. `tcp_stream` erlaubt TLS-Passthrough (Kunde mit eigener CA/TLS, z. B. tinyCA): nur `HostSNI` mit einzelnen Hosts aus den Domains, nur Port 443; ab Paywall oder bei Wartung ist die Route ganz weg (keine Hinweisseite möglich). |
**Achtung:** Vertragsende, Domains und Paket lassen sich bisher **nicht nachträglich ändern** (`tenant update` fehlt, siehe Lücken). Deshalb `--valid-until` und `--domains` beim Anlegen sorgfältig setzen.
Alle Werte außer der Kennung lassen sich später mit `tenant update` ändern (siehe unten).
### Mandant nachträglich ändern
```bash
sultan token tenant update --id k10042 --add-domains "zweitshop.de,www.zweitshop.de" # weiterer Stack des Kunden
sultan token tenant update --id k10042 --remove-domains alt-kunde.de # Routen darauf fallen weg
sultan token tenant update --id k10042 --max-routes 10
sultan token tenant update --id k10042 --valid-until 2028-12-31 # Vertrag verlängern
sultan token tenant update --id k10042 --tier pro --valid-until 2027-12-31 # von community auf pro
sultan token tenant update --id k10042 --add-features websockets --remove-features tcp_stream
```
- Nur Angegebenes ändert sich. Es wirkt ohne Neustart beim nächsten Refresh (bis zu 1 Minute); Knoten und Einladungen bleiben.
- **Verlängern:** Liegt das neue `--valid-until` in der Zukunft, wird der Status `expired` wieder `active`. Quarantäne und Zahlungsverzug bleiben bestehen.
- **Wechsel von `community` auf `pro`/`enterprise`:** Liegt das bisherige Datum in der Vergangenheit, verlangt der Befehl `--valid-until`, sonst wären die Seiten sofort abgelaufen.
- Die letzte Domain lässt sich nicht entfernen. Ein Tippfehler bei `--remove-domains` ist ein Fehler und ändert nichts.
- Ein verkürztes Limit wirkt alphabetisch: Überzählige Router werden verworfen.
## 2. Netzwerk mit dem Kunden klären
@@ -176,7 +193,6 @@ sultan token tenant delete --id k10042 # löscht Mandant, Knoten und offene
| Lücke | Folge | Notlösung |
|---|---|---|
| **`tenant update` fehlt** | Vertragsende, Domains, Paket, Routenlimit nicht änderbar | Keine saubere: `tenant delete` + neu anlegen löscht auch die Knoten (neue Einladungen nötig). Erste Priorität für den kommerziellen Betrieb. |
| pro = enterprise | kein technischer Unterschied | vertraglich regeln |
| Keine Admin-API | Zahlungsstatus nur per CLI | Skript über `docker compose exec` |
| Kommerzieller Betrieb nicht im Feld getestet | – | mit einem Testmandanten und kurzen Fristen (`--valid-until` in wenigen Tagen, `payment --overdue-since` in der Vergangenheit) durchspielen |