add chapters and deploy script

This commit is contained in:
Lukas Cremer
2026-01-25 19:32:08 +01:00
parent 37b77fdb40
commit 61e0efaa68
8 changed files with 592 additions and 18 deletions

226
DEPLOY.md Normal file
View File

@@ -0,0 +1,226 @@
# MathQuest Deployment Anleitung
Diese Anleitung erklärt, wie du MathQuest auf deinem Server deployst.
## Voraussetzungen
- Server mit Ubuntu/Debian
- Node.js installiert (Version 14 oder höher)
- Nginx installiert
- SSL-Zertifikat für lydix.de (Let's Encrypt)
- Root-Zugriff oder sudo-Rechte
## Schritt 1: Dateien auf den Server kopieren
### Option A: Mit SCP (vom lokalen Rechner)
```bash
# Vom lokalen Rechner aus:
scp -r /home/lukas/nerd/mathquest/* user@dein-server:/var/www/mathquest/
```
### Option B: Mit Git (wenn du ein Repository hast)
```bash
# Auf dem Server:
cd /var/www
git clone dein-repo-url mathquest
cd mathquest
```
## Schritt 2: Dependencies installieren
```bash
cd /var/www/mathquest
npm install --production
```
## Schritt 3: Berechtigungen setzen
```bash
chown -R www-data:www-data /var/www/mathquest
chmod +x /var/www/mathquest/server.js
```
## Schritt 4: systemd Service installieren
```bash
# Service-Datei kopieren
sudo cp /var/www/mathquest/mathquest.service /etc/systemd/system/
# Service aktivieren und starten
sudo systemctl daemon-reload
sudo systemctl enable mathquest
sudo systemctl start mathquest
# Status prüfen
sudo systemctl status mathquest
```
## Schritt 5: Nginx konfigurieren
### SSL-Zertifikat prüfen
Da du einen Wildcard DNS Eintrag hast, sollte ein Wildcard-Zertifikat für `*.lydix.de` existieren.
Prüfe deine Zertifikate:
```bash
sudo certbot certificates
```
Finde den korrekten Pfad (oft `/etc/letsencrypt/live/lydix.de/` oder `/etc/letsencrypt/live/lydix.de-0001/`):
```bash
ls -la /etc/letsencrypt/live/
```
Falls der Pfad anders ist, passe die SSL-Zertifikat-Pfade in `nginx-mathquest.conf` an.
### Nginx-Konfiguration installieren
```bash
# Konfiguration kopieren
sudo cp /var/www/mathquest/nginx-mathquest.conf /etc/nginx/sites-available/mathquest.conf
# Symlink erstellen
sudo ln -s /etc/nginx/sites-available/mathquest.conf /etc/nginx/sites-enabled/
# Konfiguration testen
sudo nginx -t
# Nginx neu laden
sudo systemctl reload nginx
```
## Schritt 6: DNS konfigurieren
Da du einen Wildcard DNS Eintrag hast (`*.lydix.de`), ist kein separater A-Record für `mathquest.lydix.de` nötig. Die Subdomain sollte automatisch funktionieren.
Falls der Wildcard-Eintrag noch nicht existiert, erstelle einen:
```
*.lydix.de A deine-server-ip
```
## Schritt 7: Firewall prüfen
Stelle sicher, dass Port 80 und 443 offen sind:
```bash
# UFW
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Oder iptables
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
```
## Automatisches Deployment
Du kannst auch das bereitgestellte Deployment-Script verwenden:
```bash
cd /var/www/mathquest
chmod +x deploy.sh
sudo ./deploy.sh
```
## Nützliche Befehle
### Service verwalten
```bash
# Status prüfen
sudo systemctl status mathquest
# Logs ansehen
sudo journalctl -u mathquest -f
# Service neustarten
sudo systemctl restart mathquest
# Service stoppen
sudo systemctl stop mathquest
# Service starten
sudo systemctl start mathquest
```
### Nginx verwalten
```bash
# Konfiguration testen
sudo nginx -t
# Nginx neu laden
sudo systemctl reload nginx
# Nginx neustarten
sudo systemctl restart nginx
# Logs ansehen
sudo tail -f /var/log/nginx/mathquest-access.log
sudo tail -f /var/log/nginx/mathquest-error.log
```
## Troubleshooting
### Service startet nicht
```bash
# Prüfe die Logs
sudo journalctl -u mathquest -n 50
# Prüfe ob Port 3000 belegt ist
sudo netstat -tulpn | grep 3000
# Prüfe die Berechtigungen
ls -la /var/www/mathquest
```
### Nginx gibt 502 Bad Gateway
```bash
# Prüfe ob der Service läuft
sudo systemctl status mathquest
# Prüfe die Nginx-Logs
sudo tail -f /var/log/nginx/mathquest-error.log
# Prüfe ob Node.js auf Port 3000 lauscht
sudo netstat -tulpn | grep 3000
```
### SSL-Zertifikat Probleme
```bash
# Prüfe Zertifikat
sudo certbot certificates
# Erneuere Zertifikat falls nötig
sudo certbot renew
# Prüfe Zertifikat-Pfade in Nginx-Konfiguration
sudo cat /etc/nginx/sites-available/mathquest.conf | grep ssl_certificate
```
## Updates durchführen
1. Dateien auf dem Server aktualisieren
2. Dependencies aktualisieren (falls nötig):
```bash
cd /var/www/mathquest
npm install --production
```
3. Service neustarten:
```bash
sudo systemctl restart mathquest
```
## Backup
Wichtig: Backupe regelmäßig die `tasks.json` Datei, da dort alle Antworten gespeichert werden:
```bash
# Backup erstellen
cp /var/www/mathquest/tasks.json /var/www/mathquest/tasks.json.backup
```