Files
mathquest/DEPLOY.md
2026-01-25 19:32:08 +01:00

4.5 KiB

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)

# 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)

# Auf dem Server:
cd /var/www
git clone dein-repo-url mathquest
cd mathquest

Schritt 2: Dependencies installieren

cd /var/www/mathquest
npm install --production

Schritt 3: Berechtigungen setzen

chown -R www-data:www-data /var/www/mathquest
chmod +x /var/www/mathquest/server.js

Schritt 4: systemd Service installieren

# 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:

sudo certbot certificates

Finde den korrekten Pfad (oft /etc/letsencrypt/live/lydix.de/ oder /etc/letsencrypt/live/lydix.de-0001/):

ls -la /etc/letsencrypt/live/

Falls der Pfad anders ist, passe die SSL-Zertifikat-Pfade in nginx-mathquest.conf an.

Nginx-Konfiguration installieren

# 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:

# 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:

cd /var/www/mathquest
chmod +x deploy.sh
sudo ./deploy.sh

Nützliche Befehle

Service verwalten

# 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

# 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

# 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

# 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

# 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):
    cd /var/www/mathquest
    npm install --production
    
  3. Service neustarten:
    sudo systemctl restart mathquest
    

Backup

Wichtig: Backupe regelmäßig die tasks.json Datei, da dort alle Antworten gespeichert werden:

# Backup erstellen
cp /var/www/mathquest/tasks.json /var/www/mathquest/tasks.json.backup