Files
wetterstation/DEPLOY.md
rxf 4b0ac3a652 Grafik 2 spaltig auch bein iFrame
Übertragen nach sternwarte funktioniert
2026-02-08 15:37:44 +01:00

156 lines
2.8 KiB
Markdown

# 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
└── ...
```