# Deployment - PointCab Webexport Server Diese Anleitung beschreibt den Deployment-Prozess für Updates und neue Versionen. ## 📋 Voraussetzungen - Server bereits installiert (siehe [INSTALLATION.md](INSTALLATION.md)) - SSH-Zugang zum Server - PM2 läuft ## 🚀 Standard-Deployment ### Methode 1: Automatisches Deployment (empfohlen) ```bash # Auf dem Server cd /var/www/pointcab_webexport_server # Deployment-Script ausführen sudo ./scripts/deploy.sh ``` ### Methode 2: Manuelles Deployment ```bash # 1. Zum Projekt wechseln cd /var/www/pointcab_webexport_server/nodejs_space # 2. Aktuelle Version sichern BACKUP_DIR="/var/www/pointcab_webexport_server/backups/$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" cp -r src/ "$BACKUP_DIR/" cp -r dist/ "$BACKUP_DIR/" # 3. Neue Dateien kopieren (via Git oder SCP) git pull origin main # ODER # scp -r neue_dateien/* user@server:/var/www/pointcab_webexport_server/nodejs_space/ # 4. Abhängigkeiten aktualisieren npm install # 5. TypeScript kompilieren npm run build # 6. PM2 neustarten pm2 restart pointcab-server # 7. Status prüfen pm2 status curl http://localhost:3000/health ``` ## ⚙️ Umgebungsvariablen ### Erforderliche Variablen | Variable | Beschreibung | Beispiel | |----------|--------------|----------| | `PORT` | Server-Port | `3000` | | `NODE_ENV` | Umgebung | `production` | | `DATABASE_URL` | PostgreSQL-Verbindung | `postgresql://user:pass@localhost:5432/db` | | `UPLOAD_DIR` | Upload-Verzeichnis | `/var/www/.../uploads` | | `SESSION_SECRET` | Session-Verschlüsselung | `mindestens-32-zeichen` | | `ADMIN_PASSWORD` | Admin-Zugang | `sicheres-passwort` | ### .env-Beispiel ```env PORT=3000 NODE_ENV=production DATABASE_URL="postgresql://pointcab_user:password@localhost:5432/pointcab_db" UPLOAD_DIR=/var/www/pointcab_webexport_server/nodejs_space/uploads SESSION_SECRET=ihr-geheimer-session-schluessel-mindestens-32-zeichen ADMIN_PASSWORD=IhrAdminPasswort ``` ## 🗄️ Datenbank-Migration ### Bei Schema-Änderungen ```bash cd /var/www/pointcab_webexport_server/nodejs_space # Prisma-Client neu generieren npx prisma generate # Schema anwenden (ohne Datenverlust) npx prisma db push # ODER: Migration erstellen und anwenden npx prisma migrate deploy ``` ### Datenbank-Schema prüfen ```bash # Aktuelles Schema anzeigen npx prisma studio # Oder via SQL sudo -u postgres psql -d pointcab_db -c "\d project" ``` ## 🔄 PM2-Konfiguration ### ecosystem.config.js erstellen (Optional) ```bash cat > /var/www/pointcab_webexport_server/nodejs_space/ecosystem.config.js << 'EOF' module.exports = { apps: [{ name: 'pointcab-server', script: './dist/main.js', instances: 1, exec_mode: 'fork', autorestart: true, watch: false, max_memory_restart: '1G', env_production: { NODE_ENV: 'production', PORT: 3000 } }] }; EOF ``` ### PM2-Befehle ```bash # Mit ecosystem.config.js starten pm2 start ecosystem.config.js --env production # Status pm2 status # Logs pm2 logs pointcab-server # Neustart pm2 restart pointcab-server # Stop pm2 stop pointcab-server # Löschen pm2 delete pointcab-server # Autostart speichern pm2 save ``` ## 🌐 Nginx Proxy Manager Setup ### Proxy Host Konfiguration 1. **Nginx Proxy Manager öffnen:** `http://server-ip:81` 2. **Neuen Proxy Host hinzufügen:** - Domain Names: `pointcab-webexport.ihre-domain.de` - Scheme: `http` - Forward Hostname/IP: `localhost` - Forward Port: `3000` - Websockets Support: ☑️ aktivieren 3. **SSL konfigurieren:** - SSL Tab öffnen - Request a new SSL Certificate - Force SSL: ☑️ aktivieren - HTTP/2 Support: ☑️ aktivieren ### Custom Nginx Konfiguration (Optional) ```nginx # Größere Uploads erlauben client_max_body_size 500M; # Timeout erhöhen proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; ``` ## ✅ Deployment-Checkliste ### Vor dem Deployment - [ ] Backup erstellt - [ ] Änderungen getestet - [ ] .env-Datei aktuell ### Nach dem Deployment - [ ] PM2 läuft (`pm2 status`) - [ ] Health-Check erfolgreich (`curl localhost:3000/health`) - [ ] Admin-Dashboard erreichbar - [ ] Upload-Funktion getestet - [ ] Logs geprüft (`pm2 logs`) ## 🔙 Rollback ### Bei Problemen ```bash # Letztes Backup finden ls -la /var/www/pointcab_webexport_server/backups/ # Backup wiederherstellen BACKUP="/var/www/pointcab_webexport_server/backups/YYYYMMDD_HHMMSS" cp -r "$BACKUP/src/" /var/www/pointcab_webexport_server/nodejs_space/ cp -r "$BACKUP/dist/" /var/www/pointcab_webexport_server/nodejs_space/ # Server neustarten pm2 restart pointcab-server ``` ## 📊 Monitoring ### Logs überwachen ```bash # Echtzeit-Logs pm2 logs pointcab-server # Letzte 100 Zeilen pm2 logs pointcab-server --lines 100 # Fehler-Logs pm2 logs pointcab-server --err ``` ### System-Ressourcen ```bash # PM2 Monitoring pm2 monit # Speicherverbrauch pm2 info pointcab-server ``` ## 🔒 Sicherheit beim Deployment 1. **Keine Secrets im Repository:** - `.env` ist in `.gitignore` - Passwörter niemals committen 2. **Backups vor Updates:** - Immer Backup erstellen - Backup-Pfad dokumentieren 3. **Test vor Produktion:** - Änderungen lokal testen - Staging-Umgebung nutzen (wenn vorhanden) --- **Siehe auch:** [MAINTENANCE.md](MAINTENANCE.md) für Wartungsaufgaben