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.
This commit is contained in:
Torsten Schulz (local)
2025-11-16 09:41:33 +01:00
parent ba5d6b14a8
commit 3ea2907d08
2 changed files with 84 additions and 10 deletions

View File

@@ -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

View File

@@ -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"