Ausgabe fuer Sub-Lizenzserver: kein Weg zur Rolle master

This commit is contained in:
alientim committed 2026-09-09 00:07:34 +02:00
1 parent fd333f60ff
commit 157a244900
9 files changed
+548 -124

No files matched your search

+23 -8
View File
@@ -4,6 +4,13 @@ Ausgabe und Verwaltung der Lizenzen für TESM: Kunde -> Ticket -> Lizenz,
Aktivierung online und offline, Kundenportal, Selbstbedienung, Versand über
MS Graph und eine Hierarchie aus Unter-Lizenzservern.
> **Diese Ausgabe ist für Sub-Lizenzserver.** Ein Sub-Lizenzserver bekommt
> seine eigene Lizenz von der Wurzelinstanz und stellt danach selbst
> Kundenlizenzen aus. Was er nicht kann: sich selbst die Rolle `master` geben --
> der Code dafür liegt nicht in diesem Paket, sondern nur in der Master-Ausgabe
> (privates Repository `tesm-license-master`). Das ist keine Einstellung, die
> sich umlegen lässt, sondern ein fehlendes Verzeichnis.
**Dieses Repository enthält genau das, was zum Installieren und Betreiben des
Lizenzservers gebraucht wird** -- nichts darüber hinaus:
@@ -21,6 +28,7 @@ Die verwaltete Anwendung liegt hier **nicht** mit drin.
| Wo sonst noch | |
|---|---|
| [alientim/tesm](https://gitea.int.eertmoed.net/alientim/tesm) | TESM selbst |
| [alientim/tesm-license-master](https://gitea.int.eertmoed.net/alientim/tesm-license-master) | Master-Ausgabe (privat): die Wurzelinstanz |
| [alientim/TESM-DEV](https://gitea.int.eertmoed.net/alientim/TESM-DEV) | Entwicklung: beide Anwendungen, Tests, Architekturdoku |
## Zweige
@@ -34,16 +42,24 @@ Die verwaltete Anwendung liegt hier **nicht** mit drin.
## Installation
Eine einzelne Datei genügt -- sie lädt das Release selbst:
```bash
sudo bash deploy/install.sh --app tesm-license --https --domain lizenz.firma.de
sudo -u tesm-license tesm-license-admin init-key
sudo -u tesm-license tesm-license-admin bootstrap
curl -fsSLO https://gitea.int.eertmoed.net/alientim/tesm-license/raw/branch/main/install.sh
sudo bash install.sh --app tesm-license --https --domain lizenz.firma.de
sudo -u tesm-license tesm-license-admin create-admin
```
**`init-key` erzeugt den Signaturschlüssel dieses Servers. Sichern Sie ihn
sofort.** Ohne ihn lässt sich keine ausgestellte Lizenz mehr erneuern, und
Kunden müssten einen Ausstellerwechsel bestätigen.
Aus einem entpackten Paket ist es derselbe Aufruf ohne `curl`.
Den **Signaturschlüssel** legt der Installer selbst an -- mit ihm signiert
dieser Server seine Kundenlizenzen. **Sichern Sie ihn sofort**
(`data/master_signing_key.json`): ohne ihn ist keine ausgestellte Lizenz mehr
prüfbar, und Kunden müssten einen Ausstellerwechsel bestätigen. Eine
Aktualisierung fasst ihn nie an.
Die **eigene Lizenz** dieses Servers kommt von der Wurzelinstanz: dort eine
Lizenz für diesen Server anfordern und unter "Eigene Lizenz" einspielen.
Zielzustand: **Port 443 mit TLS, Port 80 leitet dorthin um** -- ausser dem
ACME-Pfad, der erreichbar bleiben muss, sonst kann Let's Encrypt nie erneuern.
@@ -57,7 +73,7 @@ für nginx-Site, logrotate, Zertifikate und Sitzungscookie.
### Aktualisieren
```bash
sudo bash deploy/update.sh --app tesm-license
sudo bash /srv/tesm-license/deploy/update.sh tesm-license
```
Vor jedem Update entsteht ein vollständiges Backup, danach läuft ein
@@ -70,7 +86,6 @@ Health-Check mit automatischem Rollback.
```bash
sudo -u tesm-license tesm-license-admin status
sudo -u tesm-license tesm-license-admin init-key # Signaturschlüssel
sudo -u tesm-license tesm-license-admin bootstrap # Grunddaten
sudo -u tesm-license tesm-license-admin create-admin
sudo -u tesm-license tesm-license-admin migrate-legacy # Altbestand übernehmen
```