Skip to content

How to Set Up a Self-Hosted GitHub Runner

Requirements to start our own GitHub runner:

  • PAT token
  • Organization name
  • Container with github runner
  • Docker host

Let's set it up step by step. For container with github runner we will use github-runner.

Getting PAT token

  1. Go to Personal Access Tokens page and click on Generate new token. pat_1
  2. Enter Token name, select Resource owner (name of your organization) and Expiration (for security reasons, it's better not to use unlimited time.). pat_2
  3. Click on the arrow on the right side of Organization permissions. pat_3
  4. Select Access: Read and write for Self-hosted runners. pat_4
  5. Now click on Generate token. pat_5
  6. Copy generated token (it starts with github_pat_...) in the safe place.

Getting organization name

I'm the owner of multiple organizations.. For example, I will use a self-hosted runner for fasthelp-ai organization. org_1

Starting our runner

Probably we need to change rights for docker.sock, because our runner will need access to docker.sock. It's possible to do it via this command in terminal. In case of debian/ubuntu:

shell
sudo chmod 666 /var/run/docker.sock

Option 1. Docker oneliner

Now we can use our PAT token, organization name, and optional name.

shell
docker run --rm \
  -e ORG=fasthelp-ai \
  -e ACCESS_TOKEN=github_pat_... \
  -e NAME=hetzner-1 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/romnovi/github-runner:main

Option 2. Docker compose

shell
services:
  runner:
    image: ghcr.io/romnovi/github-runner:main
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - ORG=fasthelp-ai
      - ACCESS_TOKEN=github_pat_...
      - NAME=hetzner-1

Checking

After we start runner we can check its status on the settings page of organization: Actions -> Runners. check_1