Lizenzserver mit dem Core verbinden
Das Lizenzsystem besteht aus zwei Diensten:
- JuByteWeb – die zentrale Lizenz-/Store-Plattform (Next.js). Sie verwaltet Produkte, Lizenzen und Module und signiert Entitlement-Dokumente.
- Nexus Core – verifiziert das signierte Dokument offline und schaltet die enthaltenen Module frei.
Sie sind über ein RSA-Schlüsselpaar verbunden: JuByteWeb hält den privaten Signaturschlüssel, der Core den passenden öffentlichen Verifikationsschlüssel.
Schritt 1 – Schlüsselpaar auf JuByteWeb erzeugen
Einmalig auf dem JuByteWeb-Server:
npm run license:keygen
Das Skript
- schreibt den privaten Schlüssel (base64 PKCS#8) als
LICENSE_SIGNING_PRIVATE_KEYin.env(und setzt die Datei auf0600), - gibt den passenden öffentlichen Schlüssel aus:
NEXUS_LICENSE_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0B...AB
⚠️
license:keygennur einmal ausführen. Ein erneuter Lauf rotiert den privaten Schlüssel und macht alle bereits ausgestellten Dokumente ungültig.
Schritt 2 – Datenbank migrieren
Auf JuByteWeb die Migrationen anwenden (legt nexus_modules +
license_module_grants an und seedet die Modul-Registry):
npm run prisma:migrate
Schritt 3 – Core konfigurieren
Der Core ist ab Werk auf die zentrale JuByte-Instanz vorkonfiguriert
(application.yml):
nexus:
license:
public-key: ${NEXUS_LICENSE_PUBLIC_KEY:<eingebackener Default>}
server-url: ${NEXUS_LICENSE_SERVER_URL:https://test.jubyte.com}
key: ${NEXUS_LICENSE_KEY:}
server-id: ${NEXUS_LICENSE_SERVER_ID:}
refresh-minutes: ${NEXUS_LICENSE_REFRESH_MINUTES:360}
Für die zentrale Instanz musst du nichts setzen – Schlüssel einfach im ACP eingeben (siehe Lizenz aktivieren).
Eigene/Staging-Instanz? Überschreibe per Env:
| Variable | Bedeutung | Default |
|---|---|---|
NEXUS_LICENSE_PUBLIC_KEY | X.509-SPKI (DER, base64) des Signaturschlüssels | zentral eingebacken |
NEXUS_LICENSE_SERVER_URL | Basis-URL von JuByteWeb | https://test.jubyte.com |
NEXUS_LICENSE_KEY | Lizenzschlüssel → Auto-Aktivierung beim Start (optional) | leer |
NEXUS_LICENSE_SERVER_ID | feste Instanz-Kennung für die Server-Bindung | autogeneriert |
NEXUS_LICENSE_REFRESH_MINUTES | Refresh-Intervall | 360 |
Nutze immer
https://– überhttp://würde der Lizenzschlüssel im Klartext übertragen (der Core warnt beim Start).
Schritt 4 – Aktivieren
- Manuell (empfohlen für den Start): ACP → Lizenz → Schlüssel eingeben.
- Automatisch beim Start:
NEXUS_LICENSE_KEYsetzen – der Core holt und aktiviert das Entitlement selbst, ganz ohne ACP-Eingabe.
Verifizieren
ACP → Lizenz → Token-Übersicht zeigt server/verifier als konfiguriert
und nach dem Aktivieren die Module. Per API:
curl https://<core>/api/v1/license # plan, status, modules[]
Fehlersuche
| Symptom | Ursache | Lösung |
|---|---|---|
| Banner „SERVER_URL/PUBLIC_KEY nicht gesetzt" | Veralteter Core-Stand | Core über das ACP aktualisieren (Lizenz → Updates) bzw. Image aktualisieren und Container neu erstellen (docker compose pull && docker compose up -d core) |
HTTP 500 beim Aktivieren | Migration auf JuByteWeb fehlt oder privater Schlüssel kaputt | npm run prisma:migrate; LICENSE_SIGNING_PRIVATE_KEY prüfen |
503 / „Signierung nicht aktiviert" | LICENSE_SIGNING_PRIVATE_KEY fehlt im laufenden Web-Dienst | Env setzen / license:keygen |
| „Public-Key passt nicht" | Public-Key ≠ privater Signaturschlüssel | Public-Key aus license:keygen erneut übernehmen |
Siehe auch Lizenz-API-Referenz.