7.7 KiB
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
-
Backup erstellen
./scripts/backup.sh -
Neue Version holen
git pull origin main -
Abhängigkeiten aktualisieren
npm install -
Kompilieren
npm run build -
Server neustarten
pm2 restart pointcab-server -
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
-
Niemals löschen:
/var/www/pointcab_webexport_server/nodejs_space/.env- PostgreSQL
pointcab_dbDatenbank uploads/Verzeichnis mit aktiven Projekten
-
Vor dem Löschen:
- Immer Backup erstellen
- Prüfen ob Dateien noch benötigt werden
-
Bei Unsicherheit:
- Erst verschieben, dann löschen
- Logs aufbewahren bis sicher
Siehe auch: DEPLOYMENT.md für Update-Prozesse