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