Files
Place-Order-Trading-Bot/DASHBOARD_WINDOWS_SERVER.md
T

509 lines
12 KiB
Markdown
Raw Normal View History

# 📊 Streamlit Dashboard - Windows Server Deployment
## Übersicht
Diese Anleitung zeigt dir wie du das Trading Dashboard auf einem **Windows Server** (oder Windows VPS) zum Laufen bringst.
## 🚀 Installation auf Windows Server
### SCHRITT 1: Python & Dependencies prüfen
**1. Öffne PowerShell als Administrator**
```powershell
# Prüfe Python Version
python --version
# Sollte Python 3.8+ zeigen
# Falls Python nicht gefunden wird:
# Installiere von: https://www.python.org/downloads/
```
**2. Navigiere zum Trading Bot Ordner**
```powershell
# Beispiel (passe Pfad an):
cd C:\TradingBot\placeorder
```
**3. Installiere Streamlit & Dependencies**
```powershell
pip install streamlit plotly pandas
```
Falls `pip` nicht funktioniert:
```powershell
python -m pip install streamlit plotly pandas
```
### SCHRITT 2: Dashboard-Datei kopieren
**Option A: Via RDP (Remote Desktop)**
1. Verbinde per RDP zu deinem Windows Server
2. Öffne Browser auf dem Server
3. Lade `trading_dashboard.py` herunter (z.B. via GitHub, Email, Cloud)
4. Kopiere nach: `C:\TradingBot\placeorder\`
**Option B: Via SCP (von Mac aus)**
```bash
# Auf deinem Mac (Terminal)
scp "/Users/sebastianfrohlich/Library/Mobile Documents/com~apple~CloudDocs/Jupyter Notebooks/FinancialTrading/PlaceOrder/placeorder/trading_dashboard.py" user@windows-server-ip:C:/TradingBot/placeorder/
```
**Hinweis:** Benötigt OpenSSH Server auf Windows. Siehe unten für Aktivierung.
**Option C: Manuell erstellen**
1. Auf Windows Server: Öffne Notepad++, VSCode oder Editor
2. Erstelle neue Datei: `trading_dashboard.py`
3. Copy-Paste den Code aus der Datei
4. Speichere in: `C:\TradingBot\placeorder\`
### SCHRITT 3: Dashboard starten
**Option A: PowerShell (zum Testen)**
```powershell
cd C:\TradingBot\placeorder
streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0
```
Das Dashboard startet und sollte automatisch den Browser öffnen!
**Option B: CMD (Command Prompt)**
```cmd
cd C:\TradingBot\placeorder
streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0
```
### SCHRITT 4: Firewall-Regel erstellen
**Windows Firewall für Port 8501 öffnen:**
**Via GUI:**
1. Windows-Taste → "Windows Defender Firewall"
2. "Erweiterte Einstellungen"
3. "Eingehende Regeln" → "Neue Regel..."
4. "Port" auswählen → Weiter
5. "TCP" → "Bestimmte lokale Ports": **8501** → Weiter
6. "Verbindung zulassen" → Weiter
7. Alle Profile aktivieren → Weiter
8. Name: "Streamlit Dashboard" → Fertig
**Via PowerShell (als Administrator):**
```powershell
New-NetFirewallRule -DisplayName "Streamlit Dashboard" -Direction Inbound -LocalPort 8501 -Protocol TCP -Action Allow
```
### SCHRITT 5: Dashboard im Browser öffnen
**Lokal auf dem Server:**
```
http://localhost:8501
```
**Von anderem Computer:**
```
http://WINDOWS-SERVER-IP:8501
```
Beispiel:
```
http://192.168.1.100:8501
```
## 🔄 Dashboard permanent laufen lassen
### Option 1: Als Windows Service (EMPFOHLEN)
**Mit NSSM (Non-Sucking Service Manager):**
**1. NSSM herunterladen:**
```
https://nssm.cc/download
```
**2. NSSM installieren:**
```powershell
# NSSM entpacken nach C:\nssm
# PowerShell als Administrator öffnen
cd C:\nssm\win64
# Service erstellen
.\nssm.exe install TradingDashboard
```
**3. Im NSSM GUI konfigurieren:**
- **Application Tab:**
- Path: `C:\Python310\Scripts\streamlit.exe` (passe Python-Pfad an)
- Startup directory: `C:\TradingBot\placeorder`
- Arguments: `run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0`
- **Details Tab:**
- Display name: `Trading Dashboard`
- Description: `Streamlit Dashboard for Trading Bot V1.8`
- **Log on Tab:**
- Wähle Account (z.B. dein User-Account)
- **I/O Tab:**
- Output (stdout): `C:\TradingBot\placeorder\dashboard_stdout.log`
- Error (stderr): `C:\TradingBot\placeorder\dashboard_stderr.log`
**4. Service starten:**
```powershell
# Service starten
.\nssm.exe start TradingDashboard
# Service Status prüfen
.\nssm.exe status TradingDashboard
# Service stoppen
.\nssm.exe stop TradingDashboard
# Service entfernen (falls nötig)
.\nssm.exe remove TradingDashboard
```
**Oder via Windows Services:**
1. Windows-Taste → "services.msc"
2. Finde "Trading Dashboard"
3. Rechtsklick → "Starten"
### Option 2: Batch-Datei + Task Scheduler
**1. Erstelle Batch-Datei:**
Erstelle `start_dashboard.bat`:
```batch
@echo off
echo Starting Trading Dashboard...
cd /d C:\TradingBot\placeorder
streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0
pause
```
**2. Task Scheduler konfigurieren:**
1. Windows-Taste → "Task Scheduler"
2. "Create Basic Task..."
3. Name: "Trading Dashboard"
4. Trigger: "When the computer starts"
5. Action: "Start a program"
6. Program: `C:\TradingBot\placeorder\start_dashboard.bat`
7. Finish
**Task manuell starten:**
- Task Scheduler → Rechtsklick auf Task → "Run"
### Option 3: PowerShell Background Job (temporär)
```powershell
# Starte als Background Job
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd C:\TradingBot\placeorder; streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0"
# Prüfe laufende Prozesse
Get-Process | Where-Object {$_.ProcessName -like "*streamlit*"}
# Stoppe Dashboard
Stop-Process -Name streamlit -Force
```
## 🔒 Sicherheit & Zugriff
### Option 1: SSH Tunnel (von Mac aus)
**Falls OpenSSH Server auf Windows aktiviert:**
```bash
# Auf Mac
ssh -L 8501:localhost:8501 user@windows-server-ip
# Dann Browser öffnen
http://localhost:8501
```
**OpenSSH Server auf Windows aktivieren:**
```powershell
# PowerShell als Administrator
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# SSH Service starten
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# Firewall-Regel (falls nötig)
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
```
### Option 2: IIS Reverse Proxy (für HTTPS)
Falls du IIS verwendest, kannst du einen Reverse Proxy einrichten:
1. Installiere "Application Request Routing" (ARR)
2. Installiere "URL Rewrite"
3. Konfiguriere Reverse Proxy von Port 80/443 → 8501
### Option 3: VPN-Only Access
Öffne Port 8501 nur im VPN-Netzwerk, nicht öffentlich.
## 📱 Zugriff von außen (Internet)
### Router Port Forwarding (falls Home Server)
1. Router-Verwaltung öffnen
2. Port Forwarding Regel erstellen:
- External Port: 8501
- Internal IP: Windows Server IP (z.B. 192.168.1.100)
- Internal Port: 8501
- Protocol: TCP
3. Zugriff via:
```
http://DEINE-ÖFFENTLICHE-IP:8501
```
### Cloud VPS (z.B. Azure, AWS)
**Firewall/Security Group konfigurieren:**
- Erlaube eingehenden Traffic auf Port 8501 (TCP)
- Von deiner IP oder 0.0.0.0/0 (öffentlich, vorsichtig!)
## 🛠️ Troubleshooting
### Dashboard startet nicht
**1. Prüfe Python/Streamlit Installation:**
```powershell
python --version
streamlit --version
```
**2. Prüfe ob Port belegt:**
```powershell
netstat -ano | findstr :8501
```
Falls Port belegt, finde Prozess:
```powershell
# Nutze die PID aus netstat output
tasklist | findstr <PID>
# Prozess killen
taskkill /PID <PID> /F
```
**3. Prüfe Logs:**
Falls als Service läuft, schaue in:
```
C:\TradingBot\placeorder\dashboard_stdout.log
C:\TradingBot\placeorder\dashboard_stderr.log
```
### Dashboard nicht erreichbar von außen
**1. Firewall prüfen:**
```powershell
Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 8501}
```
**2. Prüfe ob Streamlit auf richtiger IP hört:**
```powershell
netstat -ano | findstr :8501
```
Sollte zeigen: `0.0.0.0:8501` (nicht `127.0.0.1:8501`)
Falls falsch, starte mit `--server.address 0.0.0.0`:
```powershell
streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0
```
### Database Error
```powershell
# Prüfe ob trading_bot.db existiert
dir trading_bot.db
# Falls nicht:
# 1. Starte zuerst den Trading Bot (Jupyter Notebook)
# 2. Der erstellt automatisch die Datenbank
```
## 📊 PowerShell Helper Scripts
### start_dashboard.ps1
```powershell
# Trading Dashboard Starter Script
Write-Host "Starting Trading Dashboard..." -ForegroundColor Green
$path = "C:\TradingBot\placeorder"
Set-Location $path
# Check if database exists
if (!(Test-Path "trading_bot.db")) {
Write-Host "WARNING: trading_bot.db not found!" -ForegroundColor Yellow
Write-Host "Make sure the Trading Bot is running first." -ForegroundColor Yellow
}
# Start Streamlit
Write-Host "Dashboard starting on http://localhost:8501" -ForegroundColor Cyan
streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0
```
### stop_dashboard.ps1
```powershell
# Stop Trading Dashboard
Write-Host "Stopping Trading Dashboard..." -ForegroundColor Yellow
Get-Process | Where-Object {$_.ProcessName -like "*streamlit*"} | Stop-Process -Force
Write-Host "Dashboard stopped!" -ForegroundColor Green
```
### check_dashboard.ps1
```powershell
# Check Dashboard Status
Write-Host "Checking Trading Dashboard Status..." -ForegroundColor Cyan
$process = Get-Process | Where-Object {$_.ProcessName -like "*streamlit*"}
if ($process) {
Write-Host "Dashboard is RUNNING" -ForegroundColor Green
Write-Host "Process ID: $($process.Id)" -ForegroundColor White
Write-Host "URL: http://localhost:8501" -ForegroundColor Cyan
} else {
Write-Host "Dashboard is NOT running" -ForegroundColor Red
}
# Check if port is listening
$port = Get-NetTCPConnection -LocalPort 8501 -ErrorAction SilentlyContinue
if ($port) {
Write-Host "Port 8501 is LISTENING" -ForegroundColor Green
} else {
Write-Host "Port 8501 is NOT listening" -ForegroundColor Yellow
}
```
## ✅ Installation Checklist
- [ ] Python 3.8+ installiert
- [ ] Streamlit installiert (`pip install streamlit plotly pandas`)
- [ ] trading_dashboard.py im richtigen Ordner
- [ ] Windows Firewall Port 8501 geöffnet
- [ ] Dashboard gestartet (manuell oder als Service)
- [ ] Im Browser erreichbar (`http://localhost:8501`)
- [ ] Von außen erreichbar (`http://SERVER-IP:8501`)
- [ ] Als Windows Service konfiguriert (optional, empfohlen)
- [ ] Auto-Start beim Boot konfiguriert (optional)
## 🎯 Empfohlenes Setup für Windows Server
**Beste Praxis:**
1. **Dashboard als Windows Service** (mit NSSM)
- Auto-Start beim Boot
- Läuft auch ohne User-Login
2. **Firewall konfiguriert**
- Port 8501 nur von vertrauenswürdigen IPs
3. **Logs aktiviert**
- stdout/stderr Logs für Debugging
4. **Auto-Refresh im Dashboard** (30s)
## 🎉 Quick Start Commands
```powershell
# Dashboard starten (manuell)
cd C:\TradingBot\placeorder
streamlit run trading_dashboard.py --server.port 8501 --server.address 0.0.0.0
# Dashboard Status prüfen
Get-Process | Where-Object {$_.ProcessName -like "*streamlit*"}
# Dashboard stoppen
Stop-Process -Name streamlit -Force
# Service starten (falls als Service installiert)
Start-Service TradingDashboard
# Service stoppen
Stop-Service TradingDashboard
```
## 📝 Zugriff URLs
**Lokal auf Server:**
```
http://localhost:8501
```
**Vom Netzwerk:**
```
http://WINDOWS-SERVER-IP:8501
```
**Von außen (Internet):**
```
http://ÖFFENTLICHE-IP:8501
```
**Via SSH Tunnel:**
```bash
# Auf Mac
ssh -L 8501:localhost:8501 user@windows-server-ip
# Browser öffnen
http://localhost:8501
```
## 🔗 Nützliche Links
- **NSSM Download:** https://nssm.cc/download
- **Python Windows:** https://www.python.org/downloads/windows/
- **Streamlit Docs:** https://docs.streamlit.io/
## 💡 Pro-Tipps
1. **Dedicated User Account:** Erstelle einen separaten Windows User nur für den Trading Bot
2. **Scheduled Restart:** Task Scheduler für täglichen Neustart (z.B. 3:00 nachts)
3. **Backup:** Sichere `trading_bot.db` regelmäßig
4. **Monitoring:** Nutze Windows Performance Monitor für Ressourcen-Überwachung
5. **Updates:** Halte Streamlit aktuell: `pip install --upgrade streamlit`
## 🚨 Wichtige Sicherheitshinweise
⚠️ **NIEMALS Port 8501 öffentlich ohne Authentifizierung öffnen!**
Empfohlene Absicherung:
- VPN-Only Access
- SSH Tunnel
- IIS Reverse Proxy mit Basic Auth
- IP Whitelist in Firewall
---
Du bist jetzt bereit das Dashboard auf Windows Server zu deployen! 🎉