pointcab_webexport/MAINTENANCE.md

7.7 KiB

Wartung & Bereinigung - PointCab Webexport Server

Diese Anleitung beschreibt regelmäßige Wartungsaufgaben und Bereinigung.

📋 Übersicht - Was behalten, was löschen?

Behalten (wichtig!)

Verzeichnis/Datei Grund
/var/www/pointcab_webexport_server/nodejs_space/ Server-Code
/var/www/pointcab_webexport_server/nodejs_space/uploads/ Projekt-Dateien
/var/www/pointcab_webexport_server/nodejs_space/.env Konfiguration
/var/www/pointcab_webexport_server/nodejs_space/prisma/ DB-Schema
PostgreSQL pointcab_db Produktions-Datenbank

🗑️ Kann gelöscht werden

Verzeichnis/Datei Grund
/var/www/pointcab_webexport_server/backups/ (alt) Alte Backups
*.log Dateien Logs
/tmp/* Temporäre Dateien
Test-Datenbanken Nicht benötigt
Alte dist/ Backups Nach erfolgreichem Deployment

🧹 Systembereinigung

Automatisches Bereinigungsscript

cd /var/www/pointcab_webexport_server
sudo ./scripts/cleanup.sh

Manuelle Bereinigung

1. Alte Backups löschen

# Backups älter als 30 Tage löschen
find /var/www/pointcab_webexport_server/backups/ -type d -mtime +30 -exec rm -rf {} \;

# Oder spezifisches Backup
rm -rf /var/www/pointcab_webexport_server/backups/20260101_120000

2. Log-Dateien bereinigen

# PM2-Logs rotieren
pm2 flush

# Alte Logs löschen
find /var/log -name "*.log" -mtime +7 -delete

# PM2-Log-Größe begrenzen (in ecosystem.config.js)
# max_size: '10M'

3. Temporäre Dateien

# Temporäre Upload-Dateien
find /tmp -name "upload_*" -mtime +1 -delete

# npm Cache leeren
npm cache clean --force

4. Abgelaufene Projekte

# Liste abgelaufener Projekte
cd /var/www/pointcab_webexport_server/nodejs_space
sudo -u postgres psql -d pointcab_db -c "SELECT id, name, shareid, expirydate FROM project WHERE expirydate < NOW();"

# Abgelaufene Projekte löschen (Vorsicht!)
# Dies muss über das Admin-Dashboard erfolgen

🗄️ Datenbank-Prüfung

Datenbank-Prüfungsscript

cd /var/www/pointcab_webexport_server
sudo ./scripts/db-check.sh

Manuelle Prüfungen

Schema prüfen

# Als postgres-Benutzer
sudo -u postgres psql -d pointcab_db

# Tabellen anzeigen
\dt

# Schema der project-Tabelle
\d project

# Beenden
\q

Erwartetes Schema

                                     Table "public.project"
    Column    |            Type             | Collation | Nullable |      Default
--------------+-----------------------------+-----------+----------+------------------
 id           | text                        |           | not null |
 name         | text                        |           | not null |
 shareid      | text                        |           | not null |
 password     | text                        |           | not null |
 htmlfilename | text                        |           |          |  <-- NULLABLE!
 uploaddate   | timestamp(3) without time zone |        | not null |
 expirydate   | timestamp(3) without time zone |        |          |
 createdat    | timestamp(3) without time zone |        | not null |

Wichtig: htmlfilename muss nullable sein für Multi-HTML-Unterstützung!

Benutzer prüfen

# Alle PostgreSQL-Benutzer
sudo -u postgres psql -c "\du"

# Berechtigungen prüfen
sudo -u postgres psql -d pointcab_db -c "SELECT * FROM pg_roles WHERE rolname = 'pointcab_user';"

Datenbankgröße

# Größe aller Datenbanken
sudo -u postgres psql -c "SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) FROM pg_database;"

# Größe der Tabellen
sudo -u postgres psql -d pointcab_db -c "SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;"

🗑️ Alte Datenbanken löschen

Test-Datenbanken identifizieren

# Alle Datenbanken auflisten
sudo -u postgres psql -c "\l"

Nicht benötigte Datenbanken löschen

# Beispiel: Test-Datenbank löschen
sudo -u postgres psql -c "DROP DATABASE IF EXISTS test_db;"

# VORSICHT: Niemals pointcab_db löschen!

Produktions-Datenbanken

Behalten:

  • pointcab_db (Produktions-Datenbank)
  • postgres (System-Datenbank)

Kann gelöscht werden:

  • test_* Datenbanken
  • Alte Entwicklungs-Datenbanken

📊 Backup-Strategie

Datenbank-Backup

# Komplettes Backup
sudo -u postgres pg_dump pointcab_db > /var/www/pointcab_webexport_server/backups/db_$(date +%Y%m%d).sql

# Mit Komprimierung
sudo -u postgres pg_dump pointcab_db | gzip > /var/www/pointcab_webexport_server/backups/db_$(date +%Y%m%d).sql.gz

Uploads-Backup

# Uploads sichern
tar -czf /var/www/pointcab_webexport_server/backups/uploads_$(date +%Y%m%d).tar.gz \
    /var/www/pointcab_webexport_server/nodejs_space/uploads/

Automatisches Backup (Cronjob)

# Crontab bearbeiten
crontab -e

# Tägliches Backup um 3:00 Uhr
0 3 * * * /var/www/pointcab_webexport_server/scripts/backup.sh

Backup-Script erstellen

cat > /var/www/pointcab_webexport_server/scripts/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/var/www/pointcab_webexport_server/backups"
DATE=$(date +%Y%m%d_%H%M%S)

# Datenbank
sudo -u postgres pg_dump pointcab_db | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"

# Uploads
tar -czf "$BACKUP_DIR/uploads_$DATE.tar.gz" \
    -C /var/www/pointcab_webexport_server/nodejs_space uploads/

# Alte Backups löschen (älter als 30 Tage)
find "$BACKUP_DIR" -name "*.gz" -mtime +30 -delete

echo "Backup erstellt: $DATE"
EOF

chmod +x /var/www/pointcab_webexport_server/scripts/backup.sh

Backup wiederherstellen

# Datenbank
gunzip -c backup.sql.gz | sudo -u postgres psql pointcab_db

# Uploads
tar -xzf uploads_backup.tar.gz -C /var/www/pointcab_webexport_server/nodejs_space/

🔄 Update-Prozess

Standard-Update

  1. Backup erstellen

    ./scripts/backup.sh
    
  2. Neue Version holen

    git pull origin main
    
  3. Abhängigkeiten aktualisieren

    npm install
    
  4. Kompilieren

    npm run build
    
  5. Server neustarten

    pm2 restart pointcab-server
    
  6. Prüfen

    pm2 status
    curl localhost:3000/health
    

Bei Schema-Änderungen

# Nach Schema-Änderungen
npx prisma generate
npx prisma db push
npm run build
pm2 restart pointcab-server

📅 Wartungsplan

Täglich

  • PM2-Status prüfen: pm2 status
  • Logs auf Fehler prüfen: pm2 logs --err

Wöchentlich

  • Backup prüfen
  • Speicherplatz prüfen: df -h
  • Abgelaufene Projekte überprüfen

Monatlich

  • Alte Backups löschen
  • Logs rotieren
  • System-Updates: apt update && apt upgrade
  • Datenbank-Größe prüfen

Vierteljährlich

  • Sicherheits-Updates prüfen
  • SSL-Zertifikat erneuern (falls nicht automatisch)
  • Vollständiger System-Test

🔍 Monitoring-Befehle

# Server-Status
pm2 status

# Ressourcen-Verbrauch
pm2 monit

# Speicherplatz
df -h

# RAM-Verbrauch
free -h

# Aktive Verbindungen
netstat -tlnp | grep 3000

# PostgreSQL-Verbindungen
sudo -u postgres psql -c "SELECT count(*) FROM pg_stat_activity;"

⚠️ Warnungen

  1. Niemals löschen:

    • /var/www/pointcab_webexport_server/nodejs_space/.env
    • PostgreSQL pointcab_db Datenbank
    • uploads/ Verzeichnis mit aktiven Projekten
  2. Vor dem Löschen:

    • Immer Backup erstellen
    • Prüfen ob Dateien noch benötigt werden
  3. Bei Unsicherheit:

    • Erst verschieben, dann löschen
    • Logs aufbewahren bis sicher

Siehe auch: DEPLOYMENT.md für Update-Prozesse