Werkspur Docs Zur Website

Lizenzbetrieb

Ohne Lizenzserver

Die produktive WERKSPUR-Ausgabe prüft eine signierte, an genau eine Installation gebundene Lizenz lokal. Sie baut weder bei der Aktivierung noch im laufenden Betrieb eine Verbindung zu einem Lizenzserver auf. Die Anwendung erhält nur den öffentlichen Prüfschlüssel; der private Signierschlüssel bleibt beim Anbieter. Eine Entwicklungs-Ausgabe aus dem Quellcode erzwingt diese Prüfung nicht und ist nicht die ausgelieferte Produktiv-Ausgabe.

Zwei feste Mounts gehören zur Installation:

Der Verzeichnis-Mount ist wichtig: Nur damit wird ein atomar umbenannter Ersatz sichtbar. Binden Sie nicht allein die einzelne Datei ein und ändern Sie die Pfade in einer Produktivbereitstellung nicht.

Installationsanfrage erzeugen

Erzeugen Sie die Identität einmal auf dem Zielserver und schreiben Sie die übertragbare Anfrage ausschließlich auf die Standardausgabe:

./deploy/production-compose.sh run --rm -T werkspur \
  license-request -out - > license-request.json

Der Befehl legt beim ersten Lauf die Installationsidentität im Volume an; spätere Läufe verwenden dieselbe Identität. license-request.json enthält nur die öffentliche Installationskennung und darf an den Anbieter übertragen werden. Übertragen Sie niemals Dateien aus dem Volume /var/lib/werkspur/license.

Senden Sie license-request.json über den vereinbarten geschützten Übertragungsweg an den Anbieter. Sie erhalten eine signierte license.json zurück. Prüfen Sie Dateiname und Zuordnung zum Standort, legen Sie die Datei vor dem ersten normalen Start ab und starten Sie dann den Stack:

mkdir -p deploy/license
install -m 0644 received-license.json deploy/license/license.json
make production-up

Eine fehlende, beschädigte, mit einem unbekannten Signierschlüssel ausgestellte oder für eine andere Installationsidentität ausgestellte Lizenz verhindert den ersten normalen Start. Erzeugen Sie in diesem Fall die Anfrage auf genau diesem Server erneut und lassen Sie die Zuordnung vom Anbieter prüfen. Ersetzen Sie weder das Installations-Volume noch die Lizenz einzeln durch Material eines anderen Systems.

Zustand als Admin prüfen

Admins sehen den Lizenzzustand in der Oberfläche und können GET /api/license/status mit ihrer Sitzung lesen. Die Antwort enthält Zustand, Lizenz-ID, Kunde, Standort, Gültigkeits- und Kulanzfrist, die verbleibenden Tage sowie die lizenzierte und die verbundene Maschinenanzahl (machines_licensed, machines_connected). Schlüssel, Signatur und vollständiger Lizenzinhalt werden nicht ausgegeben.

Der eingeschränkte Zustand löscht oder verändert keine Fachdaten. Er ist ausdrücklich kein Prozess- oder Readiness-Fehler; die Fertigung soll ohne Neustartschleife weiterlaufen.

Lizenz atomar verlängern

Erzeugen Sie für eine Verlängerung erneut eine Anfrage mit dem obigen Befehl. Solange das Installations-Volume unverändert ist, enthält sie dieselbe Identität. Übertragen Sie die Anfrage an den Anbieter und legen Sie die zurückgegebene Datei zunächst neben der aktiven Datei ab:

install -m 0644 received-license.json deploy/license/license.json.tmp
mv deploy/license/license.json.tmp deploy/license/license.json

mv muss auf demselben Dateisystem stattfinden. Schreiben oder kopieren Sie nicht direkt in license.json; eine teilweise gelesene Datei würde die laufende Installation vorübergehend einschränken. WERKSPUR prüft die atomar ersetzte Datei innerhalb von fünf Sekunden, ein Neustart ist nicht erforderlich. Kontrollieren Sie danach als Admin, dass state und valid_until den erwarteten Stand zeigen.

Fehler im laufenden Betrieb

