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.

1

Install Docker Desktop

Download and install Docker Desktop for Mac or Windows. Make sure it's running before continuing.

2

Create directories

Create folders to store your Runstone configuration and runner data.

mkdir -p ~/runstone/config ~/runstone/data
3

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
4

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

1

Open the web UI

Navigate to http://your-server:6586 in your browser.

2

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).

3

Create a runner

Name your runner, set labels, and choose how many instances to spin up.

4

Start and monitor

Hit start and watch your runner register with GitHub. The dashboard shows real-time CPU, memory, and status updates.

5

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?