Files
singlechat/README-PRODUCTION.md

163 lines
3.6 KiB
Markdown

# 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
<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:
```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