Files
singlechat/README-PRODUCTION.md

3.6 KiB

SingleChat Production Installation

Voraussetzungen

  • Node.js 18 oder höher
  • Apache mit mod_ssl und mod_proxy
  • SSL-Zertifikat (Let's Encrypt empfohlen)

Installation

1. Abhängigkeiten installieren und Build erstellen

./install.sh

Dieses Skript:

  • Installiert alle Node.js-Dependencies
  • Baut den Client für Production
  • Kopiert die gebauten Dateien nach docroot/dist
  • Erstellt eine .env Datei mit einem zufälligen SESSION_SECRET

2. .env Datei anpassen

Bearbeite die .env Datei und passe SESSION_SECRET an (falls noch nicht geschehen):

nano .env

Wichtig: Verwende ein starkes, zufälliges Secret für SESSION_SECRET!

3. Apache-Konfiguration

Die Apache-Konfiguration sollte bereits vorhanden sein. Stelle sicher, dass sie folgendes enthält:

<VirtualHost *:443>
    ServerName ypchat.net
    ServerAlias www.ypchat.net
    
    # SSL-Konfiguration
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/www.ypchat.net/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.ypchat.net/privkey.pem
    
    # Reverse Proxy zu Node.js
    ProxyPreserveHost On
    ProxyPass / http://localhost:4000/
    ProxyPassReverse / http://localhost:4000/
    
    # WebSocket-Support für Socket.IO
    RewriteEngine on
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteCond %{HTTP:Connection} upgrade [NC]
    RewriteRule ^/?(.*) "ws://localhost:4000/$1" [P,L]
</VirtualHost>

Wichtig: Die WebSocket-Rewrite-Regeln sind für Socket.IO erforderlich!

Nach Änderungen an der Apache-Konfiguration:

sudo systemctl reload apache2

4. Server starten

Option A: Manuell

npm run start:prod

Option B: Als systemd Service (empfohlen)

sudo ./install-service.sh
sudo systemctl start singlechat
sudo systemctl enable singlechat

5. Service-Verwaltung

# Status prüfen
sudo systemctl status singlechat

# Logs anzeigen
sudo journalctl -u singlechat -f

# Neustart
sudo systemctl restart singlechat

# Stoppen
sudo systemctl stop singlechat

Updates

Nach Code-Änderungen:

# 1. Client neu bauen
npm run build

# 2. Dateien kopieren
cp -r client/dist docroot/

# 3. Server neustarten
sudo systemctl restart singlechat

Oder alles in einem Schritt:

./install.sh && sudo systemctl restart singlechat

Troubleshooting

Socket.IO-Verbindung schlägt fehl

  • Prüfe, ob die WebSocket-Rewrite-Regeln in Apache korrekt sind
  • Prüfe die Apache-Logs: sudo tail -f /var/log/apache2/error.log
  • Prüfe die Server-Logs: sudo journalctl -u singlechat -f

CORS-Fehler

  • Stelle sicher, dass die Domain in server/index.js korrekt konfiguriert ist
  • Prüfe, ob NODE_ENV=production gesetzt ist

Session-Probleme

  • Stelle sicher, dass SESSION_SECRET in .env gesetzt ist
  • Prüfe, ob secure: true für Cookies in Production aktiviert ist

Port bereits belegt

# Prüfe, welcher Prozess Port 4000 verwendet
sudo lsof -i :4000

# Beende den Prozess oder ändere PORT in .env

Umgebungsvariablen

Die folgenden Umgebungsvariablen können in .env gesetzt werden:

  • NODE_ENV: production (automatisch gesetzt)
  • PORT: 4000 (Standard)
  • SESSION_SECRET: Zufälliges Secret für Sessions (wird von install.sh generiert)

Sicherheit

  • SESSION_SECRET: Verwende ein starkes, zufälliges Secret
  • HTTPS: Stelle sicher, dass SSL/TLS korrekt konfiguriert ist
  • Firewall: Port 4000 sollte nur von localhost erreichbar sein
  • Updates: Halte Node.js und alle Dependencies aktuell