Files
Ninjaserver/ssl-setup-guide.md
2025-09-23 14:13:24 +02:00

90 lines
2.0 KiB
Markdown

# SSL Setup für NinjaCross Server
## 1. Let's Encrypt SSL Zertifikat installieren
```bash
# Certbot installieren (Ubuntu/Debian)
sudo apt update
sudo apt install certbot python3-certbot-apache
# SSL Zertifikat anfordern
sudo certbot certonly --standalone -d ninja.reptilfpv.de
# Automatische Erneuerung einrichten
sudo crontab -e
# Füge hinzu: 0 12 * * * /usr/bin/certbot renew --quiet
```
## 2. Apache Module aktivieren
```bash
# Notwendige Apache Module aktivieren
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod headers
sudo a2enmod rewrite
# Apache neustarten
sudo systemctl restart apache2
```
## 3. VirtualHost konfigurieren
```bash
# SSL Konfiguration kopieren
sudo cp apache-ssl-config.conf /etc/apache2/sites-available/ninjaserver-ssl.conf
# Site aktivieren
sudo a2ensite ninjaserver-ssl.conf
# Standard-Site deaktivieren (optional)
sudo a2dissite 000-default.conf
# Apache Konfiguration testen
sudo apache2ctl configtest
# Apache neuladen
sudo systemctl reload apache2
```
## 4. Node.js Server anpassen (optional)
Ihr Node.js Server läuft weiterhin auf Port 3000 (localhost only).
Optional können Sie den Server auf localhost binden:
```javascript
// In server.js
server.listen(port, 'localhost', () => {
console.log(`🚀 Server läuft auf http://localhost:${port}`);
console.log(`🔒 HTTPS verfügbar über Apache Proxy`);
});
```
## 5. Firewall anpassen
```bash
# HTTPS Port öffnen
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
# Port 3000 nur für localhost (Sicherheit)
sudo ufw deny 3000
```
## 6. Testen
1. Öffne https://ninja.reptilfpv.de
2. Teste QR-Scanner → Kamera sollte funktionieren
3. Prüfe SSL-Rating: https://www.ssllabs.com/ssltest/
## Vorteile dieser Lösung:
**Automatische SSL-Erneuerung** mit Let's Encrypt
**Hohe Performance** durch Apache SSL-Terminierung
**Security Headers** für zusätzlichen Schutz
**WebSocket Support** für Live-Updates
**HTTP → HTTPS Redirect** automatisch
**Kamera-Zugriff** funktioniert in allen Browsern