diff --git a/DEPLOYMENT_SOCKET_IO.md b/DEPLOYMENT_SOCKET_IO.md index 744d30d..0757448 100644 --- a/DEPLOYMENT_SOCKET_IO.md +++ b/DEPLOYMENT_SOCKET_IO.md @@ -18,25 +18,34 @@ sudo cp /var/www/tt-tagebuch.de/apache.conf.example /etc/apache2/sites-available sudo systemctl restart apache2 ``` -### 3. Backend neu starten +### 3. SSL-Zertifikat-Berechtigungen setzen + +**WICHTIG:** Der Node.js-Prozess muss Zugriff auf die SSL-Zertifikate haben! + +```bash +cd /var/www/tt-tagebuch.de/backend +chmod +x scripts/fixCertPermissions.sh +sudo ./scripts/fixCertPermissions.sh +``` + +Dieses Skript: +- Erstellt die Gruppe `ssl-cert` (falls nicht vorhanden) +- Fügt den Service-Benutzer zur Gruppe hinzu +- Setzt die Berechtigungen für die Zertifikate + +### 4. Backend neu starten **WICHTIG:** Der Backend-Server muss neu gestartet werden, damit der HTTPS-Server auf Port 3051 läuft! ```bash -cd /var/www/tt-tagebuch.de/backend - # Falls als systemd-Service: -sudo systemctl restart tt-tagebuch-backend +sudo systemctl restart tt-tagebuch # Oder falls als PM2-Prozess: pm2 restart tt-tagebuch-backend - -# Oder falls direkt mit node: -# Stoppe den laufenden Prozess und starte neu: -# node server.js ``` -### 4. Prüfen, ob HTTPS-Server läuft +### 5. Prüfen, ob HTTPS-Server läuft ```bash # Prüfe, ob Port 3051 geöffnet ist @@ -55,7 +64,7 @@ Du solltest folgende Meldung sehen: 🚀 HTTPS-Server für Socket.IO läuft auf Port 3051 ``` -### 5. Diagnose-Skript ausführen +### 6. Diagnose-Skript ausführen ```bash cd /var/www/tt-tagebuch.de/backend diff --git a/backend/scripts/fixCertPermissions.sh b/backend/scripts/fixCertPermissions.sh new file mode 100644 index 0000000..bee33a1 --- /dev/null +++ b/backend/scripts/fixCertPermissions.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Skript zum Fixen der SSL-Zertifikat-Berechtigungen für Node.js + +CERT_DIR="/etc/letsencrypt/live/tt-tagebuch.de" +CERT_GROUP="ssl-cert" # Standard-Gruppe für SSL-Zertifikate + +# Prüfe, ob Zertifikate existieren +if [ ! -d "$CERT_DIR" ]; then + echo "❌ Zertifikat-Verzeichnis nicht gefunden: $CERT_DIR" + exit 1 +fi + +# Prüfe, ob ssl-cert-Gruppe existiert +if ! getent group "$CERT_GROUP" > /dev/null 2>&1; then + echo "⚠️ Gruppe '$CERT_GROUP' existiert nicht. Erstelle sie..." + sudo groupadd "$CERT_GROUP" +fi + +# Prüfe, welcher Benutzer den systemd-Service ausführt +SERVICE_USER=$(systemctl show -p User tt-tagebuch.service 2>/dev/null | cut -d= -f2) + +if [ -z "$SERVICE_USER" ]; then + echo "⚠️ Konnte Service-Benutzer nicht ermitteln. Verwende 'www-data' als Standard." + SERVICE_USER="www-data" +fi + +echo "🔧 Konfiguriere SSL-Zertifikat-Berechtigungen..." +echo " Service-Benutzer: $SERVICE_USER" +echo " Zertifikat-Verzeichnis: $CERT_DIR" + +# Füge Service-Benutzer zur ssl-cert-Gruppe hinzu +sudo usermod -a -G "$CERT_GROUP" "$SERVICE_USER" + +# Setze Gruppen-Berechtigungen für Zertifikate +echo "📜 Setze Berechtigungen für Zertifikate..." + +# Setze Gruppe für das Verzeichnis +sudo chgrp -R "$CERT_GROUP" "$CERT_DIR" + +# Setze Berechtigungen: Owner (root) kann lesen/schreiben, Gruppe kann lesen +sudo chmod 640 "$CERT_DIR/privkey.pem" +sudo chmod 644 "$CERT_DIR/fullchain.pem" +sudo chmod 644 "$CERT_DIR/cert.pem" +sudo chmod 644 "$CERT_DIR/chain.pem" + +# Setze auch für das archive-Verzeichnis (wo die Symlinks hinzeigen) +ARCHIVE_DIR="/etc/letsencrypt/archive/tt-tagebuch.de" +if [ -d "$ARCHIVE_DIR" ]; then + sudo chgrp -R "$CERT_GROUP" "$ARCHIVE_DIR" + sudo chmod 640 "$ARCHIVE_DIR/privkey*.pem" + sudo chmod 644 "$ARCHIVE_DIR/fullchain*.pem" + sudo chmod 644 "$ARCHIVE_DIR/cert*.pem" + sudo chmod 644 "$ARCHIVE_DIR/chain*.pem" +fi + +echo "✅ Berechtigungen gesetzt!" +echo "" +echo "⚠️ WICHTIG: Der Service muss neu gestartet werden, damit die Gruppenänderung wirksam wird:" +echo " sudo systemctl restart tt-tagebuch" +echo "" +echo "📋 Prüfe Berechtigungen:" +ls -la "$CERT_DIR/privkey.pem" +ls -la "$CERT_DIR/fullchain.pem" +