# Podman-Quadlet-Einheit – der sauberste Weg, TradeMind dauerhaft laufen zu lassen. # # Installation (rootless, empfohlen): # mkdir -p ~/.config/containers/systemd # cp deploy/trademind.container ~/.config/containers/systemd/ # mkdir -p ~/.config/trademind && cp config/config.yaml config/trademind.env ~/.config/trademind/ # systemctl --user daemon-reload # systemctl --user start trademind # systemctl --user status trademind # journalctl --user -u trademind -f # # Damit der Dienst auch ohne aktive Anmeldung läuft: # loginctl enable-linger $USER # # Für den systemweiten Betrieb stattdessen nach /etc/containers/systemd/ kopieren # und "systemctl" ohne --user verwenden. [Unit] Description=TradeMind – selbstlernender Krypto-Trading-Bot Documentation=https://github.com/tlt-turbo/trademind After=network-online.target Wants=network-online.target [Container] Image=localhost/trademind:latest ContainerName=trademind AutoUpdate=local # Konfiguration schreibgeschützt, Daten persistent Volume=%h/.config/trademind:/config:ro,Z Volume=trademind-data.volume:/data:Z EnvironmentFile=%h/.config/trademind/trademind.env Environment=TRADEMIND_CONFIG=/config/config.yaml Exec=run --config /config/config.yaml # Dashboard und Metriken auf allen Interfaces, also von außen erreichbar. # Die Endpunkte sind lesend, aber unauthentifiziert – sie zeigen Kontostand, Positionen # und Trade-Historie. In offenen Netzen einen Reverse Proxy mit Authentifizierung # davorsetzen oder hier auf 127.0.0.1:8080:8080 zurückstellen. PublishPort=8080:8080 # Härtung NoNewPrivileges=true DropCapability=ALL UserNS=keep-id HealthCmd=python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8080/health', timeout=4).status==200 else 1)" HealthInterval=30s HealthTimeout=5s HealthRetries=3 HealthStartPeriod=45s [Service] Restart=always RestartSec=15 # SIGTERM zuerst – die Engine beendet den laufenden Durchlauf und speichert das Modell. TimeoutStopSec=90 [Install] WantedBy=default.target