153 lines
3.7 KiB
Markdown
153 lines
3.7 KiB
Markdown
# 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)
|
|
|