Commit ba0abc

2026-05-07 16:12:59 Claude Code: feat(ct-128): Trading Bot (Freqtrade) Doku hinzugefuegt
container-und-vms.md ..
@@ 1,38 1,45 @@
# Container & VMs
> [!TIP]
- > Diese Seite ist als schnelle Betriebsübersicht gedacht. Mit der Datentabelle kannst du nach Status, Rolle oder Namen suchen.
+ > Diese Seite ist als schnelle Betriebsuebersicht gedacht. Mit der Datentabelle kannst du nach Status, Rolle oder Namen suchen.
- ## Laufende Systeme
+ ## Aktiver Stand laut Proxmox
| Typ | ID | Name | Status | IP / Zugriff |
|---|---:|---|---|---|
- | CT | 101 | jellyfin | läuft | `192.168.178.55` |
- | CT | 102 | pbs | läuft | `192.168.178.60` |
- | CT | 103 | fileserver | läuft | `192.168.178.61` |
- | CT | 104 | immich | läuft | `192.168.178.62` |
- | CT | 108 | wiki | läuft | `192.168.178.77` |
- | CT | 109 | claw | läuft | `192.168.178.75` |
- | CT | 112 | claude-code | läuft | `192.168.178.82` / `terminal.ls-cloud.biz` |
- | CT | 113 | authelia | läuft | `192.168.178.64` / `auth.ls-cloud.biz` |
+ | CT | 101 | jellyfin | laeuft | `192.168.178.55` / `stream.ls-cloud.biz` |
+ | CT | 102 | pbs | laeuft | `192.168.178.60` / `backup.ls-cloud.biz` |
+ | CT | 103 | fileserver | laeuft | `192.168.178.61` / `files.ls-cloud.biz` |
+ | CT | 104 | immich | laeuft | `192.168.178.62` / `fotos.ls-cloud.biz` |
+ | CT | 105 | downloads | laeuft | `192.168.178.63` / `requests.ls-cloud.biz` u.a. / [[ct-105-downloads]] |
+ | CT | 106 | openclaw | gestoppt | fruehere Instanz |
+ | CT | 107 | monitoring | gestoppt | `192.168.178.72` / Monitoring nur situativ |
+ | CT | 108 | wiki | laeuft | `192.168.178.77` / `wiki.ls-cloud.biz` |
+ | CT | 109 | claw | laeuft | `192.168.178.75` |
+ | CT | 110 | termix | laeuft | `192.168.178.95` / `termix.ls-cloud.biz` / [[ct-110-termix]] |
+ | CT | 111 | webserver | laeuft | `192.168.178.79` / `web.ls-cloud.biz` |
+ | CT | 112 | claude-code | laeuft | `192.168.178.82` / `terminal.ls-cloud.biz` |
+ | CT | 113 | authelia | laeuft | `192.168.178.64` / `auth.ls-cloud.biz` |
| CT | 114 | games | gestoppt | `192.168.178.84` / `games.ls-cloud.biz` |
- | CT | 117 | technitium-dns | läuft | `192.168.178.87` / `dns.ls-cloud.biz` |
- | CT | 118 | paperclipai | läuft | `192.168.178.88` / `agent.ls-cloud.biz` |
- | CT | 120 | dashboard | läuft | `192.168.178.90` |
- | CT | 121 | vaultwarden | läuft | `192.168.178.91` / `pw.ls-cloud.biz` |
- | CT | 122 | karakeep | läuft | `192.168.178.92` / `keep.ls-cloud.biz` |
- | CT | 123 | cs16 | läuft | `192.168.178.93` / `cs.ls-cloud.biz` |
- | VM | 200 | Windows11Pro | gestoppt | Proxmox-Konsole / [[vm-200-windows11pro]] |
+ | CT | 117 | technitium-dns | laeuft | `192.168.178.87` / `dns.ls-cloud.biz` |
+ | CT | 118 | paperclipai | laeuft | `192.168.178.88` / `agent.ls-cloud.biz` |
+ | CT | 119 | azeroth | gestoppt | `192.168.178.89` / `panel.ls-cloud.biz` / [[ct-119-azerothcore]] |
+ | CT | 121 | vaultwarden | laeuft | `192.168.178.91` / `pw.ls-cloud.biz` / [[ct-121-vaultwarden]] |
+ | CT | 122 | karakeep | laeuft | `192.168.178.92` / `keep.ls-cloud.biz` |
+ | CT | 123 | cs16 | laeuft | `192.168.178.93` / `cs.ls-cloud.biz` |
+ | CT | 124 | homarr | laeuft | `192.168.178.94` / `ls-cloud.biz` |
+ | CT | 125 | norish | laeuft | `192.168.178.96` / `norish.ls-cloud.biz` |
+ | CT | 126 | tdarr | laeuft | `192.168.178.73` / `transcode.ls-cloud.biz` / [[ct-126-tdarr]] |
+ | CT | 128 | bot | laeuft | `192.168.178.97` / `bot.ls-cloud.biz` / [[ct-128-bot]] |
{{DataTable}}
- ## Situative oder bewusst gestoppte Systeme
+ ## Hinweise
- - **CT 105 `downloads`** — läuft derzeit, aber die öffentlichen Dienste sind situativ relevant
- - **CT 111 `webserver`** — läuft derzeit; Relevanz entsteht vor allem über `web.ls-cloud.biz`
- - **CT 100 `guacamole`** — derzeit gestoppt
- - **CT 106 `openclaw`** — frühere Instanz / derzeit gestoppt
- - **CT 107 `monitoring`** — derzeit gestoppt / nur bei aktivem Monitoring relevant
+ - **CT 115 `local-ai`** und **CT 116 `openclaw-local`** nicht mehr in `pct list` — wurden entfernt.
+ - **CT 120 `dashboard`** abgeloest durch **CT 124 `homarr`** hinter `ls-cloud.biz`.
+ - **CT 119 `azeroth`** ist gestoppt; Caddy-Eintrag `panel.ls-cloud.biz` existiert noch.
+ - **CT 114 `games`** und **CT 107 `monitoring`** sind bewusst gestoppt.
> [!WARNING]
- > Bewusst gestoppt heißt hier nicht automatisch defekt. Es heißt nur: Caddy oder Nutzererwartung können trotzdem unerquicklich reagieren, wenn noch ein Pfad darauf zeigt.
+ > Bewusst gestoppt heisst hier **nicht** automatisch defekt. In deinem Setup ist das haeufig schlicht Ressourcenhygiene. Relevant ist nur, ob eine oeffentliche Domain trotz absichtlich gestopptem Backend weiter aktiv bleiben soll.
/dev/null .. ct-128-bot.md
@@ 0,0 1,219 @@
+ # CT 128 `bot` — Trading Bot (Freqtrade)
+
+ > **Zweck:** Automatisierter Krypto-Trading-Bot mit Freqtrade auf Binance Spot/USDC. Inklusive Live-Dashboard und Web-basierter Container-Steuerung.
+
+ ## Rolle
+ CT 128 ist der dedizierte Trading-Container. Hier läuft **Freqtrade** — ein Open-Source-Crypto-Trading-Bot — als Docker-Stack mit drei Services:
+ - **freqtrade**: der eigentliche Trading-Bot (Strategie-Execution, Order-Management)
+ - **dashboard**: Nginx-Webserver mit Live-Trading-Übersicht
+ - **ctrl**: Leichtgewichtiger Docker-Control-Proxy für Web-basierte Container-Steuerung
+
+ ## Basisdaten
+ - **CT-ID:** 128
+ - **Hostname:** `bot`
+ - **IP:** `192.168.178.97`
+ - **OS:** Ubuntu 24.04
+ - **Ressourcen:** 2 Cores, 2 GB RAM, 20 GB Disk
+ - **Öffentliche URLs:**
+ - `https://bot.ls-cloud.biz` — Trading-Dashboard (via Authelia geschützt)
+ - `https://ui.bot.ls-cloud.biz` — Bot-Steuerungs-UI
+
+ ## Technischer Aufbau
+
+ ```
+ CT 128 (bot) · 192.168.178.97
+ ├── freqtrade (Docker) → localhost:8080 (API)
+ ├── dashboard (nginx) → 0.0.0.0:5001 (Web-Dashboard)
+ ├── ctrl (Python/Docker) → intern:5003 (Steuer-Proxy)
+ └── Caddy Reverse Proxy (auf Host lscloud)
+ ├── bot.ls-cloud.biz → Authelia → :5001
+ └── ui.bot.ls-cloud.biz → :5002
+ ```
+
+ - **Freqtrade-Image:** `freqtradeorg/freqtrade:stable`
+ - **Dashboard:** `nginx:alpine` mit statischem HTML (keine externen CDN-Abhängigkeiten)
+ - **Ctrl:** Alpine-basierter Python-Microservice mit Docker-Socket-Zugriff
+
+ ## Alle Pfade
+
+ ```
+ /opt/freqtrade/ ← Hauptverzeichnis (docker-compose root)
+ ├── config.json ← ⭐ Freqtrade-Konfiguration
+ ├── docker-compose.yml ← Docker Stack Definition
+ ├── nginx.conf ← Dashboard Nginx-Konfiguration
+ ├── dashboard.html ← Dashboard HTML (selbst enthalten)
+
+ ├── user_data/ ← Freqtrade Datenverzeichnis
+ │ ├── strategies/ ← Trading-Strategien (.py)
+ │ │ ├── MrXScalper.py ← Aktive Strategie
+ │ │ ├── MrXStrategy.py ← Frühere Strategie (langsamer)
+ │ │ ├── MyStrategy.py ← Erste Eigenentwicklung
+ │ │ └── sample_strategy.py ← Freqtrade-Beispiel
+ │ ├── logs/
+ │ │ └── freqtrade.log ← Bot-Logdatei
+ │ └── tradesv3.sqlite ← Trade-Datenbank
+
+ └── ctrl/ ← Docker-Control-Microservice
+ ├── Dockerfile
+ └── ctrl.py
+ ```
+
+ ## Config-Erklärung (`config.json`)
+
+ ### Trading-Parameter
+ | Parameter | Wert | Bedeutung |
+ |-----------|------|-----------|
+ | `max_open_trades` | `6` | Maximal 6 gleichzeitige Trades |
+ | `stake_amount` | `15` | 15 USDC pro Trade |
+ | `stake_currency` | `USDC` | Basiswährung |
+ | `tradable_balance_ratio` | `0.95` | 95% des Guthabens nutzbar |
+ | `dry_run` | `false` | **LIVE-Trading** (echte Orders!) |
+ | `timeframe` | `5m` | 5-Minuten-Kerzen |
+ | `cancel_open_orders_on_exit` | `false` | Orders bei Bot-Stopp behalten |
+
+ ### Exchange (Binance)
+ ```json5
+ {
+ exchange: {
+ name: "binance",
+ key: "***", // Binance API-Key
+ secret: "***", // Binance API-Secret
+ ccxt_config: { enableRateLimit: true },
+ pair_whitelist: [".*/USDC"], // Alle USDC-Paare
+ pair_blacklist: [
+ "BNB/USDC", "USDT/USDC", // Stablecoins & BNB ausgeschlossen
+ "FDUSD/USDC", "USDP/USDC",
+ "TUSD/USDC", "EUR/USDC"
+ ]
+ }
+ }
+ ```
+
+ ### Pair-Filter (Dynamische Paarauswahl)
+ Jeder Zyklus wählt automatisch die 12 liquidesten USDC-Paare:
+ 1. **VolumePairList** — Top 12 nach Quote-Volume, refresh alle 30 min
+ 2. **AgeFilter** — Nur Coins >60 Tage gelistet
+ 3. **SpreadFilter** — Max 0.35% Spread
+ 4. **RangeStabilityFilter** — Min 3% Bewegung in 7 Tagen
+ 5. **VolatilityFilter** — 2-50% Volatilität (vermeidet tote und zu wilde Märkte)
+
+ ### Pricing
+ - Nutzt **Order Book** (Top-Level) für Entry/Exit-Preisermittlung
+ - `price_side: "same"` → gleiche Seite wie Orderrichtung
+
+ ### API-Server
+ | Einstellung | Wert |
+ |-------------|------|
+ | Port | `8080` (intern, nur localhost) |
+ | Auth | Username/Password + JWT |
+ | OpenAPI | deaktiviert |
+ | CORS | `*` (für Dashboard) |
+
+ ### Telegram-Alerts
+ Freqtrade hat einen **eigenen Telegram-Bot** für Trade-Benachrichtigungen (getrennt vom OpenClaw-Bot).
+
+ ### Sonstiges
+ - `force_entry_enable: true` → Manuelle Trade-Einstiege per API möglich
+ - `process_throttle_secs: 5` → 5s Verarbeitungsintervall
+ - `initial_state: "running"` → Startet automatisch mit Trading
+
+ ## Strategie: MrXScalper
+
+ **Typ:** Long-only Spot-Scalping auf 5m-Kerzen
+
+ **Signale:**
+ - **EMA9/EMA21** — Lokaler Trendfilter
+ - **RSI-Cross-Up** — Momentum-Trigger (schneller Einstieg)
+ - **BB-Width** — Volatilitätsfilter (keine toten Märkte)
+ - **Volume > 20-MA** — Volumen-Confirmation
+
+ **Risk-Management:**
+ | Parameter | Wert |
+ |-----------|------|
+ | Stoploss | -2.5% (Tight-Stop) |
+ | Trailing Stop | Ja, ab +1.2% |
+ | Trailing Offset | 0.5% |
+ | ROI Stufe 1 | 1.5% sofort |
+ | ROI Stufe 2 | 0.8% nach 20 min |
+ | ROI Stufe 3 | 0.3% nach 1 h |
+ | ROI Stufe 4 | jeder Profit nach 3 h |
+
+ **Order-Typen:** Limit-Orders (Entry + Exit), Market bei Stoploss
+
+ **Hyperopt-fähig:** RSI-Parameter sind optimierbar
+
+ ## Dashboard
+
+ Erreichbar unter `https://bot.ls-cloud.biz` (nach Authelia-Login).
+
+ **Funktionen:**
+ - Wallet-Übersicht (Gesamtwert, investiert, Profit)
+ - Offene Trades (Pair, Einstieg, aktueller Kurs, PnL)
+ - Tages-Chart (Canvas-basiert, keine externen Abhängigkeiten)
+ - **Wichtig:** Zeigt Bot-interne Werte, **nicht** das echte Binance-Wallet!
+
+ **Architektur:**
+ - Nginx liefert `dashboard.html` aus
+ - `/api/` → Proxy zu Freqtrade API (Port 8080) mit Basic Auth
+ - `/admin/` → Proxy zu ctrl-Service (Container-Steuerung)
+ - Vollständig selbst enthaltenes HTML/CSS/JS (mobil-tauglich)
+
+ ## Betrieb & Wartung
+
+ ### Container-Status
+ ```bash
+ # Auf dem Proxmox-Host
+ pct status 128
+ pct exec 128 -- docker compose -f /opt/freqtrade/docker-compose.yml ps
+ ```
+
+ ### Docker-Services steuern
+ ```bash
+ # In CT128
+ cd /opt/freqtrade
+
+ # Alle Services neustarten
+ docker compose down && docker compose up -d
+
+ # Logs einsehen
+ docker compose logs -f freqtrade
+ docker compose logs -f --tail 50 freqtrade
+
+ # Nur Config neu laden (ohne Neustart)
+ docker compose restart freqtrade
+ ```
+
+ ### Config ändern
+ 1. Config editieren: `nano /opt/freqtrade/config.json`
+ 2. Strategie-Datei editieren: `nano /opt/freqtrade/user_data/strategies/MrXScalper.py`
+ 3. Bei Config-Änderung: `docker compose restart freqtrade`
+ 4. Bei Strategie-Änderung: `docker compose restart freqtrade`
+ 5. Bei docker-compose.yml-Änderung: `docker compose down && docker compose up -d`
+
+ ### ⚠️ Live-Trading-Hinweise
+ - `dry_run: false` → **Echte Orders auf Binance!**
+ - API-Keys haben Trade-Berechtigung
+ - Vor Änderungen immer prüfen, ob offene Trades existieren
+ - Bei Unsicherheit vorher: `docker compose stop freqtrade`
+
+ ### Backup
+ - Gesamtes `/opt/freqtrade/` regelmäßig sichern
+ - Wichtigste Dateien: `config.json`, `user_data/strategies/`, `tradesv3.sqlite`
+
+ ## Verknüpfte Dienste
+
+ | Dienst | CT | Zweck |
+ |--------|-----|-------|
+ | Authelia | 113 | Schützt bot.ls-cloud.biz |
+ | Caddy | Host | TLS + Reverse Proxy |
+ | OpenClaw | 109 | KI-Assistent (verwaltet/analysiert den Bot) |
+
+ ## Troubleshooting
+
+ | Problem | Check |
+ |---------|-------|
+ | Bot traded nicht | `docker compose logs freqtrade \| grep -i error` |
+ | Dashboard leer | `docker compose logs dashboard` |
+ | Keine Internetverbindung | DNS-Check in CT128: `cat /etc/resolv.conf` (sollte 8.8.8.8 sein) |
+ | API nicht erreichbar | `curl http://localhost:8080/api/v1/ping` |
+ | Config-Fehler | `docker compose logs freqtrade \| head -20` |
services-uebersicht.md ..
@@ 15,22 15,35 @@
| `qbit.ls-cloud.biz` | `192.168.178.63:8081` | CT 105 `downloads` | qBittorrent | situativ |
| `usenet.ls-cloud.biz` | `192.168.178.63:8082` | CT 105 `downloads` | SABnzbd | situativ |
| `dl.ls-cloud.biz` | `192.168.178.63:9696` | CT 105 `downloads` | Prowlarr | situativ |
- | `net.ls-cloud.biz` | `192.168.178.72:3000` | CT 107 `monitoring` | ntopng / Monitoring | situativ |
+ | `requests.ls-cloud.biz` | `192.168.178.63:5055` | CT 105 `downloads` | Jellyseerr Anfragen-Portal | erreichbar |
+ | `net.ls-cloud.biz` | `192.168.178.72:3000` | CT 107 `monitoring` | ntopng / Monitoring | bewusst gestoppt / bei Bedarf aktivierbar |
| `wiki.ls-cloud.biz` | `192.168.178.77:8080` | CT 108 `wiki` | OtterWiki | erreichbar |
- | `web.ls-cloud.biz` | `192.168.178.79:80` | CT 111 `webserver` | Webserver / Webspace | nur wenn CT 111 läuft |
- | `games.ls-cloud.biz` | `192.168.178.84:8080` | CT 114 `games` | Games / EmulatorJS-Webdienst | erreichbar |
+ | `web.ls-cloud.biz` | `192.168.178.79:80` | CT 111 `webserver` | Webserver / Webspace | erreichbar, solange CT 111 laeuft |
+ | `games.ls-cloud.biz` | `192.168.178.84:8080` | CT 114 `games` | Games / EmulatorJS-Webdienst | bewusst gestoppt / bei Bedarf aktivierbar |
| `terminal.ls-cloud.biz` | `192.168.178.82:7681` | CT 112 `claude-code` | Webterminal (Shell In A Box) | erreichbar |
- | `live.ls-cloud.biz` | `192.168.178.54:8080` | CT 100 `guacamole` / Altpfad | Guacamole | problematisch, wenn CT 100 gestoppt |
-
+ | `agent.ls-cloud.biz` | `192.168.178.88:3101` | CT 118 `paperclipai` | PaperclipAI Multi-Agent Platform | via Authelia geschuetzt |
+ | `bot.ls-cloud.biz` | `192.168.178.97:5001` | CT 128 `bot` | Trading Bot Dashboard (Freqtrade) | via Authelia geschuetzt |
+ | `panel.ls-cloud.biz` | `192.168.178.89:80` | CT 119 `azeroth` | WoW Webpanel (FusionCMS) | bewusst gestoppt / bei Bedarf aktivierbar |
+ | `wow.ls-cloud.biz` | `192.168.178.89:8085` | CT 119 `azeroth` | AzerothCore WotLK Realm | bei Bedarf aktivierbar |
| `pw.ls-cloud.biz` | `192.168.178.91:8080` | CT 121 `vaultwarden` | Vaultwarden Passwortmanager | erreichbar |
+ | `ls-cloud.biz` | `192.168.178.94:7575` | CT 124 `homarr` | Homarr Dashboard | erreichbar |
+ | `www.ls-cloud.biz` | Redirect auf `ls-cloud.biz` | CT 124 `homarr` | WWW-Redirect | erreichbar |
+ | `dns.ls-cloud.biz` | `192.168.178.87:5380` | CT 117 `technitium-dns` | Technitium DNS Web UI | erreichbar |
+ | `auth.ls-cloud.biz` | `192.168.178.64:9091` | CT 113 `authelia` | Authelia Portal | erreichbar |
+ | `keep.ls-cloud.biz` | `192.168.178.92:3000` | CT 122 `karakeep` | Karakeep | erreichbar |
+ | `cs.ls-cloud.biz` | `192.168.178.93:27016` | CT 123 `cs16` | CS 1.6 Web-Client | erreichbar |
+ | `termix.ls-cloud.biz` | `192.168.178.95:8080` | CT 110 `termix` | Termix Web-basierte Serververwaltung mit SSH/RDP | via Authelia vorgeschaltet |
+ | `norish.ls-cloud.biz` | `192.168.178.96:3000` | CT 125 `norish` | Norish Rezept-App | erreichbar |
+ | `transcode.ls-cloud.biz` | `192.168.178.73:8265` | CT 126 `tdarr` | Tdarr Medien-Transcoder (Intel QSV) | erreichbar |
{{DataTable}}
## Hinweise
> [!IMPORTANT]
- > Gestoppte Container erklären oft auch öffentliche Fehlerbilder direkt. Erst Backend-Status prüfen, dann Caddy verdächtigen.
+ > Gestoppte Container erklaeren oft auch oeffentliche Fehlerbilder direkt. Erst Backend-Status pruefen, dann Caddy verdaechtigen.
- - `web.ls-cloud.biz` hängt am Zustand von **CT 111**
- - `live.ls-cloud.biz` hängt am Zustand von **CT 100**
+ - `web.ls-cloud.biz` haengt am Zustand von **CT 111**
- `terminal.ls-cloud.biz` ist ein Webterminal, kein normaler Webdienst im klassischen Sinn
+ - `termix.ls-cloud.biz` ist mit Authelia vor dem Termix-Backend abgesichert
+ - **Nicht jeder gestoppte CT ist ein Fehlerbild**: `net`, `games` und `panel` koennen bewusst stillgelegt sein, um Ressourcen zu sparen.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9