3.6 KiB
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
.envDatei mit einem zufälligenSESSION_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.jskorrekt konfiguriert ist - Prüfe, ob
NODE_ENV=productiongesetzt ist
Session-Probleme
- Stelle sicher, dass
SESSION_SECRETin.envgesetzt ist - Prüfe, ob
secure: truefü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