f586b7adad
Neue VM 105 auf pve1: - Ubuntu 25.10 Cloud-Image, 12 GB RAM, 4 vCPU, 32 GB Disk - Xvfb :1 (1920x1080) + Openbox + TigerVNC + noVNC (Port 6080) - IBC für automatisierten IBKR TWS Login - IP: 192.168.10.43 (DHCP, vmbr0 VLAN 10) - Setup-Scripts: pve1/guests/vm105-finance/setup-tws.sh
125 lines
3.8 KiB
Bash
125 lines
3.8 KiB
Bash
#!/usr/bin/env bash
|
|
# TWS + IBC Installation auf VM 105 finance
|
|
# Ausführen als tws-User oder ubuntu-User mit sudo
|
|
# Voraussetzung: setup-tws.sh wurde erfolgreich ausgeführt
|
|
set -euo pipefail
|
|
|
|
TWS_USER=tws
|
|
TWS_HOME=/home/tws
|
|
|
|
echo "=== TWS Installer herunterladen ==="
|
|
# IBKR bietet stable und latest an; stable bevorzugt für Produktion
|
|
TWS_URL="https://download2.interactivebrokers.com/installers/tws/stable-standalone/tws-stable-standalone-linux-x64.sh"
|
|
INSTALLER="$TWS_HOME/tws-installer.sh"
|
|
|
|
sudo -u $TWS_USER wget -q --show-progress -O "$INSTALLER" "$TWS_URL"
|
|
sudo chmod +x "$INSTALLER"
|
|
|
|
echo "=== TWS Installation starten (GUI via DISPLAY :1 / noVNC) ==="
|
|
echo "Öffne noVNC im Browser und klicke den Installer durch:"
|
|
echo " http://$(hostname -I | awk '{print $1}'):6080/vnc.html"
|
|
echo ""
|
|
echo "Installer wird jetzt gestartet..."
|
|
sudo -u $TWS_USER DISPLAY=:1 "$INSTALLER" &
|
|
echo "Installer PID: $!"
|
|
echo ""
|
|
echo "Nach der Installation bitte dieses Script weiter ausführen."
|
|
echo "Drücke Enter wenn TWS installiert wurde..."
|
|
read -r
|
|
|
|
echo "=== IBC herunterladen ==="
|
|
IBC_DIR="$TWS_HOME/ibc"
|
|
sudo -u $TWS_USER mkdir -p "$IBC_DIR"
|
|
|
|
# Aktuelle Version von GitHub ermitteln
|
|
IBC_LATEST=$(curl -s https://api.github.com/repos/IbcAlpha/IBC/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
|
|
echo "IBC Version: $IBC_LATEST"
|
|
|
|
IBC_URL="https://github.com/IbcAlpha/IBC/releases/download/${IBC_LATEST}/IBCLinux-${IBC_LATEST}.zip"
|
|
sudo -u $TWS_USER wget -q --show-progress -O "$IBC_DIR/ibc.zip" "$IBC_URL"
|
|
sudo -u $TWS_USER unzip -q -o "$IBC_DIR/ibc.zip" -d "$IBC_DIR/"
|
|
sudo chmod +x "$IBC_DIR"/*.sh "$IBC_DIR/scripts"/*.sh 2>/dev/null || true
|
|
|
|
echo "=== IBC Konfiguration erstellen ==="
|
|
# TWS-Pfad ermitteln (Standard-Installpfad)
|
|
TWS_PATH=$(find "$TWS_HOME" -name "jts.ini" 2>/dev/null | head -1 | xargs dirname 2>/dev/null || echo "$TWS_HOME/Jts")
|
|
|
|
sudo -u $TWS_USER tee "$IBC_DIR/config.ini" > /dev/null <<IBCCONF
|
|
# IBC Konfiguration für TWS
|
|
# Dokumentation: https://github.com/IbcAlpha/IBC/blob/master/userguide.md
|
|
|
|
[Logon]
|
|
IbLoginId=DEIN_IBKR_USERNAME
|
|
IbPassword=DEIN_IBKR_PASSWORT
|
|
TradingMode=live
|
|
# TradingMode=paper
|
|
|
|
[TWS]
|
|
ReadOnlyLogin=no
|
|
AcceptNonBrokerageAccountWarning=yes
|
|
AutoClosedown=no
|
|
ClosedownAt=
|
|
|
|
[API]
|
|
OverrideTwsApiPort=7497
|
|
AcceptIncomingConnectionAction=accept
|
|
AllowedAddresses=
|
|
|
|
[Logging]
|
|
LogToConsole=yes
|
|
IBCCONF
|
|
|
|
echo "=== IBC Start-Script anpassen ==="
|
|
# IBC nutzt twsstart.sh oder StartTWS.sh je nach Version
|
|
IBC_SCRIPT=$(find "$IBC_DIR" -name "twsstart.sh" -o -name "StartTWS.sh" 2>/dev/null | head -1)
|
|
if [ -z "$IBC_SCRIPT" ]; then
|
|
echo "WARNUNG: IBC Start-Script nicht gefunden, manuell prüfen in $IBC_DIR"
|
|
else
|
|
echo "IBC Start-Script: $IBC_SCRIPT"
|
|
fi
|
|
|
|
echo "=== tws-ibc Systemd-Service erstellen ==="
|
|
sudo tee /etc/systemd/system/tws-ibc.service > /dev/null <<TWSSERVICE
|
|
[Unit]
|
|
Description=TWS via IBC (Interactive Brokers Controller)
|
|
After=novnc.service openbox.service
|
|
Requires=xvfb.service
|
|
|
|
[Service]
|
|
User=$TWS_USER
|
|
Environment=DISPLAY=:1
|
|
Environment=HOME=$TWS_HOME
|
|
WorkingDirectory=$IBC_DIR
|
|
ExecStart=$IBC_DIR/twsstart.sh
|
|
Restart=on-failure
|
|
RestartSec=30
|
|
StandardOutput=append:/var/log/tws-ibc.log
|
|
StandardError=append:/var/log/tws-ibc.log
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
TWSSERVICE
|
|
|
|
sudo touch /var/log/tws-ibc.log
|
|
sudo chown $TWS_USER:$TWS_USER /var/log/tws-ibc.log
|
|
|
|
sudo systemctl daemon-reload
|
|
|
|
echo ""
|
|
echo "=== Installation abgeschlossen ==="
|
|
echo ""
|
|
echo "WICHTIG: Vor dem Start von tws-ibc.service:"
|
|
echo " 1. IBC-Credentials eintragen:"
|
|
echo " sudo nano $IBC_DIR/config.ini"
|
|
echo " 2. IBC-Start-Script prüfen:"
|
|
echo " ls $IBC_DIR/"
|
|
echo " 3. Service aktivieren:"
|
|
echo " sudo systemctl enable --now tws-ibc"
|
|
echo ""
|
|
echo "TWS manuell testen (ohne IBC):"
|
|
echo " sudo -u tws DISPLAY=:1 $TWS_PATH/tws"
|
|
echo ""
|
|
echo "Logs:"
|
|
echo " tail -f /var/log/tws-ibc.log"
|
|
echo " journalctl -u tws-ibc -f"
|