2025-10-13 19:22:15 +00:00
2025-10-01 19:08:53 +00:00
2025-10-12 20:39:48 +00:00
2025-10-13 18:44:15 +00:00
2025-09-29 19:04:26 +00:00
2025-09-30 08:38:05 +00:00
2025-09-30 21:02:51 +00:00
2025-10-01 10:40:52 +00:00
2025-10-12 13:50:44 +00:00
2025-10-13 19:22:15 +00:00

StackPulse Logo

📦 StackPulse Release

StackPulse ist eine kleine Web-App, die über die Portainer-API deine Docker-Stacks verwaltet und aktualisiert.
Sie besteht aus einem Backend (Node.js/Express) und einem Frontend (React/Tailwind).

Ziel:

  • Übersicht über alle Stacks in deiner Portainer-Instanz
  • Später: Updates, Deployments und Monitoring
  • Bereitstellung als Docker Image, nutzbar über docker-compose

🚀 Features & Roadmap

v0.1 Initial Release
  • Projektstruktur mit Frontend & Backend
  • Lokales Startskript (scripts/start-dev.sh)
  • Frontend zeigt Stacks an (über Backend)
  • API-Verbindung zu Portainer
  • Stack Redeploy
  • Bereitstellung eines Docker Images über GHCR
v0.2 Release

Backend

  • Anbindung einer SQLite-Datenbank
  • Logging der Redeploy-Aktionen in SQLite speichern
  • API-Endpunkte für Log-Abfragen
  • Funktionen für Pagination, Löschen und Export

Frontend

  • Anzeige der Logs (inkl. Statusfarben)
  • UI-Komponenten für Log-Details
  • Filterfunktionen für die Logs
  • Pagination, Lösch- und Exportanzeigen

Features

  • Selektive Auswahl: einzelne Stacks oder Services neu deployen
🟢 v0.3 Abgeschlossen

Backend

  • Automatische Datenbereinigung: Duplikate bei Stack-IDs erkennen & entfernen
  • Erweiterung der Logs (Portainer- und Datenbereinigungsvorgänge)
  • API für Filter & Suche (Stacks nach Name/Status abrufen)
  • API für Sortierung der Stacks
  • Portainer-Steuerung: Start/Stop/Update per Standardbefehl oder benutzerdefiniertem Skript
  • Maintenance-Modus: Stackpulse pausiert während Portainer-Update und reaktiviert sich automatisch

Frontend

  • Filter: Stacks nach Name oder Status durchsuchen
  • Sortierung: Stacks im Frontend sortieren
  • Benachrichtigungen im UI: erfolgreicher/fehlgeschlagener Redeploy (Toast + Notification-Center)
  • Visualisierung der Datenbereinigung (Konflikt/Auto-Fix Meldungen)
  • UI-Komponenten für Portainer-Status & Update-Steuerung
  • Wartungsbereich mit Statusanzeige und Update-Aktion

Features

  • Frontend-Filter und Sortierungen für schnellere Navigation bei vielen Stacks
  • Echtzeit-Feedback im UI (Notifications)
  • Datenkonsistenz sichern: keine doppelten Stack-IDs mehr
  • Portainer-Integration inkl. Update-Workflow und Maintenance-Modus
  • Verbesserte Nachvollziehbarkeit aller automatischen Prozesse
🔮 v0.4 Geplant

Backend

  • Zugriffsschutz für Endpunkte (nur authentifizierte Nutzer)
  • Benutzerverwaltung in SQLite (Username + Passwort speichern)
  • Passwort-Hashing mit bcrypt oder ähnlichem Verfahren
  • Basic Auth Middleware (HTTP-Header-basierte Authentifizierung)
  • Session/Token-Verwaltung nach Login

Frontend

  • Settings Page: UI-Komponenten für grundlegende Einstellungen
  • Login-Formular für Username + Passwort
  • UI-Sichtbarkeit abhängig vom Login (nur eingeloggte Nutzer sehen Redeploy- und Stack-Funktionen)
  • Fehleranzeige bei falschem Login (UI-Feedback)

Features

  • Benutzer-Authentifizierungssystem mit sicherem Login
  • Zugriffsbeschränkung auf kritische Funktionen
  • Einstellungsseite für zukünftige Systemkonfigurationen
  • Verbesserte Sicherheit & Session-Handling
  • Grundlage für Multi-User-Management

🗂️ Projektstruktur

stackpulse/
├── backend/          # Node.js Backend mit Express
│   └── data          # SQlite Datenbank
│   └── db            # Datenbank-Integration
├── frontend/         # React Frontend mit Tailwind
├── scripts/          # Lokale Hilfsskripte (nicht Teil des Images)
│   └── start-dev.sh  #Skript für den lokalen Start
├── Dockerfile        # Multi-Stage Build für Frontend + Backend
├── docker-compose.yml
└── README.md

🔧 Lokaler Start

1. Dev-Server starten (Frontend + Backend)

./scripts/start-dev.sh

➡️ Danach:


🐳 Docker-Setup

Mit Compose starten

version: "2.4"
services:
    stackpulse:
        container_name: stackpulse
        image: ghcr.io/mboehmlaender/stackpulse
        ports:
          - '4001:4001'
        volumes:
          - stackpulse_data:/app/backend/data
        environment:
          PORTAINER_URL: "Your_Portainer_Server_Address"
          PORTAINER_API_KEY: "Your_Portainer_API_Key"
          PORTAINER_ENDPOINT_ID: "Your_Portainer_Endpoint_ID"
          SELF_STACK_ID: "Stackpulse ID"
        restart: unless-stopped

volumes:
  stackpulse_data:

Die PORTAINER_ENDPOINT_ID erhältst du, wenn du die die URL im Browser ansiehst, wenn du das Dashboard in Portainer öffnest:

PORTAINER_ENDPOINT_ID

Die 3 wäre in diesem Fall Endpoint-ID.

Die STACK_SELF_ID findest du, wenn du das Frontend von StackPulse öffnest:

SELF_STACK_ID

Diese ID kann erst nach dem Deploy von Stackpulse ausgelesen werden. Vergiss daher nicht, nach dem Hinterlegen der ID in den Variablen das Stack noch einmal zu redeployen!


📋 Voraussetzungen

  • Node.js >= 20
  • Docker & Docker Compose
  • Zugang zu einer Portainer-Instanz (API-Key erforderlich)

🤝 Mitmachen

  1. Repo forken
  2. Feature-Branch erstellen
  3. PR gegen dev öffnen
S
Description
No description provided
Readme 7.6 MiB
v0.5 Latest
2025-11-12 11:02:26 +00:00
Languages
JavaScript 99.7%
HTML 0.2%