Installation
The Local Backtester runs as a Docker container. Follow the instructions for your operating system below.
Prerequisites
- Crodl Lifetime Membership — Required to generate a backtester token
macOS
1. Install Docker Desktop
- Download Docker Desktop for Mac (supports both Intel and Apple Silicon)
- Open the
.dmgfile and drag Docker to your Applications folder - Launch Docker Desktop from Applications and wait for it to start (you'll see the whale icon in the menu bar)
2. Pull the Image
Open Terminal (found in Applications → Utilities) and run:
docker pull crodlbacktester/crodlbacktester:latest3. Create a Working Directory
mkdir -p ~/crodl-backtester/data ~/crodl-backtester/results ~/crodl-backtester/state4. Run the Container
docker run -d \
--name crodl-backtester \
-p 127.0.0.1:8888:8888 \
-v ~/crodl-backtester/data:/app/data \
-v ~/crodl-backtester/results:/app/results \
-v ~/crodl-backtester/state:/app/state \
crodlbacktester/crodlbacktester:latest5. Open the Interface
Go to http://localhost:8888 in your browser and log in with your backtester token.
Windows
1. Install Docker Desktop
- Download Docker Desktop for Windows
- Run the installer — it will enable WSL 2 automatically if needed
- Restart your computer if prompted
- Launch Docker Desktop and wait for it to start (you'll see the whale icon in the system tray)
Docker Desktop requires Windows 10/11 (64-bit) with WSL 2 enabled. The installer handles this automatically in most cases.
2. Pull the Image
Open PowerShell (right-click Start → Terminal or search for "PowerShell") and run:
docker pull crodlbacktester/crodlbacktester:latest3. Create a Working Directory
mkdir "$env:USERPROFILE\crodl-backtester\data","$env:USERPROFILE\crodl-backtester\results","$env:USERPROFILE\crodl-backtester\state"4. Run the Container
docker run -d `
--name crodl-backtester `
-p 127.0.0.1:8888:8888 `
-v "$env:USERPROFILE\crodl-backtester\data:/app/data" `
-v "$env:USERPROFILE\crodl-backtester\results:/app/results" `
-v "$env:USERPROFILE\crodl-backtester\state:/app/state" `
crodlbacktester/crodlbacktester:latest5. Open the Interface
Go to http://localhost:8888 in your browser and log in with your backtester token.
Linux
1. Install Docker
Run the following commands in your terminal:
# Install Docker using the official convenience script
curl -fsSL https://get.docker.com | sudo sh
# Add your user to the docker group (so you don't need sudo)
sudo usermod -aG docker $USER
# Log out and back in for the group change to take effectAfter adding yourself to the docker group, log out and log back in (or run newgrp docker) before continuing.
2. Pull the Image
docker pull crodlbacktester/crodlbacktester:latest3. Create a Working Directory
mkdir -p ~/crodl-backtester/data ~/crodl-backtester/results ~/crodl-backtester/state4. Run the Container
docker run -d \
--name crodl-backtester \
-p 127.0.0.1:8888:8888 \
-v ~/crodl-backtester/data:/app/data \
-v ~/crodl-backtester/results:/app/results \
-v ~/crodl-backtester/state:/app/state \
crodlbacktester/crodlbacktester:latest5. Open the Interface
Go to http://localhost:8888 in your browser and log in with your backtester token.
Authentication
Enter your backtester token to access the application. See Authentication for how to generate and manage your token.
Updating
When a new version is available, the backtester will show an update banner in the sidebar. To update:
docker pull crodlbacktester/crodlbacktester:latest
docker stop crodl-backtester
docker rm crodl-backtesterThen re-run the docker run command for your platform from above. Your data, results, and state are preserved in the mounted volumes.
Stopping & Starting
# Stop the backtester
docker stop crodl-backtester
# Start it again
docker start crodl-backtesterUsing Docker Compose (Optional)
If you prefer Docker Compose, create a docker-compose.yml file in your working directory:
services:
backtester:
image: crodlbacktester/crodlbacktester:latest
ports:
- "127.0.0.1:8888:8888"
volumes:
- ./data:/app/data
- ./results:/app/results
- ./state:/app/stateThen run:
docker compose up -dThe 127.0.0.1: prefix in the port mapping publishes the backtester on loopback only, so it's only reachable from your machine — not from your network. If you remove the prefix (-p 8888:8888), Docker publishes the port on all interfaces and anyone on your local network could reach the UI.