Skip to Content
CubyProduktverwaltung

Produktverwaltung

Jedes installierte Produkt kann über die Web-Oberfläche verwaltet werden. Die Produkt-Detail-Ansicht ist über einen Klick auf die Produktkachel im Dashboard erreichbar.

Produkt-Detail-Ansicht

Die Detail-Seite zeigt:

  • Produktinformationen — Name, Typ, Version, Installationsdatum, PID, Neustart-Zähler
  • Health-Status — Wenn das Produkt eine Health-Route bereitstellt
  • Aktionsbuttons — Starten, Stoppen, Neustarten, Aktualisieren
  • Live-Logs — Echtzeit-Log-Ausgabe mit Auto-Scroll
  • Produkt-URL — Direkt-Link zum Produkt (falls vorhanden)
  • Detail-Komponente — Optionale produktspezifische Ansicht (detail-component.js)

Prozess-Management

Produkte vom Typ npx laufen als eigenständige Prozesse und können direkt gesteuert werden:

AktionBeschreibung
StartenSpawnt einen Node.js-Prozess mit der ausführbaren Datei des Pakets
StoppenSendet SIGTERM, nach 10 Sekunden SIGKILL (Graceful Shutdown)
NeustartenStoppen + Starten in einem Schritt
AktualisierenNeueste Version vom Marketplace installieren und re-deployen

Auto-Restart

Abgestürzte npx-Produkte werden nach 5 Sekunden automatisch neu gestartet, sofern sie nicht explizit vom Benutzer gestoppt wurden. Der Neustart-Zähler in der Detail-Ansicht zeigt, wie oft ein Produkt automatisch neu gestartet wurde.

Produkt-Status

StatusBedeutung
runningProdukt läuft
stoppedProdukt wurde manuell gestoppt
crashedProdukt ist abgestürzt (Auto-Restart folgt)
installingInstallation läuft
installedInstalliert, aber noch nicht gestartet
updatingUpdate läuft
needs_configWartet auf Benutzerkonfiguration
failedInstallation oder Start fehlgeschlagen

Der Status wird ausschließlich serverseitig verwaltet und per Socket.IO an das Frontend übertragen. Das Frontend zeigt den Status nur an, schreibt ihn aber nie selbst zurück.

Logs

Zwei Log-Quellen stehen zur Verfügung:

In-Memory-Logs

  • Die letzten 1000 Zeilen werden im Speicher gehalten
  • Live-Streaming über Socket.IO an das Frontend
  • Abrufbar über GET /api/products/:id/logs?limit=100

Log-Datei

  • Persistente Datei (output.log) im Produktverzeichnis
  • Enthält Zeitstempel für jede Zeile
  • Abrufbar über GET /api/products/:id/logfile?lines=500

Log-Abonnement

Das Frontend kann den Log-Stream eines Produkts abonnieren:

// Log-Stream abonnieren socket.emit('subscribe:logs', { productId: 'mein-produkt' }); // Log-Zeilen empfangen socket.on('product:log', ({ productId, line }) => { console.log(`[${productId}] ${line}`); }); // Log-Stream abbestellen socket.emit('unsubscribe:logs', { productId: 'mein-produkt' });

Health-Checks

Produkte, die einen Health-Endpunkt bereitstellen, werden regelmäßig geprüft:

  • Health-Status wird alle 10 Sekunden aktualisiert
  • Verfügbar über GET /api/products/:id/health
  • Gesamtübersicht über GET /api/products/health

Konfigurationsdialog

Produkte mit einem Konfigurationsdialog (config-component.js) können nachträglich konfiguriert werden:

  1. Produkt-Detail-Ansicht öffnen
  2. Konfigurationsbutton klicken
  3. Einstellungen anpassen
  4. Speichern — löst ein Re-Deployment aus

Details zum Konfigurations-Interface unter Plugin-System.