Files
pfandsystem-demo/dokumentationen/DEPLOYMENT_CHECKLIST.md
christian d86c898455 chore: initial scaffold (Whitelabel-Fork von Pfandsystem)
- Source-Copy von /root/entwicklung/pfandsystem
- docker-compose.yml umgeschrieben: pfandsystem-demo-* Container, Ports 3308/8083/3003 (alle localhost)
- Traefik-Label fuer pfandsystem.dockly.de
- Erweitertes Multi-Tenant-Schema (tenants, tenant_id auf allen Tabellen)
- Neue Tabellen: kunden_bilder, geraete
- Neue Spalten: kunden.anlieferungshinweis, kunden.lieferzeit_bis
- Rollen: superadmin, admin, user, fahrer
- .env.example + README

Code-Refactor (Tailwind, Multi-Tenant-Middleware, Erweiterungen) folgt.
2026-05-26 12:39:17 +00:00

6.7 KiB

🚀 Deployment Checklist - Pfandsystem

Pre-Deployment

1. Umgebungsvariablen konfigurieren

  • Backend .env erstellen:

    cp backend/.env.example backend/.env
    nano backend/.env
    

    Zu ändern:

    • DB_PASSWORD - Sicheres MySQL-Passwort
    • JWT_SECRET - Mindestens 32 Zeichen, zufällig generiert
    • RESEND_API_KEY - Prüfen ob korrekt
  • Frontend .env prüfen:

    nano .env
    

    Zu prüfen:

  • docker-compose.yml anpassen:

    nano docker-compose.yml
    

    Zu ändern:

    • MYSQL_ROOT_PASSWORD
    • MYSQL_PASSWORD (muss mit backend/.env übereinstimmen)

2. SSL/TLS Zertifikate

  • Zertifikate vorhanden in /root/certbot/conf/
  • Zertifikate gültig (nicht abgelaufen)
  • Domain korrekt konfiguriert (pfandsystem.backdigital.de)

3. Build & Test

  • Frontend Dependencies installieren:

    npm install
    
  • Frontend bauen:

    npm run build
    node fix-manifest-link.cjs
    
  • Backend Dependencies installieren:

    cd backend && npm install && cd ..
    

Deployment

4. Docker Compose starten

  • Alte Container stoppen (falls vorhanden):

    docker-compose down
    
  • Volumes prüfen (optional - nur bei Neuinstallation):

    docker volume ls
    # Bei Bedarf alte Volumes löschen:
    # docker volume rm pfandsystem_mysql_data
    
  • Container starten:

    docker-compose up -d
    
  • Container-Status prüfen:

    docker-compose ps
    

    Alle 4 Container sollten "Up" sein:

    • pfandsystem-mysql
    • pfandsystem-phpmyadmin
    • pfandsystem-backend
    • pfandsystem-frontend

5. Logs prüfen

  • Backend-Logs prüfen:

    docker-compose logs backend
    

    Erwartete Ausgabe:

    • MySQL Datenbankverbindung erfolgreich
    • 🚀 Backend-Server läuft auf Port 3001
  • MySQL-Logs prüfen:

    docker-compose logs mysql
    

    Erwartete Ausgabe:

    • ready for connections

6. Datenbank initialisieren

  • Admin-Benutzer erstellen:

    docker exec -it pfandsystem-backend node scripts/create-admin.js
    

    Notiere:

  • Optional - Beispieldaten prüfen (via phpMyAdmin):

Post-Deployment Tests

7. Frontend-Tests

  • Frontend erreichbar: https://pfandsystem.backdigital.de
  • Login-Seite wird angezeigt
  • Login mit Admin-Credentials funktioniert
  • Dashboard wird angezeigt
  • PWA-Manifest lädt (DevTools → Application → Manifest)
  • Service Worker registriert (DevTools → Application → Service Workers)
  • Icons werden angezeigt

8. Backend-Tests

  • Health Check:

    curl http://localhost:3001/health
    

    Erwartete Antwort:

    {"status":"OK","timestamp":"..."}
    
  • Login API:

    curl -X POST http://localhost:3001/api/auth/login \
      -H "Content-Type: application/json" \
      -d '{"email":"admin@pfandsystem.de","password":"admin123"}'
    

    Erwartete Antwort:

    {"token":"...","user":{...}}
    

