pointcab_webexport/MAINTENANCE.md

346 lines
7.7 KiB
Markdown

# 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