# Deployment auf Linux-Server

## Server-Setup für `/var/www/html/livechat`

### 1. Dateien auf Server kopieren

```bash
# Auf deinem lokalen Rechner oder direkt auf dem Server
cd /var/www/html
# Falls livechat-Ordner nicht existiert:
mkdir -p livechat
cd livechat

# Dateien hochladen (via SCP, FTP, oder Git)
# Alle Dateien aus dem Projekt-Ordner hierher kopieren
```

### 2. Node.js und npm installieren (falls nicht vorhanden)

```bash
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# Prüfen
node --version
npm --version
```

### 3. Abhängigkeiten installieren

```bash
cd /var/www/html/livechat
npm install --production
```

### 4. Datenbank-Verzeichnis erstellen

```bash
mkdir -p server/data
chmod 755 server/data
```

### 5. Umgebungsvariablen einrichten

```bash
# .env-Datei erstellen
nano .env
```

Inhalt der `.env`:
```
PORT=3000
JWT_SECRET=dein-super-geheimer-schluessel-hier-aendere-diesen-wert
DB_DIR=/var/www/html/livechat/server/data
NODE_ENV=production
```

### 6. Server als Service einrichten (systemd)

```bash
sudo nano /etc/systemd/system/livechat.service
```

Inhalt:
```ini
[Unit]
Description=Live Chat System
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/html/livechat
Environment=NODE_ENV=production
ExecStart=/usr/bin/node server/index.js
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
```

Service aktivieren:
```bash
sudo systemctl daemon-reload
sudo systemctl enable livechat
sudo systemctl start livechat
sudo systemctl status livechat
```

### 7. Nginx als Reverse Proxy (optional, empfohlen)

```bash
sudo nano /etc/nginx/sites-available/livechat
```

Inhalt:
```nginx
server {
    listen 80;
    server_name deine-domain.de;  # oder IP-Adresse

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }

    # WebSocket Support
    location /socket.io/ {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
```

Aktivieren:
```bash
sudo ln -s /etc/nginx/sites-available/livechat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```

### 8. Firewall konfigurieren

```bash
# Port 3000 für lokale Verbindungen (Nginx)
sudo ufw allow 3000/tcp

# Port 80/443 für HTTP/HTTPS (falls Nginx verwendet wird)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
```

### 9. Logs prüfen

```bash
# Service-Logs
sudo journalctl -u livechat -f

# Oder direkt
tail -f /var/www/html/livechat/server/data/*.log
```

### 10. Server neu starten

```bash
sudo systemctl restart livechat
```

## Wichtige Hinweise

- **Datenbank**: Die SQLite-Datenbank liegt in `/var/www/html/livechat/server/data/chat.db`
- **Logs**: Service-Logs über `journalctl -u livechat`
- **Port**: Standardmäßig Port 3000 (kann in `.env` geändert werden)
- **Rechte**: `www-data` User sollte Schreibrechte auf `server/data/` haben

## Troubleshooting

### Server startet nicht
```bash
# Prüfe Logs
sudo journalctl -u livechat -n 50

# Prüfe ob Port belegt ist
sudo netstat -tulpn | grep 3000

# Prüfe Node.js
which node
node --version
```

### Datenbank-Fehler
```bash
# Prüfe Rechte
ls -la /var/www/html/livechat/server/data/
sudo chown -R www-data:www-data /var/www/html/livechat/server/data/
```

### Nginx-Fehler
```bash
# Prüfe Konfiguration
sudo nginx -t

# Prüfe Logs
sudo tail -f /var/log/nginx/error.log
```