9. Funktions-Tests

  • Kundenverwaltung:

    • Neuen Kunden anlegen
    • Kunde bearbeiten
    • Kunde löschen
  • Artikelverwaltung:

    • Neuen Artikel anlegen
    • Artikel bearbeiten
    • Artikel löschen
  • Lieferungen:

    • Neue Lieferung erfassen
    • Mit Foto hochladen
    • Foto wird angezeigt
  • Rücknahmen:

    • Neue Rücknahme erfassen
    • Mit Foto hochladen
    • Foto wird angezeigt
  • Mitarbeiterverwaltung (Admin):

    • Neuen Mitarbeiter anlegen
    • Rolle ändern
    • Mit neuem Mitarbeiter einloggen

10. Sicherheits-Tests

  • Admin-Passwort geändert (nicht mehr admin123)
  • HTTPS funktioniert (kein Mixed Content)
  • Nicht-authentifizierte API-Calls werden abgelehnt
  • User kann keine Admin-Funktionen ausführen
  • File-Upload nur für Bilder möglich
  • File-Upload-Größe limitiert (max 10MB)

Daten-Migration (falls erforderlich)

11. Daten aus Supabase exportieren

  • Kunden exportieren (CSV/JSON)
  • Artikel exportieren
  • Mitarbeiter exportieren
  • Lieferungen exportieren
  • Rücknahmen exportieren

12. Daten in MySQL importieren

  • Via phpMyAdmin (http://localhost:8081)

  • Oder via SQL-Script:

    docker exec -i pfandsystem-mysql mysql -u pfandsystem -p pfandsystem < import.sql
    
  • Daten-Integrität prüfen:

    • Anzahl Kunden korrekt
    • Anzahl Artikel korrekt
    • Foreign Keys korrekt

Monitoring & Backup

13. Backup einrichten

  • Datenbank-Backup-Script erstellen:

    #!/bin/bash
    DATE=$(date +%Y%m%d_%H%M%S)
    docker exec pfandsystem-mysql mysqldump -u pfandsystem -p<password> pfandsystem > backup_$DATE.sql
    
  • Cronjob für tägliches Backup:

    crontab -e
    # Täglich um 2 Uhr
    0 2 * * * /root/backup.sh
    

14. Monitoring

  • Container-Status überwachen:

    docker-compose ps
    
  • Logs regelmäßig prüfen:

    docker-compose logs --tail=100
    
  • Disk Space prüfen:

    df -h
    docker system df
    

Troubleshooting

Häufige Probleme

Backend startet nicht:

docker-compose logs backend
# Prüfe Datenbank-Verbindung
docker-compose restart mysql

Frontend zeigt keine Daten:

  1. Browser-Cache leeren (Strg+Shift+R)
  2. Service Worker deregistrieren (DevTools → Application)
  3. API-URL in .env prüfen

Datenbank-Verbindung fehlgeschlagen:

# MySQL-Logs prüfen
docker-compose logs mysql

# In MySQL-Container einloggen
docker exec -it pfandsystem-mysql mysql -u pfandsystem -p

# Verbindung testen
docker exec -it pfandsystem-backend node -e "require('./config/database.js')"

Upload funktioniert nicht:

# Prüfe Upload-Verzeichnis
docker exec -it pfandsystem-backend ls -la /app/uploads

# Prüfe Berechtigungen
docker exec -it pfandsystem-backend chmod 777 /app/uploads

Rollback-Plan

Falls Probleme auftreten:

  1. Container stoppen:

    docker-compose down
    
  2. Alte Version wiederherstellen:

    git checkout <previous-commit>
    docker-compose up -d
    
  3. Datenbank-Backup wiederherstellen:

    docker exec -i pfandsystem-mysql mysql -u pfandsystem -p pfandsystem < backup.sql
    

Abschluss

  • Alle Tests erfolgreich
  • Dokumentation aktualisiert
  • Team informiert
  • Backup-Strategie aktiv
  • Monitoring läuft

Deployment abgeschlossen am: _________________

Durchgeführt von: _________________

Notizen: