Remove deprecated scripts for adding head-matter to wt_config.xml, including Python and Bash implementations, to streamline configuration management.
This commit is contained in:
162
README-PRODUCTION.md
Normal file
162
README-PRODUCTION.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user