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
- Dateien auf dem Server aktualisieren
- Dependencies aktualisieren (falls nötig):
cd /var/www/mathquest npm install --production - 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