# WebSocket-Konfiguration für direkte Verbindungen

## Port-Aufteilung

- **Port 2020**: API (HTTP, intern, über Apache-Proxy)
- **Port 4443**: Socket.io (HTTPS, extern, direkt erreichbar)
- **Port 4551**: Daemon-WebSocket (HTTPS, extern, direkt erreichbar)

## Umgebungsvariablen für Backend-Server (Socket.io auf Port 4443)

Füge diese Variablen zur Backend `.env` oder Systemd-Service-Datei hinzu:

```bash
# Socket.io HTTPS-Server
SOCKET_IO_PORT=4443
SOCKET_IO_TLS=1
SOCKET_IO_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem
SOCKET_IO_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem
# Optional:
# SOCKET_IO_TLS_CA_PATH=/etc/letsencrypt/live/www.your-part.de/chain.pem
```

## Umgebungsvariablen für Daemon (Port 4551)

Füge diese Variablen zur Daemon-Systemd-Service-Datei hinzu:

```bash
# Daemon WebSocket HTTPS-Server
DAEMON_PORT=4551
DAEMON_TLS=1
DAEMON_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem
DAEMON_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem
# Optional:
# DAEMON_TLS_CA_PATH=/etc/letsencrypt/live/www.your-part.de/chain.pem
```

## Prüfen der Konfiguration

### 1. Backend-Server-Logs prüfen

```bash
sudo journalctl -u yourpart-backend -n 50 -f
```

Du solltest sehen:
- `[Socket.io] HTTPS-Server für Socket.io konfiguriert auf Port 4443`
- `[Socket.io] HTTPS-Server läuft auf Port 4443 (direkt erreichbar)`

Wenn du stattdessen siehst:
- `[Socket.io] TLS nicht konfiguriert - Socket.io wird nicht verfügbar sein`

Dann sind die Umgebungsvariablen nicht gesetzt.

### 2. Ports prüfen

```bash
sudo netstat -tlnp | grep -E "(4443|4551|2020)"
```

Du solltest sehen:
- Port 2020: Backend API (HTTP)
- Port 4443: Backend Socket.io (HTTPS)
- Port 4551: Daemon WebSocket (HTTPS)

### 3. Firewall prüfen

```bash
sudo ufw status | grep -E "(4443|4551)"
```

Beide Ports sollten erlaubt sein.

## Systemd-Service-Dateien aktualisieren

### Backend-Service (`/etc/systemd/system/yourpart-backend.service`)

Stelle sicher, dass die Umgebungsvariablen in der `[Service]`-Sektion gesetzt sind:

```ini
[Service]
Environment="SOCKET_IO_PORT=4443"
Environment="SOCKET_IO_TLS=1"
Environment="SOCKET_IO_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem"
Environment="SOCKET_IO_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem"
```

### Daemon-Service (`/etc/systemd/system/yourpart-daemon.service`)

Stelle sicher, dass die Umgebungsvariablen in der `[Service]`-Sektion gesetzt sind:

```ini
[Service]
Environment="DAEMON_PORT=4551"
Environment="DAEMON_TLS=1"
Environment="DAEMON_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem"
Environment="DAEMON_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem"
```

Nach dem Ändern der Service-Dateien:

```bash
sudo systemctl daemon-reload
sudo systemctl restart yourpart-backend
sudo systemctl restart yourpart-daemon
```
