Install Runstone
Run Runstone on any Docker host in minutes.
Runstone runs as a single Docker container. It bundles a reverse proxy, job queue, and application server — plus the GitHub Actions runner binary. No external databases or dependencies to configure. Pick your platform below to get started.
Quick start
One command to get running. Works on any x86_64 system with Docker installed.
docker run -d \
--name runstone \
-p 6586:8080 \
-v /path/to/config:/config \
-v /path/to/data:/data \
-e ENCRYPTION_KEY=$(openssl rand -hex 32) \
-e TZ=Europe/London \
--restart unless-stopped \
tindralabs/runstone:latest
Then open http://your-server:6586 in your browser.
Platform guides
Select your platform for step-by-step instructions.
Install Docker Desktop
Download and install Docker Desktop for Mac or Windows. Make sure it's running before continuing.
Create directories
Create folders to store your Runstone configuration and runner data.
mkdir -p ~/runstone/config ~/runstone/data Run the container
Open a terminal and run the following command.
docker run -d \
--name runstone \
-p 6586:8080 \
-v ~/runstone/config:/config \
-v ~/runstone/data:/data \
-e ENCRYPTION_KEY=$(openssl rand -hex 32) \
-e TZ=Europe/London \
--restart unless-stopped \
tindralabs/runstone:latest Open the web UI
Navigate to http://localhost:6586 in your browser. You can start configuring your GitHub runners straight away.
Docker Compose
Prefer Docker Compose? Save this as docker-compose.yml and run docker compose up -d.
services:
runstone:
image: tindralabs/runstone:latest
ports:
- "6586:8080"
volumes:
- /path/to/config:/config
- /path/to/data:/data
environment:
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
- TZ=Europe/London
- PUID=1000
- PGID=1000
restart: unless-stopped
Generate your ENCRYPTION_KEY with: openssl rand -hex 32. Store it in a .env file alongside your docker-compose.yml.
Environment variables
Configure Runstone with these environment variables.
ENCRYPTION_KEY Required Encryption key for stored GitHub tokens. Generate with openssl rand -hex 32.
TZ Recommended Timezone for log timestamps. Examples: Europe/London, America/New_York.
PUID NAS User ID for file ownership. Check with id -u on your host. Important for NAS platforms.
PGID NAS Group ID for file ownership. Check with id -g on your host. Important for NAS platforms.
Volumes
/config SQLite database, Valkey data, and encryption key file. Back this up regularly.
/data Runner binaries, workspaces, and build artefacts. Point this to fast storage for best performance.
After installation
Open the web UI
Navigate to http://your-server:6586 in your browser.
Connect your GitHub repository
Add your repository or organisation URL and a personal access token with the admin:org scope (or repo scope for repository-level runners).
Create a runner
Name your runner, set labels, and choose how many instances to spin up.
Start and monitor
Hit start and watch your runner register with GitHub. The dashboard shows real-time CPU, memory, and status updates.
Activate your license (optional)
Enter your license key under Settings to unlock unlimited runners, ephemeral cycling, shard labels, and auto-cleanup.
Need help getting started?