From 3ea2907d0862eb3b8f836884b544a018a327cddf Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 16 Nov 2025 09:41:33 +0100 Subject: [PATCH] Update Socket.IO deployment documentation to include SSL certificate permissions setup This commit revises the deployment documentation for the Socket.IO backend, adding a new section on setting SSL certificate permissions. It introduces a script to manage certificate access for the Node.js process, ensuring proper functionality of the HTTPS server on port 3051. The order of sections has also been adjusted for clarity, enhancing the overall deployment guidance. --- DEPLOYMENT_SOCKET_IO.md | 29 +++++++----- backend/scripts/fixCertPermissions.sh | 65 +++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 10 deletions(-) create mode 100644 backend/scripts/fixCertPermissions.sh 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" +