Wird eine zuvor gültige Datei im Betrieb gelöscht, beschädigt oder durch eine fremde Lizenz ersetzt, läuft WERKSPUR im eingeschränkten Zustand weiter. Der Admin-Status nennt einen sicheren Diagnosecode:

runtime_problem Ursache und Maßnahme
license_file_missing deploy/license/license.json fehlt. Stellen Sie die gültige Datei atomar wieder her.
license_file_invalid Datei, Format, Signatur oder Signierschlüssel ist ungültig. Verwenden Sie unverändert die vom Anbieter gelieferte Datei.
installation_mismatch Lizenz und Installations-Volume gehören nicht zusammen. Fordern Sie für die aktuelle Identität eine neue Lizenz an oder stellen Sie das zusammengehörige Paar wieder her.

Ein später atomar eingespielter gültiger Ersatz beendet die Laufzeitstörung innerhalb von fünf Sekunden. Prüfen Sie zusätzlich die Anwendungslogs mit ./deploy/production-compose.sh logs -f werkspur. Geben Sie private Installations- oder Signierschlüssel nie in Logs, Tickets oder Chatnachrichten weiter.

Umzug und Wiederherstellung

Bei einem geplanten Serverumzug erzeugen Sie auf dem neuen Server ein neues license-state-Volume, führen dort license-request aus und lassen eine neue Lizenz ausstellen. Kopieren Sie nicht nur die alte Lizenzdatei; sie passt nicht zur neuen Identität. Nehmen Sie das alte System entsprechend Ihrer vertraglichen Vereinbarung außer Betrieb.

Für Disaster Recovery derselben logischen Installation sichern und restaurieren Sie zusammen:

  1. Datenbank-Dump und denselben FOUNDRY_SECRET_KEY wie unter Backup & Wiederherstellung,
  2. das vollständige persistente license-state-Volume und
  3. die dazugehörige deploy/license/license.json.

Ein Datenbank-Dump enthält die beiden Lizenzartefakte nicht. Sichern Sie beide zusammen mit den Datenbank-Dumps:

docker run --rm -v werkspur-prod_license-state:/state -v "$PWD/deploy/backups":/backup \
  alpine tar -czf /backup/license-state.tgz -C /state .
cp deploy/license/license.json deploy/backups/license.json

Exportieren Sie das Volume nach der ersten Installationsanfrage; die Lizenzdatei sichern Sie nach jeder Verlängerung erneut. Bewahren Sie beide Dateien zusammen mit den Datenbank-Dumps getrennt vom Server auf.

Bei der Wiederherstellung spielen Sie beide Artefakte ein, bevor die Anwendung zum ersten Mal startet:

docker volume create werkspur-prod_license-state
docker run --rm -v werkspur-prod_license-state:/state -v "$PWD/deploy/backups":/backup \
  alpine tar -xzf /backup/license-state.tgz -C /state
mkdir -p deploy/license
install -m 0644 deploy/backups/license.json deploy/license/license.json

Fehlt das Installations-Volume, benötigen Sie eine neue Anfrage und eine neue Lizenz; die alte license.json allein startet die Installation nicht. Testen Sie die Wiederherstellung regelmäßig und schützen Sie die private Installationsidentität wie einen Schlüssel.

docker compose down --volumes und das Entwicklungskommando make dev-reset löschen das Volume license-state und damit die Installationsidentität unwiederbringlich. Verwenden Sie auf einem Produktivsystem zum Stoppen nur make production-down; dieses Kommando erhält alle Volumes.

Grenzen der Offline-Lizenz

Ohne Online-Verbindung kann der Anbieter eine bereits ausgegebene Lizenz vor valid_until nicht technisch widerrufen; ein Widerruf ist bis dahin vertraglich. Wer den Kundenhost vollständig kontrolliert, kann Binärdateien verändern oder Lizenzdatei und Installations-Volume gemeinsam klonen. Auch eine zurückgestellte Systemuhr lässt sich ohne vertrauenswürdige Hardware oder Online-Zeitquelle nicht sicher verhindern. Die Offline-Lizenz erschwert daher versehentliches oder einfaches Kopieren, ist aber kein perfekter Kopierschutz. Der Zugang zu neuen Software-Images wird getrennt über den privaten Release-Kanal gesteuert.