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_KEY in .env (und setzt die Datei auf 0600),
  • gibt den passenden öffentlichen Schlüssel aus:
NEXUS_LICENSE_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0B...AB

⚠️ license:keygen nur 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:

VariableBedeutungDefault
NEXUS_LICENSE_PUBLIC_KEYX.509-SPKI (DER, base64) des Signaturschlüsselszentral eingebacken
NEXUS_LICENSE_SERVER_URLBasis-URL von JuByteWebhttps://test.jubyte.com
NEXUS_LICENSE_KEYLizenzschlüssel → Auto-Aktivierung beim Start (optional)leer
NEXUS_LICENSE_SERVER_IDfeste Instanz-Kennung für die Server-Bindungautogeneriert
NEXUS_LICENSE_REFRESH_MINUTESRefresh-Intervall360

Nutze immer https:// – über http:// 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_KEY setzen – 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

SymptomUrsacheLösung
Banner „SERVER_URL/PUBLIC_KEY nicht gesetzt"Veralteter Core-StandCore über das ACP aktualisieren (Lizenz → Updates) bzw. Image aktualisieren und Container neu erstellen (docker compose pull && docker compose up -d core)
HTTP 500 beim AktivierenMigration auf JuByteWeb fehlt oder privater Schlüssel kaputtnpm run prisma:migrate; LICENSE_SIGNING_PRIVATE_KEY prüfen
503 / „Signierung nicht aktiviert"LICENSE_SIGNING_PRIVATE_KEY fehlt im laufenden Web-DienstEnv setzen / license:keygen
„Public-Key passt nicht"Public-Key ≠ privater SignaturschlüsselPublic-Key aus license:keygen erneut übernehmen

Siehe auch Lizenz-API-Referenz.