- 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.
6.7 KiB
🚀 Deployment Checklist - Pfandsystem
Pre-Deployment
1. Umgebungsvariablen konfigurieren
-
Backend
.enverstellen:cp backend/.env.example backend/.env nano backend/.envZu ändern:
DB_PASSWORD- Sicheres MySQL-PasswortJWT_SECRET- Mindestens 32 Zeichen, zufällig generiertRESEND_API_KEY- Prüfen ob korrekt
-
Frontend
.envprüfen:nano .envZu prüfen:
VITE_API_URL- Korrekte Domain (https://pfandsystem.backdigital.de/api)
-
docker-compose.yml anpassen:
nano docker-compose.ymlZu ändern:
MYSQL_ROOT_PASSWORDMYSQL_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 psAlle 4 Container sollten "Up" sein:
- pfandsystem-mysql
- pfandsystem-phpmyadmin
- pfandsystem-backend
- pfandsystem-frontend
5. Logs prüfen
-
Backend-Logs prüfen:
docker-compose logs backendErwartete Ausgabe:
- ✅ MySQL Datenbankverbindung erfolgreich
- 🚀 Backend-Server läuft auf Port 3001
-
MySQL-Logs prüfen:
docker-compose logs mysqlErwartete Ausgabe:
- ready for connections
6. Datenbank initialisieren
-
Admin-Benutzer erstellen:
docker exec -it pfandsystem-backend node scripts/create-admin.jsNotiere:
- Email: admin@pfandsystem.de
- Passwort: admin123 (ÄNDERN!)
-
Optional - Beispieldaten prüfen (via phpMyAdmin):
- URL: http://localhost:8081
- Login: pfandsystem /
- Prüfe Tabellen: mitarbeiter, artikel
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/healthErwartete 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:
- Browser-Cache leeren (Strg+Shift+R)
- Service Worker deregistrieren (DevTools → Application)
- 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:
-
Container stoppen:
docker-compose down -
Alte Version wiederherstellen:
git checkout <previous-commit> docker-compose up -d -
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: