# TimeClock v3 - Deployment Checkliste Diese Checkliste stellt sicher, dass alle Schritte für ein erfolgreiches Deployment durchgeführt wurden. ## Pre-Deployment (Lokal) - [ ] **Git Status prüfen**: `git status` - Alle Änderungen committed? - [ ] **Tests durchführen**: Lokal testen mit `npm run dev` - [ ] **Dependencies aktuell**: `npm install` in backend/ und frontend/ - [ ] **Frontend-Build testen**: `cd frontend && npm run build` - [ ] **Keine hardcodierten URLs**: `grep -r "localhost:3010" frontend/src/` ## Git Push ```bash git add . git commit -m "Deployment vX.X.X" git push origin main ``` ## Server-Vorbereitung - [ ] **SSH-Zugang**: `ssh tsschulz@tsschulz.de` - [ ] **Projekt-Verzeichnis**: `cd /var/www/timeclock` - [ ] **Git Pull**: `git pull origin main` ## Deployment Durchführen ### Option 1: Automatisches Deployment (Empfohlen) ```bash cd /var/www/timeclock ./deploy.sh update ``` Das Script führt automatisch aus: - ✅ Datenbank-Backup - ✅ Backend Dependencies installieren - ✅ Frontend .env.production erstellen - ✅ Frontend neu bauen (mit korrekter API-URL) - ✅ Backend neu starten - ✅ Apache neu laden ### Option 2: Manuelles Deployment ```bash # 1. Backup ./deploy.sh backup # 2. Backend cd /var/www/timeclock/backend npm install --production pm2 restart timeclock-backend # 3. Frontend cd /var/www/timeclock/frontend # .env.production prüfen/erstellen cat > .env.production << 'EOF' VITE_API_URL=/api EOF npm install rm -rf dist/ npm run build # 4. Apache neu laden sudo systemctl reload apache2 ``` ## Post-Deployment Tests - [ ] **Backend Health-Check**: ```bash curl https://stechuhr3.tsschulz.de/api/health # Erwartung: {"status":"ok","message":"TimeClock API v3.0.0",...} ``` - [ ] **Frontend lädt**: ```bash curl -I https://stechuhr3.tsschulz.de # Erwartung: HTTP/2 200 ``` - [ ] **Keine localhost URLs**: ```bash grep -r "localhost:3010" /var/www/timeclock/frontend/dist/ # Erwartung: Keine Treffer (oder nur Kommentare) ``` - [ ] **PM2 Status**: ```bash pm2 status # Erwartung: timeclock-backend | online ``` - [ ] **Browser-Tests**: - [ ] https://stechuhr3.tsschulz.de lädt - [ ] Login funktioniert - [ ] API-Calls gehen an `/api` (nicht `localhost:3010`) - [ ] Keine Console-Errors (F12) ## Rollback bei Problemen ```bash cd /var/www/timeclock ./deploy.sh rollback ``` ## Monitoring ```bash # Backend-Logs live pm2 logs timeclock-backend # Apache-Logs sudo tail -f /var/log/apache2/stechuhr3-error.log # Backend-Status ./deploy.sh status # Alle Logs ./deploy.sh logs ``` ## Häufige Probleme ### Problem: Frontend zeigt "localhost:3010" Fehler **Lösung:** ```bash cd /var/www/timeclock/frontend cat .env.production # Sollte VITE_API_URL=/api enthalten rm -rf dist/ npm run build ``` ### Problem: API 502 Bad Gateway **Lösung:** ```bash pm2 restart timeclock-backend pm2 logs timeclock-backend --lines 50 ``` ### Problem: Apache zeigt Default-Page **Lösung:** ```bash sudo apache2ctl -S | grep stechuhr3 # Prüfe VirtualHost sudo systemctl reload apache2 ``` ### Problem: Browser-Cache **Lösung:** - **Strg + Shift + R** (Hard Reload) - Oder Private/Incognito Window ## Deployment-Frequenz - **Bugfixes**: Sofort - **Features**: Nach Testing auf Dev - **Breaking Changes**: Mit Ankündigung ## Backup-Strategie - **Automatisch**: Täglich um 2 Uhr (via Cronjob) - **Manuell**: Vor jedem Deployment - **Retention**: 30 Tage - **Location**: `/var/backups/timeclock/` ## Secrets & Credentials Niemals committen: - ❌ `.env` Dateien - ❌ SSL-Zertifikate - ❌ Datenbank-Passwörter - ❌ API-Keys Verwende `.gitignore`: ``` .env .env.local .env.production.local *.key *.pem ``` ## Deployment-Log Dokumentiere jedes Deployment: ``` Datum: 2025-10-18 Version: v3.0.1 Änderungen: - API-URLs von hardcoded auf .env umgestellt - Apache2-Konfiguration korrigiert - SSL-Zertifikat eingerichtet Status: ✅ Erfolgreich Probleme: Keine ``` --- **Viel Erfolg beim Deployment! 🚀** Bei Fragen: Siehe `DEPLOYMENT.md`, `APACHE2_DEPLOYMENT.md` oder `CHECK_SERVICES.md`