Lizenz

Wie Editionen, Lizenzstatus und Knotenlimit funktionieren und wie du eine Lizenz anforderst, installierst und erneuerst.

Grundprinzip

Nova Control Panel wird als Abonnement angeboten. Die Lizenz begrenzt die Anzahl der Server (Knoten) einer Installation und die Updates, die sie installieren darf. Lizenzen vertreibt die Meyer und Heldt GbR über das Kundenportal konto.novacontrolpanel.com. Die Community-Edition ist für einen Server kostenlos und braucht keine Lizenzdatei.

Wichtig: Die Lizenz schaltet nie etwas ab, das bereits läuft. Websites, E-Mail, DNS und Datenbanken bestehender Mandanten arbeiten in jedem Lizenzstatus weiter. Die installierte Version läuft immer weiter.

Editionen

EditionKnotenUpdatesSupport
Community (ohne Lizenzdatei, kostenlos)1alle Releaseskeiner
Abonnementmax_nodesReleases, die bis update_entitlement_until + grace_days veröffentlicht wurdenstandard oder premium

Lizenzstatus

StatusBedeutungWas verweigert wird
communitykeine Lizenz installiertein zweiter Knoten
activeAbonnement innerhalb von valid_from..valid_untilKnoten über max_nodes, Releases nach dem Stichtag
gracevalid_until überschritten, aber innerhalb von grace_dayswie active
expiredKulanzzeit abgelaufenwie active: Das Knotenlimit bleibt max_nodes, später veröffentlichte Releases bleiben gesperrt; die installierte Version läuft weiter
over_limitmehr Knoten in Betrieb, als das Limit erlaubtneue Knoten; nach der Kulanzzeit jedes Update
invalidLizenzdatei vorhanden, aber unbrauchbar (Signatur, andere Installation, Schlüssel nicht vertrauenswürdig, noch nicht gültig)es gelten die Community-Limits

Was als Knoten zählt

  • Ein Knoten zählt, sobald er eingebunden (enrolled) ist. Widerrufene und aufgegebene Knoten zählen nie.
  • Der Control-Host ist Knoten 1, auch bevor er sich selbst registriert hat.
  • Eine geplante Fleet-Topologie zählt erst, wenn ihre Knoten eingebunden sind. Eine Community-Installation mit einer Fünf-Knoten-Topologie meldet also nodes 1 of 1, bis ein zweiter Knoten eingebunden werden soll – was Community verweigert.
  • Ist die Knotenquelle nicht lesbar, wird der Wert als unbekannt gemeldet (nodes_used: null), nie als Überschreitung.

Über dem Limit

Knoten oberhalb des Limits laufen weiter. Neue Knoten werden sofort verweigert. Updates bleiben während der Kulanzzeit erlaubt: bei Community 30 Tage ab der Installation, bei einer Lizenz grace_days ab valid_from.

Update-Stichtag

Ein Release ist abgedeckt, wenn sein signiertes published_at höchstens bei update_entitlement_until + grace_days liegt. Community hat keinen Stichtag.

Hinweise im Panel

Administratoren sehen bei grace, expired, over_limit und invalid einen Hinweis-Banner auf dem Dashboard sowie die Seite Einstellungen › Lizenz. Kunden und Reseller sehen nichts von der Lizenzierung.

Die Lizenzdatei

Die Lizenz ist eine kanonische JSON-Datei (höchstens 8 KB), mit Ed25519 signiert. Sie ist an genau eine Installation gebunden und enthält unter anderem:

FeldBedeutung
editionz. B. subscription
installation_iddie Installations-ID (ncpi_…), an die die Lizenz gebunden ist
license_idKennung der Lizenz (lic_…)
licenseeName und Kundennummer
max_nodeserlaubte Knotenzahl
valid_from, valid_untilLaufzeit
update_entitlement_until, grace_daysUpdate-Stichtag und Kulanztage
support_levelstandard oder premium

Wichtig: Verändere die Datei nicht. Die Signatur deckt den Inhalt, die license_id und die installation_id ab; eine umformatierte oder bearbeitete Datei wird abgelehnt.

Lizenz anfordern und installieren

1. Installations-ID ermitteln

Der kombinierte Installer legt die Installationsidentität beim ersten Installieren des Control-Hosts einmalig an: /etc/nova-controlpanel/installation.json mit ncpi_ plus 26 Zufallszeichen (root:nova-controlpanel 0640). Upgrades und Rollbacks behalten sie bei. Außerdem legt er das Lizenzverzeichnis /var/lib/nova-controlpanel/license an (root:nova-controlpanel 0770).

Die ID liest du so aus:

sh
nova-update license show-id

oder im Panel unter Einstellungen › Lizenz. Gib sie bei der Bestellung im Kundenportal an.

2. Lizenz installieren

