Install on Linux
The release assets, the checksum, one project folder with everything in it, the first commands, and the systemd unit when you want the daemon to outlive your shell.
Linux gets the whole product as native binaries. Expect ten minutes for the headless set and a first backtest; add the desktop app if the box has a display.
Requirements
x86-64 with glibc 2.39 or newer — the assets are dynamically linked against the release runner's Ubuntu 24.04, and an older host fails at exec, not at install. The desktop build additionally wants a Vulkan-capable GPU, an X11 or Wayland session and a font from the candidate set. Requirements has the measured numbers.
Steps
1. Choose a project root
One directory on a disk with room, owned by the user that will run the binaries, holding bin/,
settings/ (with state/ and state/logs/), user_data/ and market_data/. The root is a
parameter, not a convention.
R=/srv/vike-trader
mkdir -p "$R/bin" "$R/settings/state/logs" "$R/market_data"Not under $HOME if a system unit will run it
Every shipped unit sets ProtectHome=yes, which replaces /home with an empty directory inside
the unit's namespace, and ReadWritePaths= does not rescue it. The daemon then starts with no
settings and no credentials — No such file, not Permission denied — every venue silently on
paper. Measured, twice.
2. Download and verify
From the release: vike-cli, vike-tradehub, backtest, vike-datahub, vike-recorder,
vike-study, tearsheet, the desktop vike-desktop, and SHA256SUMS. The
manifest is the upload list — an asset cannot be published without a checksum — so verify the
lines for what you took:
cd "$R/bin"
grep -E ' (vike-cli|vike-tradehub|backtest|vike-datahub)$' SHA256SUMS | sha256sum -c
chmod +x vike-cli vike-tradehub backtest vike-datahubEvery Linux binary embeds its dependency SBOM (cargo auditable), and --version prints the
commit it was built from through vike_buildinfo::version_line.
3. First commands
cd "$R"
bin/vike-cli --version
bin/vike-cli config check # the verdict on settings/ and the credential store: exit 0 = nothing broken
bin/vike-cli init # scaffold user_data/ with runnable examples, and print the map
bin/backtest --seed-demo # the synthetic demo tape, under venue `demo`, into market_data/histvike-cli init writes only what is absent and never touches a file you edited. config check
judges the four settings files and the store; an absent credential store is fine, because absent
credentials are the live gate. Every binary resolves the project by walking up from the working
directory, so run them from $R, or set VIKE_SETTINGS_DIR=$R/settings to name it outright.
4. The desktop app, if you want it
bin/vike-desktopThe binary carries no hard dependency on libX11 or libwayland-client; winit loads them at window
creation, so a missing library surfaces as XNotSupported(LibraryOpenError) after the version
line. Install a font it can find — /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf is the floor
vike_app_core::fonts names — or the window controls render as empty boxes.
5. The daemon under systemd, when you want it unattended
The shipped unit deploy/vike-tradehub.service carries the placeholder root /srv/vike-tradehub;
substitute yours, check nothing was missed, install it as a system unit with a User= line, and
create settings/state first — under ProtectSystem=strict a missing ReadWritePaths= target
fails the unit with status=226.
cp settings/tradehub.example.toml "$R/settings/tradehub.toml" # the source tree's template; the image prints the same bytes with --template
sed "s,/srv/vike-tradehub,$R,g" deploy/vike-tradehub.service > /tmp/vike-tradehub.service
grep -n /srv/vike-tradehub /tmp/vike-tradehub.service # must print NOTHING
sudo install -Dm644 /tmp/vike-tradehub.service /etc/systemd/system/vike-tradehub.service
sudo systemctl daemon-reload && sudo systemctl enable --now vike-tradehubThe unit runs ExecStartPre=<root>/bin/vike-cli config check, so vike-cli must sit beside the
daemon or the unit fails with status=203/EXEC; it sets VIKE_LOG_FILE_LEVEL=warn and no
VIKE_LOG_DIR, so the log lands inside the one write grant; and it points EnvironmentFile= at
<root>/.env, never at the credential store. sudo systemctl stop is a graceful stop: SIGTERM
raises the same flag the interactive shutdown word raises and the ordinary teardown runs, as long
as TimeoutStopSec= stays above the profile's shutdown_deadline_ms.
Verify
bin/backtest --list # the compiled strategy names
journalctl -u vike-tradehub | grep '"kind":"ready"' # the daemon's ready banner, with its modeThe daemon logs the identity line first and its settings dir: line after it; with recording on,
its store open logs tick store root resolved … rung=project — read rung=, because exe-dir
means no project was found above the working directory.
Next steps
- Quickstart: first backtest — the demo tape you just seeded, through the standalone runner or the data service.
- Quickstart: first paper mount.
- Dukascopy needs the release's
jforex-bridge.jaratbin/jforex/jforex-bridge.jarand a JRE underbin/jre/; LightGBM needs bothbin/lightgbm/lightgbmand itsPROVENANCEfile. Both are Release assets, published beside the binaries and covered by the sameSHA256SUMS; a source checkout also ships a helper that stages and verifies them into exactly that layout. See Updating.
Troubleshooting
version 'GLIBC_2.39' not foundat exec. The host's glibc is older than the runner's.status=226or203/EXECfrom systemd.settings/stateis missing, orbin/vike-cliis.- Empty boxes instead of window controls. No font from the candidate set is installed.
rung=exe-dirin the daemon's store line. No project above the working directory; run from the root or setVIKE_SETTINGS_DIR. More under Troubleshooting.
Install on Windows
The two Windows assets, the unknown-publisher prompt on an unsigned executable, one project folder, and the first launch.
Updating
What a release is, how to tell which build is running, the order to update in, image tags, the runtime tools, and what a version bump does to a write-ahead journal.