# 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 ```bash ./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): ```bash 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: ```apache 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] ``` Wichtig: Die WebSocket-Rewrite-Regeln sind für Socket.IO erforderlich! Nach Änderungen an der Apache-Konfiguration: ```bash sudo systemctl reload apache2 ``` ### 4. Server starten #### Option A: Manuell ```bash npm run start:prod ``` #### Option B: Als systemd Service (empfohlen) ```bash sudo ./install-service.sh sudo systemctl start singlechat sudo systemctl enable singlechat ``` ### 5. Service-Verwaltung ```bash # 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: ```bash # 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: ```bash ./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 ```bash # 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