Deploy runner with Docker-Compose
Pre-requisites
First, you need to have Docker installed on your server. If not already installed, please follow the instructions on this page.
After installing Docker, you need the following files in a directory:
services:
runner:
image: ghcr.io/brainboard/runner:latest
# You can also pin the version using any Brainboard version from our changelog (https://docs.brainboard.co/changelog)
# image: ghcr.io/brainboard/runner:2026.06.9
restart: unless-stopped
command: [ "/brainboard-runner" ]
stop_grace_period: 240s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./runner-config.yaml:/etc/brainboard-runner/config.yaml:ro"
- "/tmp:/tmp"log:
level: warn
runner:
name: "self-hosted runner"
token: "your-runner-token"
# API Base url (default to https://api.us1.brainboard.co)
# api:
# endpoint: "https://api.apac1.brainboard.co"Configuration
The runner-config.yaml file contains the Brainboard runner configuration. You can modify this file to change the runner's configuration. It's important to note that the runner-config.yaml file should be in the same directory as the docker-compose.yml file.
Before starting the runner for the first time, it is mandatory to update the runner.token configuration value in the runner-config.yaml file. Update this value with the private self-hosted runner token you generated from the Brainboard settings page.
This token should be unique and cannot be shared across multiple runners. If you use the same token on multiple runners, you will encounter issues when running CI/CD jobs.
Starting the runner
To start the runner, open a terminal and navigate to the directory where you downloaded the docker-compose and runner-config files. The following command will start the runner in the background:
Then, you can check on Brainboard's dashboard the last heartbeat and the status.
Usage
If you want to see the logs, you can run this command:
To stop the Brainboard runner, execute the following command:
Last updated