Der offene Stand lag ueber sieben Konzepte, zwei Referenzdokumente und die
Phasen-Checkliste der Architektur verteilt. Dieselbe Aufgabe stand teils
doppelt unter zwei Namen - die asynchrone Fill-Verfolgung etwa als "bekannte
Grenze" in IBKR-Integration.md und zugleich als W-2 im OptionsWheel-Konzept.
Wer wissen wollte, was als Naechstes ansteht, musste alles neun lesen.
docs/ROADMAP.md fuehrt das zusammen:
- Fuenf Stufen in Abhaengigkeitsreihenfolge, von "Fundament schliessen" bis
zum OptionsWheel, dazu vier laufende Bahnen (Auslieferung, Accounting,
Supervisor, technische Schulden).
- Jede Zeile traegt ihre Herkunft (W-2, P5, Kapitalmodell 5, ...), damit die
Herleitung im Archiv auffindbar bleibt.
- Eigene Abschnitte fuer Zurueckgestelltes und Verworfenes. Zurueckgestellte
Ideen nennen ausdruecklich, WAS sie wieder aktuell macht; verworfene nennen
den Grund, damit sie nicht in sechs Monaten erneut vorgeschlagen werden.
- Erledigtes bleibt als Zeile mit Datum stehen statt zu verschwinden.
Archiv (git erkennt alle sieben als Umbenennung, Historie bleibt):
docs/konzepte/* -> docs/archiv/
docs/Kapital-und-Buchmodell.md -> docs/archiv/
Jedes archivierte Dokument bekommt oben einen Vermerk, warum es erhalten bleibt
und wo der lebende Stand steht. Inhaltlich ist keines veraendert.
Weiter gepflegt werden ARCHITECTURE.md (Aufbau + Phasen-Historie),
IBKR-Integration.md (Adapter-Design und Grenzen) und die TWS-Setup-Checkliste -
das sind Referenzen, keine Planung. Ihre eigenen Offen-Listen verweisen jetzt
mit Roadmap-Kennung dorthin, statt einen zweiten Stand zu fuehren.
Alle 63 relativen Markdown-Links geprueft, keiner tot. Fuenf Pfadverweise in
Code, csproj und systemd-Unit mitgezogen; die Unit zeigte auf die
Portierungsanalyse, die ausdruecklich den Stand VOR dem Umbau beschreibt - jetzt
auf ARCHITECTURE.md. Build 0 Warnungen, 198/198 Tests gruen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
65 lines
2.1 KiB
Desktop File
65 lines
2.1 KiB
Desktop File
#
|
||
# systemd-Unit für den kopflosen IBKRTrader-Dienst.
|
||
#
|
||
# sudo cp deploy/ibkrtrader.service /etc/systemd/system/
|
||
# sudo systemctl daemon-reload
|
||
# sudo systemctl enable --now ibkrtrader
|
||
# journalctl -u ibkrtrader -f
|
||
#
|
||
# Voraussetzungen auf dem Host:
|
||
# - .NET-10-Runtime (dotnet-runtime-10.0)
|
||
# - libicu → PFLICHT. Ohne ICU fällt die Auflösung von Windows-Zeitzonen-IDs aus und die
|
||
# feste de-DE-Formatierung im PDF-Export kippt auf invariant. Beides würde
|
||
# lautlos falsche Ausgaben erzeugen, nicht etwa einen Fehler.
|
||
# - fonts-dejavu-core → nur für den PDF-Export des Accounting-Moduls.
|
||
# - mariadb-client → nur für den BackupWorker (mariadb-dump).
|
||
#
|
||
[Unit]
|
||
Description=IBKRTrader (kopfloser Handelsdienst)
|
||
Documentation=file:///opt/ibkrtrader/docs/ARCHITECTURE.md
|
||
After=network-online.target
|
||
Wants=network-online.target
|
||
|
||
[Service]
|
||
Type=notify
|
||
NotifyAccess=all
|
||
|
||
User=ibkrtrader
|
||
Group=ibkrtrader
|
||
|
||
WorkingDirectory=/opt/ibkrtrader
|
||
ExecStart=/opt/ibkrtrader/IBKRTrader.Daemon
|
||
|
||
# Ablageorte. Ohne diese Variablen weicht die Anwendung selbst auf die FHS-Pfade aus, sobald
|
||
# /opt/ibkrtrader nicht beschreibbar ist – ausdrücklich gesetzt ist es aber nachvollziehbarer.
|
||
Environment=IBKRTRADER_CONFIG_DIR=/etc/ibkrtrader
|
||
Environment=IBKRTRADER_DATA_DIR=/var/lib/ibkrtrader
|
||
Environment=IBKRTRADER_LOG_DIR=/var/log/ibkrtrader
|
||
|
||
# Der Master-Key gehört NICHT in diese Datei (sie ist für alle lesbar). Entweder als Datei
|
||
# /etc/ibkrtrader/master.key mit chmod 600, oder über eine EnvironmentFile mit 600:
|
||
# EnvironmentFile=/etc/ibkrtrader/secrets.env
|
||
Environment=DOTNET_EnableDiagnostics=0
|
||
|
||
# Geordnetes Herunterfahren: SIGTERM, dann Zeit für offene Broker-Anfragen und den Modul-Stopp.
|
||
KillSignal=SIGTERM
|
||
TimeoutStopSec=60
|
||
Restart=on-failure
|
||
RestartSec=15
|
||
|
||
# Absicherung. Der Dienst braucht nur seine drei Verzeichnisse beschreibbar.
|
||
NoNewPrivileges=true
|
||
PrivateTmp=true
|
||
ProtectSystem=strict
|
||
ProtectHome=true
|
||
ReadWritePaths=/var/lib/ibkrtrader /var/log/ibkrtrader
|
||
ProtectKernelTunables=true
|
||
ProtectKernelModules=true
|
||
ProtectControlGroups=true
|
||
RestrictSUIDSGID=true
|
||
RestrictNamespaces=true
|
||
LockPersonality=true
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|