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:
| Aktion | Beschreibung |
|---|---|
| Starten | Spawnt einen Node.js-Prozess mit der ausführbaren Datei des Pakets |
| Stoppen | Sendet SIGTERM, nach 10 Sekunden SIGKILL (Graceful Shutdown) |
| Neustarten | Stoppen + Starten in einem Schritt |
| Aktualisieren | Neueste 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
| Status | Bedeutung |
|---|---|
running | Produkt läuft |
stopped | Produkt wurde manuell gestoppt |
crashed | Produkt ist abgestürzt (Auto-Restart folgt) |
installing | Installation läuft |
installed | Installiert, aber noch nicht gestartet |
updating | Update läuft |
needs_config | Wartet auf Benutzerkonfiguration |
failed | Installation 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:
- Produkt-Detail-Ansicht öffnen
- Konfigurationsbutton klicken
- Einstellungen anpassen
- Speichern — löst ein Re-Deployment aus
Details zum Konfigurations-Interface unter Plugin-System.