# 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 ```bash cd /var/www/pointcab_webexport_server sudo ./scripts/cleanup.sh ``` ### Manuelle Bereinigung #### 1. Alte Backups löschen ```bash # 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 ```bash # 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 ```bash # Temporäre Upload-Dateien find /tmp -name "upload_*" -mtime +1 -delete # npm Cache leeren npm cache clean --force ``` #### 4. Abgelaufene Projekte ```bash # 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 ```bash cd /var/www/pointcab_webexport_server sudo ./scripts/db-check.sh ``` ### Manuelle Prüfungen #### Schema prüfen ```bash # 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 ```bash # 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 ```bash # 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 ```bash # Alle Datenbanken auflisten sudo -u postgres psql -c "\l" ``` ### Nicht benötigte Datenbanken löschen ```bash # 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 ```bash # 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 ```bash # 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) ```bash # Crontab bearbeiten crontab -e # Tägliches Backup um 3:00 Uhr 0 3 * * * /var/www/pointcab_webexport_server/scripts/backup.sh ``` ### Backup-Script erstellen ```bash 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 ```bash # 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** ```bash ./scripts/backup.sh ``` 2. **Neue Version holen** ```bash git pull origin main ``` 3. **Abhängigkeiten aktualisieren** ```bash npm install ``` 4. **Kompilieren** ```bash npm run build ``` 5. **Server neustarten** ```bash pm2 restart pointcab-server ``` 6. **Prüfen** ```bash pm2 status curl localhost:3000/health ``` ### Bei Schema-Änderungen ```bash # 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 ```bash # 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](DEPLOYMENT.md) für Update-Prozesse