pointcab_webexport/DEPLOYMENT.md

260 lines
5.2 KiB
Markdown

# 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