Add production build optimizations to Vite configuration; set target, output directory, and minification options for improved performance
This commit is contained in:
345
scripts/README.md
Normal file
345
scripts/README.md
Normal file
@@ -0,0 +1,345 @@
|
||||
# TimeClock v3 - Server-Management Scripts
|
||||
|
||||
Dieses Verzeichnis enthält hilfreiche Wartungs- und Management-Scripts für den Produktions-Server.
|
||||
|
||||
## Übersicht
|
||||
|
||||
| Script | Beschreibung | Verwendung |
|
||||
|--------|--------------|------------|
|
||||
| `backup-timeclock.sh` | Erstellt automatische Datenbank-Backups | Täglich per Cronjob |
|
||||
| `health-check.sh` | Überwacht API-Verfügbarkeit | Alle 5 Min per Cronjob |
|
||||
| `restore-backup.sh` | Stellt Datenbank-Backup wieder her | Manuell bei Bedarf |
|
||||
|
||||
---
|
||||
|
||||
## 1. backup-timeclock.sh
|
||||
|
||||
Erstellt automatische komprimierte Backups der MySQL-Datenbank.
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Auf den Server kopieren
|
||||
sudo cp scripts/backup-timeclock.sh /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/backup-timeclock.sh
|
||||
|
||||
# Cronjob einrichten (täglich um 2 Uhr)
|
||||
sudo crontab -e
|
||||
```
|
||||
|
||||
Füge folgende Zeile hinzu:
|
||||
```cron
|
||||
0 2 * * * /usr/local/bin/backup-timeclock.sh >> /var/log/timeclock/backup.log 2>&1
|
||||
```
|
||||
|
||||
### Manuell ausführen
|
||||
|
||||
```bash
|
||||
/usr/local/bin/backup-timeclock.sh
|
||||
```
|
||||
|
||||
### Features
|
||||
|
||||
- ✅ Automatische Datenbank-Backups mit Kompression
|
||||
- ✅ Konfigurierbare Retention (Standard: 30 Tage)
|
||||
- ✅ Optional: Code-Backups
|
||||
- ✅ Optional: Remote-Backup per rsync
|
||||
- ✅ Optional: E-Mail-Benachrichtigungen
|
||||
- ✅ Backup-Statistiken
|
||||
|
||||
### Konfiguration
|
||||
|
||||
Bearbeite die Variablen am Anfang des Scripts:
|
||||
|
||||
```bash
|
||||
BACKUP_DIR="/var/backups/timeclock"
|
||||
RETENTION_DAYS=30
|
||||
BACKUP_CODE=false # true für Code-Backups
|
||||
REMOTE_BACKUP=false # true für Remote-Backup
|
||||
SEND_EMAIL=false # true für E-Mail-Benachrichtigung
|
||||
```
|
||||
|
||||
### Backup-Dateien
|
||||
|
||||
Backups werden gespeichert unter:
|
||||
- Datenbank: `/var/backups/timeclock/timeclock_db_YYYYMMDD_HHMMSS.sql.gz`
|
||||
- Code: `/var/backups/timeclock/timeclock_code_YYYYMMDD_HHMMSS.tar.gz`
|
||||
|
||||
---
|
||||
|
||||
## 2. health-check.sh
|
||||
|
||||
Überwacht die Verfügbarkeit des Backend-API und startet den Service bei Bedarf automatisch neu.
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Auf den Server kopieren
|
||||
sudo cp scripts/health-check.sh /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/health-check.sh
|
||||
|
||||
# Cronjob einrichten (alle 5 Minuten)
|
||||
crontab -e
|
||||
```
|
||||
|
||||
Füge folgende Zeile hinzu:
|
||||
```cron
|
||||
*/5 * * * * /usr/local/bin/health-check.sh >> /var/log/timeclock/health-check.log 2>&1
|
||||
```
|
||||
|
||||
### Manuell ausführen
|
||||
|
||||
```bash
|
||||
/usr/local/bin/health-check.sh
|
||||
```
|
||||
|
||||
### Features
|
||||
|
||||
- ✅ Prüft `/api/health` Endpunkt
|
||||
- ✅ Automatischer Neustart bei Ausfall
|
||||
- ✅ Mehrere Retry-Versuche (Standard: 3)
|
||||
- ✅ Unterstützt PM2 und systemd
|
||||
- ✅ Optional: E-Mail/Webhook-Benachrichtigungen
|
||||
- ✅ Ressourcen-Monitoring (CPU/RAM/Disk)
|
||||
|
||||
### Konfiguration
|
||||
|
||||
```bash
|
||||
API_URL="http://localhost:3010/api/health"
|
||||
USE_PM2=true # false für systemd
|
||||
MAX_RETRIES=3
|
||||
RETRY_DELAY=5
|
||||
SEND_EMAIL=false # true für E-Mail-Benachrichtigung
|
||||
```
|
||||
|
||||
### Benachrichtigungen
|
||||
|
||||
Das Script kann bei Ausfällen Benachrichtigungen senden via:
|
||||
- E-Mail (benötigt `mail` command)
|
||||
- Webhook (Discord, Slack, etc.)
|
||||
|
||||
Konfiguriere die entsprechenden Variablen im Script:
|
||||
|
||||
```bash
|
||||
SEND_EMAIL=true
|
||||
EMAIL_TO="admin@tsschulz.de"
|
||||
|
||||
WEBHOOK_URL="https://discord.com/api/webhooks/..."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. restore-backup.sh
|
||||
|
||||
Interaktives Script zum Wiederherstellen von Datenbank-Backups.
|
||||
|
||||
### Verwendung
|
||||
|
||||
```bash
|
||||
# Interaktive Auswahl
|
||||
sudo /var/www/timeclock/scripts/restore-backup.sh
|
||||
|
||||
# Spezifisches Backup wiederherstellen
|
||||
sudo /var/www/timeclock/scripts/restore-backup.sh timeclock_db_20251018_020000.sql.gz
|
||||
|
||||
# Mit vollständigem Pfad
|
||||
sudo /var/www/timeclock/scripts/restore-backup.sh /var/backups/timeclock/timeclock_db_20251018_020000.sql.gz
|
||||
```
|
||||
|
||||
### Features
|
||||
|
||||
- ✅ Interaktive Backup-Auswahl
|
||||
- ✅ Sicherheitskopie vor Restore
|
||||
- ✅ Konfirmations-Prompts
|
||||
- ✅ Automatisches Service-Neustart (optional)
|
||||
- ✅ Datenbank-Statistiken nach Restore
|
||||
|
||||
### Ablauf
|
||||
|
||||
1. Zeigt Liste verfügbarer Backups
|
||||
2. Erstellt Sicherheitskopie der aktuellen DB
|
||||
3. Bestätigung erforderlich
|
||||
4. Restore durchführen
|
||||
5. Optional: Service neu starten
|
||||
|
||||
### ⚠️ WARNUNG
|
||||
|
||||
Das Restore überschreibt die aktuelle Datenbank! Eine Sicherheitskopie wird automatisch erstellt, aber sei vorsichtig!
|
||||
|
||||
---
|
||||
|
||||
## Logs
|
||||
|
||||
Alle Scripts loggen nach:
|
||||
- `/var/log/timeclock/backup.log` - Backup-Logs
|
||||
- `/var/log/timeclock/health-check.log` - Health-Check-Logs
|
||||
|
||||
### Logs ansehen
|
||||
|
||||
```bash
|
||||
# Backup-Logs
|
||||
tail -f /var/log/timeclock/backup.log
|
||||
|
||||
# Health-Check-Logs
|
||||
tail -f /var/log/timeclock/health-check.log
|
||||
|
||||
# Alle Logs
|
||||
tail -f /var/log/timeclock/*.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cronjob-Übersicht
|
||||
|
||||
Empfohlene Cronjob-Konfiguration:
|
||||
|
||||
```cron
|
||||
# TimeClock Maintenance Jobs
|
||||
|
||||
# Backup: Täglich um 2 Uhr morgens
|
||||
0 2 * * * /usr/local/bin/backup-timeclock.sh >> /var/log/timeclock/backup.log 2>&1
|
||||
|
||||
# Health-Check: Alle 5 Minuten
|
||||
*/5 * * * * /usr/local/bin/health-check.sh >> /var/log/timeclock/health-check.log 2>&1
|
||||
|
||||
# Optional: Log-Rotation - Alte Logs löschen (älter als 90 Tage)
|
||||
0 3 * * 0 find /var/log/timeclock -name "*.log" -mtime +90 -delete
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Weitere nützliche Commands
|
||||
|
||||
### Backup-Verwaltung
|
||||
|
||||
```bash
|
||||
# Liste aller Backups
|
||||
ls -lh /var/backups/timeclock/
|
||||
|
||||
# Anzahl der Backups
|
||||
ls -1 /var/backups/timeclock/timeclock_db_*.sql.gz | wc -l
|
||||
|
||||
# Gesamtgröße der Backups
|
||||
du -sh /var/backups/timeclock/
|
||||
|
||||
# Ältestes Backup
|
||||
ls -t /var/backups/timeclock/timeclock_db_*.sql.gz | tail -1
|
||||
|
||||
# Neuestes Backup
|
||||
ls -t /var/backups/timeclock/timeclock_db_*.sql.gz | head -1
|
||||
|
||||
# Manuell alte Backups löschen (älter als 30 Tage)
|
||||
find /var/backups/timeclock -name "timeclock_db_*.sql.gz" -mtime +30 -delete
|
||||
```
|
||||
|
||||
### Service-Management
|
||||
|
||||
```bash
|
||||
# Mit PM2
|
||||
pm2 status
|
||||
pm2 logs timeclock-backend
|
||||
pm2 restart timeclock-backend
|
||||
pm2 monit
|
||||
|
||||
# Mit systemd
|
||||
sudo systemctl status timeclock
|
||||
sudo journalctl -u timeclock -f
|
||||
sudo systemctl restart timeclock
|
||||
```
|
||||
|
||||
### API-Tests
|
||||
|
||||
```bash
|
||||
# Health-Check
|
||||
curl http://localhost:3010/api/health
|
||||
|
||||
# Mit Details
|
||||
curl -s http://localhost:3010/api/health | jq
|
||||
|
||||
# Response-Zeit messen
|
||||
time curl -s http://localhost:3010/api/health > /dev/null
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Script läuft nicht
|
||||
|
||||
```bash
|
||||
# Berechtigungen prüfen
|
||||
ls -l /usr/local/bin/backup-timeclock.sh
|
||||
|
||||
# Ausführbar machen
|
||||
sudo chmod +x /usr/local/bin/backup-timeclock.sh
|
||||
|
||||
# Script-Fehler debuggen
|
||||
bash -x /usr/local/bin/backup-timeclock.sh
|
||||
```
|
||||
|
||||
### Cronjob läuft nicht
|
||||
|
||||
```bash
|
||||
# Cronjobs anzeigen
|
||||
crontab -l
|
||||
|
||||
# Cron-Logs prüfen
|
||||
sudo grep CRON /var/log/syslog
|
||||
|
||||
# Cronjob manuell testen
|
||||
/usr/local/bin/backup-timeclock.sh
|
||||
```
|
||||
|
||||
### Backup schlägt fehl
|
||||
|
||||
```bash
|
||||
# DB-Verbindung testen
|
||||
mysql -u timeclock -p -e "SHOW DATABASES;"
|
||||
|
||||
# .env Datei prüfen
|
||||
cat /var/www/timeclock/backend/.env
|
||||
|
||||
# Backup-Verzeichnis prüfen
|
||||
ls -ld /var/backups/timeclock
|
||||
|
||||
# Schreibrechte prüfen
|
||||
touch /var/backups/timeclock/test.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Regelmäßige Backups testen**
|
||||
- Teste mindestens monatlich ein Restore
|
||||
- Verifiziere Backup-Integrität
|
||||
|
||||
2. **Monitoring einrichten**
|
||||
- Health-Checks aktivieren
|
||||
- E-Mail-Benachrichtigungen konfigurieren
|
||||
|
||||
3. **Logs überwachen**
|
||||
- Prüfe regelmäßig die Log-Dateien
|
||||
- Implementiere Log-Rotation
|
||||
|
||||
4. **Off-Site Backups**
|
||||
- Aktiviere Remote-Backup in `backup-timeclock.sh`
|
||||
- Speichere Backups an einem anderen Ort
|
||||
|
||||
5. **Sicherheit**
|
||||
- Schütze Backup-Dateien (enthalten sensible Daten!)
|
||||
- Setze restriktive Berechtigungen
|
||||
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
Bei Problemen:
|
||||
1. Prüfe die Log-Dateien
|
||||
2. Teste Scripts manuell
|
||||
3. Siehe Haupt-Dokumentation: `../DEPLOYMENT.md`
|
||||
|
||||
---
|
||||
|
||||
**Automatisierte Wartung für sorgenfreien Betrieb! 🚀**
|
||||
|
||||
Reference in New Issue
Block a user