# Deployment auf externen Webserver

## Übersicht

Das System generiert alle 4 Minuten statische HTML-Dateien mit aktuellen Wetterdaten und lädt sie auf einen externen Webserver hoch.

## Voraussetzungen

1. **SSH-Zugang** zum Webserver (passwortlos mit SSH-Key empfohlen)
2. **rsync** installiert (auf macOS bereits vorhanden)
3. **Python 3** mit venv
4. **API läuft lokal** (localhost:8000)

## Setup

### 1. Python-Abhängigkeiten installieren

```bash
source .venv/bin/activate
pip install requests
```

### 2. Konfiguration anpassen

Bearbeiten Sie `generate-static.py`:

```python
REMOTE_SERVER = "user@ihr-server.de"     # Ihr SSH-Zugang
REMOTE_PATH = "/var/www/html/wetterstation"  # Pfad auf dem Server
```

### 3. SSH-Key Setup (einmalig)

Für automatisches Upload ohne Passwort-Eingabe:

```bash
# SSH-Key generieren (falls noch nicht vorhanden)
ssh-keygen -t ed25519

# Public Key auf Server kopieren
ssh-copy-id user@ihr-server.de

# Test
ssh user@ihr-server.de "echo 'Verbindung OK'"
```

### 4. Frontend für statische Nutzung vorbereiten

```bash
# App.jsx durch statische Version ersetzen
cp frontend/src/App-static.jsx frontend/src/App.jsx
```

### 5. Manueller Test

```bash
python generate-static.py
```

Dies sollte:
- Wetterdaten laden ✓
- Frontend bauen ✓
- Daten einbetten ✓
- Dateien hochladen ✓

### 6. Cronjob installieren

```bash
chmod +x setup-cronjob.sh
./setup-cronjob.sh
```

Der Cronjob läuft dann automatisch alle 4 Minuten.

## Zeitplan

Der Cronjob läuft zu folgenden Zeiten:
- 00:00, 00:04, 00:08, 00:12, ...
- 01:00, 01:04, 01:08, 01:12, ...
- etc.

Um ihn z.B. immer 1 Minute nach dem 5-Minuten-Schritt zu starten:
```cron
1,6,11,16,21,26,31,36,41,46,51,56 * * * * /pfad/zum/script
```

## Logs überwachen

```bash
# Live-Logs anzeigen
tail -f upload.log

# Letzte Uploads anzeigen
tail -20 upload.log
```

## iframe in bestehende Webseite einbauen

```html
<iframe 
  src="https://ihre-domain.de/wetterstation/" 
  width="100%" 
  height="1200" 
  frameborder="0"
  style="border: none;">
</iframe>
```

## Fehlerbehebung

### Upload schlägt fehl
```bash
# SSH-Verbindung testen
ssh user@ihr-server.de

# rsync manuell testen
rsync -avz frontend/dist/ user@ihr-server.de:/var/www/html/wetterstation/
```

### API nicht erreichbar
```bash
# API-Status prüfen
curl http://localhost:8000/health
```

### Cronjob läuft nicht
```bash
# Cronjob-Log prüfen
tail -f upload.log

# Cronjobs anzeigen
crontab -l

# Script manuell ausführen
python generate-static.py
```

## Cronjob entfernen

```bash
crontab -e
# Zeile mit generate-static.py löschen
```

## Verzeichnisstruktur auf dem Server

Nach dem Upload sollte der Server folgende Struktur haben:
```
/var/www/html/wetterstation/
├── index.html          (mit eingebetteten Daten)
├── assets/
│   ├── index-xxx.js
│   └── index-xxx.css
└── ...
```