Alle drei Wege führen dieselben Prüfungen durch: hinterlegte (gepinnte) Lizenzschlüssel, Installationsidentität, Signatur, Bindung, valid_from erreicht und nie älter als die bereits installierte Lizenz.

  • Panel: Einstellungen › Lizenz, Datei hochladen. Dafür brauchst du system.license.manage und den Step-up (Passwort und Authenticator-Code).
  • API: PUT /system/license mit der Datei als Body.
  • Kommandozeile als root:
sh
nova-update license install FILE

3. Status prüfen

sh
nova-update license status [--json]

Alternativ GET /system/license (Administratoren mit platform.server.read) oder das Panel.

Zurück zu Community

sh
nova-update license remove

Am laufenden Betrieb ändert sich dadurch nichts.

Lizenz verlängern

Zur Verlängerung erhältst du eine neue Lizenz mit späterem Ausstellungsdatum, die du wie oben installierst. Eine ältere Lizenz ersetzt nie eine neuere, bereits installierte (LICENSE_SUPERSEDED), und eine Lizenz vor ihrem valid_from wird abgelehnt.

Knoten hinzufügen

Wichtig: Installiere eine Lizenz für die Ziel-Knotenzahl, bevor du einen weiteren Knoten einbindest.

Diese Schritte verweigern einen Knoten über dem Limit, bevor irgendetwas passiert, und nennen das Limit:

SchrittAblehnung
nova-agent-fabric.sh node-register (agent-node.php register)AGENT_ENROLLMENT_LICENSE_NODE_LIMIT + Meldung
nova-node-bootstrap.php bootstrap (neuer next_node)NOVA_LICENSE_NODE_LIMIT + Meldung
native-topology-change.php plan/check (Topologie-Erweiterung)NOVA_LICENSE_NODE_LIMIT: N node(s) would exceed the licensed limit of M …

Einen Knoten ersetzen (einen hinzufügen, einen entfernen), Knoten entfernen, Rollen ändern, neu registrieren, Zertifikate rotieren und widerrufen wird nie verweigert.

Eine neue Multi-Host-Installation läuft deshalb so ab: kombinierte Installation auf dem Control-Host, Lizenz installieren, dann die übrigen Knoten einbinden (siehe Installation).

Lizenz und Updates

  • nova-update check bietet nur abgedeckte Releases an. Neuere, nicht abgedeckte Releases zeigen den Kanalstatus not_entitled; die installierte Version läuft weiter.
  • fetch und apply verweigern sie mit NOVA_UPDATE_LICENSE_ENTITLEMENT_ENDED bzw. NOVA_UPDATE_LICENSE_OVER_LIMIT.
  • Satelliten-Knoten folgen dem Control-Host.
  • Jede Anfrage an den Release-Server enthält neben dem Update-Schlüssel die Header X-Nova-License-Id und X-Nova-Installation-Id (bei Community ohne Lizenz-ID).

Details stehen im Kapitel Updates.

Lizenzschlüssel

Die Liste der vertrauenswürdigen Lizenzschlüssel liegt unter /etc/nova-controlpanel/license-keys/license.json (+ .sig), root 0644 in einem root-Verzeichnis mit 0755. Der kombinierte Installer hinterlegt sie mit --license-keys keys/license/<n>.json und prüft die Kette vor jeder Änderung.

Rotiert der Hersteller den Lizenzschlüssel, folgt nova-update check der neuen, signierten Liste automatisch. Ohne Release-Server übernimmst du sie auf jedem Control-Host von Hand:

sh
nova-update license trust keys/license/2.json

Eine Liste, die kein bereits hinterlegter Schlüssel signiert hat, wird abgelehnt (NOVA_LICENSE_KEYS_ROTATION_INVALID).

Fehlercodes

CodeWoBedeutung
LICENSE_INVALID (422)APIkeine gültige, von einem hinterlegten Lizenzschlüssel signierte Lizenz
LICENSE_INSTALLATION_MISMATCH (422)APIfür eine andere Installation ausgestellt
LICENSE_NOT_YET_VALID (422)APIvor valid_from
LICENSE_SUPERSEDED (409)APIeine später ausgestellte Lizenz ist installiert
LICENSE_KEYS_NOT_PINNED (409)APIkeine Lizenzschlüssel-Liste hinterlegt
LICENSE_INSTALLATION_UNKNOWN (409)APInoch keine Installationsidentität
LICENSE_STATUS_UNAVAILABLE (503)APIStatus kann nicht gelesen werden
NOVA_LICENSE_NODE_LIMIT / AGENT_ENROLLMENT_LICENSE_NODE_LIMITCLIein Knoten über dem Limit
NOVA_UPDATE_LICENSE_ENTITLEMENT_ENDED / NOVA_UPDATE_LICENSE_OVER_LIMITnova-updateRelease nicht abgedeckt

Hinweise zu Drittanbieter-Software

Jedes Release enthält die Lizenzhinweise der mitgelieferten Drittanbieter-Software (THIRD-PARTY-NOTICES.txt), und die zugehörigen Quellpakete werden neben dem Release veröffentlicht. Im Panel findest du die Liste unter Über Nova.