# Deployment-Anleitung für Harheimer TC Website ## Wichtig: Produktivdaten schützen! Die folgenden Dateien enthalten **Produktivdaten** und dürfen beim Deployment **NICHT überschrieben** werden: ### Server-Daten (authentifizierungskritisch): - `server/data/users.json` - Benutzerkonten & Passwörter - `server/data/sessions.json` - Aktive Sessions - `server/data/members.json` - Manuelle Mitgliederliste - `server/data/news.json` - Interne & öffentliche News ### Public-Daten (CSV): - `public/data/termine.csv` - Vereinstermine - `public/data/mannschaften.csv` - Team-Informationen - `public/data/spielsysteme.csv` - Spielsysteme - `public/data/vereinsmeisterschaften.csv` - Meisterschaftsergebnisse --- ## Deployment-Methode 1: Automatisches Script (Empfohlen) ```bash cd /var/www/harheimertc ./deploy-production.sh ``` Das Script: 1. ✅ Pullt neuesten Code 2. ✅ **Sichert alle Produktivdaten** 3. ✅ Installiert Dependencies 4. ✅ Löscht `.output/` (Build-Artefakte) 5. ✅ Baut neu 6. ✅ **Stellt Produktivdaten wieder her** 7. ✅ Startet PM2 neu --- ## Deployment-Methode 2: Manuell ```bash cd /var/www/harheimertc # 1. Backup erstellen mkdir -p .backup cp -r server/data .backup/ cp public/data/*.csv .backup/ # 2. Code aktualisieren git pull # 3. Dependencies installieren npm install # 4. Alten Build entfernen rm -rf .output # 5. Neu bauen npm run build # 6. Produktivdaten wiederherstellen cp -r .backup/data/* server/data/ cp .backup/*.csv public/data/ # 7. Cleanup rm -rf .backup # 8. PM2 neu starten pm2 restart harheimertc ``` --- ## Bei Git-Merge-Konflikten in `.output/` Falls Git meldet, dass `.output/` Dateien überschrieben würden: ```bash # Einfach löschen und neu bauen rm -rf .output git pull npm run build pm2 restart harheimertc ``` **Wichtig:** Vorher Produktivdaten sichern (siehe oben)! --- ## Erste Einrichtung auf neuem Server ```bash # 1. Repository klonen git clone git@tsschulz.de:/home/git/harheimertc.git cd harheimertc # 2. Dependencies installieren npm install # 3. Produktivdaten erstellen (nur beim ersten Mal!) mkdir -p server/data echo '[]' > server/data/users.json echo '[]' > server/data/sessions.json echo '[]' > server/data/members.json echo '[]' > server/data/news.json # 4. Admin-Benutzer erstellen (siehe README.md) # 5. Bauen npm run build # 6. PM2 einrichten pm2 start harheimertc.config.cjs pm2 save ``` --- ## Notizen - **`.output/` ist NICHT im Git** (steht in `.gitignore`) - **Produktivdaten SIND im Git** (werden versioniert) - **Bei Deployment:** Immer Backup → Build → Restore - **Bei Problemen:** Script verwenden oder manuell Daten sichern --- ## Security Operations (Empfehlungen) ### Sicherheitsupdates (OS/Libs) - **OS Updates**: mindestens monatlich (besser: automatisiert via unattended-upgrades) + Reboot-Fenster einplanen - **Node/NPM Dependencies**: Renovate ist vorhanden (`renovate.json`). Zusätzlich regelmäßig `npm audit` prüfen und Updates einspielen. ### Backup / Wiederherstellung - **Backup-Inhalt**: mindestens `server/data/` + `public/data/` (+ optional `public/uploads/` / `server/data/galerie/`) - **Frequenz**: täglich (inkrementell) + wöchentlich (voll) als Richtwert - **Ablage**: getrennt vom Server (Offsite), z.B. verschlüsselt (restic/borg) auf Storage - **Restore-Drill**: mindestens quartalsweise Wiederherstellung testen ### SSH-Härtung - **Nur Key-Auth** (PasswordAuthentication=no), Root-Login deaktivieren (PermitRootLogin=no) - **2FA/MFA** optional via SSH-CA / PAM / Bastion Host - **Fail2ban** oder äquivalente Schutzmaßnahmen für SSH in Betracht ziehen ### Logging / Audit - Audit-Log (JSONL) liegt unter `server/data/audit.log.jsonl` (abschaltbar via `AUDIT_LOG_ENABLED=false`) - Empfehlung: Log-Rotation + gesicherte Aufbewahrung (z.B. journald/rotate + offsite)