346 lines
7.7 KiB
Markdown
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
|