pointcab_webexport/DEPLOYMENT.md

5.2 KiB

Deployment - PointCab Webexport Server

Diese Anleitung beschreibt den Deployment-Prozess für Updates und neue Versionen.

📋 Voraussetzungen

  • Server bereits installiert (siehe INSTALLATION.md)
  • SSH-Zugang zum Server
  • PM2 läuft

🚀 Standard-Deployment

Methode 1: Automatisches Deployment (empfohlen)

# Auf dem Server
cd /var/www/pointcab_webexport_server

# Deployment-Script ausführen
sudo ./scripts/deploy.sh

Methode 2: Manuelles Deployment

# 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

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

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

# 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)

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

# 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)

# 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

# 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

# Echtzeit-Logs
pm2 logs pointcab-server

# Letzte 100 Zeilen
pm2 logs pointcab-server --lines 100

# Fehler-Logs
pm2 logs pointcab-server --err

System-Ressourcen

# 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 für Wartungsaufgaben