Ib Gateway Docker
Docker image with IB Gateway/TWS and IBC
Install / Use
npx skills add gnzsnz/ib-gateway-dockerInstalls into whichever agent you are using.
README
Interactive Brokers Gateway Docker
<img src="https://github.com/gnzsnz/ib-gateway-docker/blob/master/logo.png" height="300" class="center" alt="IB Gateway Docker"/>What is it?
A docker image to run Interactive Brokers Gateway and TWS without any human interaction on a docker container
It includes:
- IB Gateway (stable or latest)
- Trader Workstation TWS (stable or latest), from
10.26.1h - IBC - to control TWS/IB Gateway (simulates user input).
- Xvfb - a X11 virtual framebuffer to run IB Gateway Application without graphics hardware.
- x11vnc - a VNC server to interact with the IB Gateway user interface (optional, for development / maintenance purpose).
- xrdp/xfce enviroment for TWS. Build on top of linuxserver/rdesktop.
- socat a tool to accept TCP connection from non-localhost and relay it to IB Gateway from localhost (IB Gateway restricts connections to container's 127.0.0.1 by default).
- Optional remote SSH tunnel
to provide secure connections for both IB Gateway and VNC. Only available for
10.19.2g-stableand10.25.1o-latestor greater. - Support parallel execution of
liveandpapertrading mode. - Secrets support (latest
10.29.1e, stable10.19.2mor greater) - aarch64 support, ex raspberry pi, M1,M2,M3,.., since
10.37.1l/10.39.1e - Execution of custom scripts during star-up process.
- Works well together with Jupyter Quant docker image.
Supported Tags
Images are provided for [IB gateway][1] and [TWS][2]. With the following tags:
| Image| Channel | IB Gateway Version | IBC Version | Docker Tags |
| --- | -------- | ------------------- | ---------------- | ---------------------------------------------- |
| [ib-gateway][1] | latest | 10.49.1e | 3.24.1 | latest 10.49 10.49.1e |
| [ib-gateway][1] |stable | 10.45.1j | 3.24.1 | stable 10.45 10.45.1j |
| [tws-rdesktop][2] | latest | 10.49.1e | 3.24.1 | latest 10.49 10.49.1e |
| [tws-rdesktop][2] |stable | 10.45.1j | 3.24.1 | stable 10.45 10.45.1j |
All tags are available in the container repository for [ib-gateway][1] and [tws-rdesktop][2]. IB Gateway and TWS share the same version numbers and tags.
How to use it?
Create a docker-compose.yml file (or include ib-gateway services on your existing
one). The sample files provided can be used as starting point,
ib-gateway-compose and
tws-rdesktop-compose.
name: algo-trader
services:
ib-gateway:
restart: always
build:
context: ./stable
tags:
- "ghcr.io/gnzsnz/ib-gateway:stable"
image: ghcr.io/gnzsnz/ib-gateway:stable
environment:
TWS_USERID: ${TWS_USERID}
TWS_PASSWORD: ${TWS_PASSWORD}
TWS_PASSWORD_FILE: ${TWS_PASSWORD_FILE}
TRADING_MODE: ${TRADING_MODE:-paper}
TWS_SETTINGS_PATH: ${TWS_SETTINGS_PATH:-}
TWS_ACCEPT_INCOMING: ${TWS_ACCEPT_INCOMING:-}
TWS_MASTER_CLIENT_ID: ${TWS_MASTER_CLIENT_ID:-}
READ_ONLY_API: ${READ_ONLY_API:-}
VNC_SERVER_PASSWORD: ${VNC_SERVER_PASSWORD:-}
TWOFA_TIMEOUT_ACTION: ${TWOFA_TIMEOUT_ACTION:-exit}
BYPASS_WARNING: ${BYPASS_WARNING:-}
AUTO_RESTART_TIME: ${AUTO_RESTART_TIME:-}
AUTO_LOGOFF_TIME: ${AUTO_LOGOFF_TIME:-}
TWS_COLD_RESTART: ${TWS_COLD_RESTART:-}
SAVE_TWS_SETTINGS: ${SAVE_TWS_SETTINGS:-}
RELOGIN_AFTER_TWOFA_TIMEOUT: ${RELOGIN_AFTER_TWOFA_TIMEOUT:-no}
TWOFA_EXIT_INTERVAL: ${TWOFA_EXIT_INTERVAL:-60}
TWOFA_DEVICE: ${TWOFA_DEVICE:-}
EXISTING_SESSION_DETECTED_ACTION: ${EXISTING_SESSION_DETECTED_ACTION:-primary}
ALLOW_BLIND_TRADING: ${ALLOW_BLIND_TRADING:-no}
TIME_ZONE: ${TIME_ZONE:-Etc/UTC}
TZ: ${TIME_ZONE:-Etc/UTC}
CUSTOM_CONFIG: ${CUSTOM_CONFIG:-NO}
JAVA_HEAP_SIZE: ${JAVA_HEAP_SIZE:-}
SSH_TUNNEL: ${SSH_TUNNEL:-}
SSH_OPTIONS: ${SSH_OPTIONS:-}
SSH_ALIVE_INTERVAL: ${SSH_ALIVE_INTERVAL:-}
SSH_ALIVE_COUNT: ${SSH_ALIVE_COUNT:-}
SSH_PASSPHRASE: ${SSH_PASSPHRASE:-}
SSH_REMOTE_PORT: ${SSH_REMOTE_PORT:-}
SSH_USER_TUNNEL: ${SSH_USER_TUNNEL:-}
SSH_RESTART: ${SSH_RESTART:-}
SSH_VNC_PORT: ${SSH_VNC_PORT:-}
START_SCRIPTS: ${START_SCRIPTS:-}
X_SCRIPTS: ${X_SCRIPTS:-}
IBC_SCRIPTS: ${IBC_SCRIPTS:-}
# volumes:
# - ${PWD}/jts.ini:/home/ibgateway/Jts/jts.ini
# - ${PWD}/config.ini:/home/ibgateway/ibc/config.ini
# - ${PWD}/tws_settings/:${TWS_SETTINGS_PATH:-/home/ibgateway/tws_settings}
# - ${PWD}/ssh/:/home/ibgateway/.ssh
# - ${PWD}/init-scripts:/home/ibgateway/init-scripts
ports:
- "127.0.0.1:4001:4003"
- "127.0.0.1:4002:4004"
- "127.0.0.1:5900:5900"
Create an .env on root directory. You can use the provided .env-dist as a starting point. Example .env file:
TWS_USERID=myTwsAccountName
TWS_PASSWORD=myTwsPassword
# see credentials section
#TWS_PASSWORD_FILE
#TWS_USERID_PAPER=
#TWS_PASSWORD_PAPER=
#TWS_PASSWORD_PAPER_FILE=
# ib-gateway
#TWS_SETTINGS_PATH=/home/ibgateway/tws_settings
# tws
#TWS_SETTINGS_PATH=/config/tws_settings
TWS_SETTINGS_PATH=
TWS_ACCEPT_INCOMING=
TRADING_MODE=paper
READ_ONLY_API=no
VNC_SERVER_PASSWORD=myVncPassword
TWOFA_TIMEOUT_ACTION=restart
TWOFA_DEVICE=
BYPASS_WARNING=
AUTO_RESTART_TIME=11:59 PM
AUTO_LOGOFF_TIME=
TWS_COLD_RESTART=
SAVE_TWS_SETTINGS=
RELOGIN_AFTER_TWOFA_TIMEOUT=yes
EXISTING_SESSION_DETECTED_ACTION=primary
ALLOW_BLIND_TRADING=no
TIME_ZONE=Europe/Zurich
CUSTOM_CONFIG=
SSH_TUNNEL=
SSH_OPTIONS=
SSH_ALIVE_INTERVAL=
SSH_ALIVE_COUNT=
SSH_PASSPHRASE=
SSH_REMOTE_PORT=
SSH_USER_TUNNEL=
SSH_RESTART=
SSH_VNC_PORT=
#START_SCRIPTS=init-scripts/start_scripts
#X_SCRIPTS=init-scripts/x_scripts
#IBC_SCRIPTS=init-scripts/ibc_scripts
Once docker-compose.yml and .env are in place you can start the container with:
docker compose up
To get a GUI you can use vnc for ib-gateway or RDP for TWS.
Looking for help? Please keep reading below, or go to discussion section for common problems and solutions. If you have problems please go through the troubleshooting guide
Configuration
All environment variables are common between ibgateway and TWS image, unless specifically stated. The container can be configured with the following environment variables:
| Variable | Description | Default |
| --- | --- | --- |
| TWS_USERID | The TWS username. | |
| TWS_PASSWORD | The TWS password. | |
| TWS_PASSWORD_FILE | The file containing TWS password. See credentials section. | |
| TRADING_MODE | live or paper. From 10.26.1k it supports both which will start ib-gateway or TWS in live AND paper mode in parallel within the container. | paper |
| TWS_USERID_PAPER | If TRADING_MODE=both, then this is required to pass paper account user | not defined |
| TWS_PASSWORD_PAPER | If TRADING_MODE=both, then this is required to pass paper account password | not defined |
| TWS_PASSWORD_PAPER_FILE | If TRADING_MODE=both, then this is required to pass paper account password. See credentials section. | not defined |
| READ_ONLY_API | yes or no. See IBC documentation | not defined |
| VNC_SERVER_PASSWORD | VNC server password. If not defined, then VNC server will NOT start. Specific to ibgateway, ignored by TWS. See credentials section. | not defined (VNC disabled) |
| VNC_SERVER_PASSWORD_FILE | VNC server password. If not defined, then VNC server will NOT start. Specific to ibgateway, ignored by TWS. | not defined (VNC disabled) |
| TWOFA_TIMEOUT_ACTION | 'exit' or 'restart', set to 'restart if you set AUTO_RESTART_TIME. See IBC documentation | exit |
| TWOFA_DEVICE | second factor authentication device. See IBC documentation | not defined |
| TWOFA_EXIT_INTERVAL | It controls how lon
Related Skills
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
prose
385.5kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
blender-python-addon
40.5kBlender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting
flutter-development-guidelines-cursorrules-prompt-file
40.5kCursor rules for Flutter development with MVVM architecture, Riverpod state management, Material widgets, and Dart style guidelines.
