Skip to main content

GitHub Self Hosted Runners: Complete Beginner's Guide with Setup Steps

· By Dharm Thakor · 3 min read

Introduction

If you use GitHub Actions, you already know how powerful automation can be. Push code → run tests → deploy automatically.

But what if GitHub's default runners feel slow? What if you need more control, better performance, or access to private systems?

That is where GitHub self hosted runners come in.

In this guide, I will explain self hosted runners in plain English. No confusion. No heavy jargon. Just clear answers, real examples, and step by step setup instruction.

What are GitHub Self Hosted Runners?

A GitHub self hosted runner is a machine that you own and manage that runs GitHub Actions jobs. Instead of using GitHub is cloud runner, your workflows run on:

• Your own server

• Your own VM

• Your own PC

• Your own cloud instance

In short, you control the environment.

GitHub Hosted vs Self Hosted Runners

GitHub Hosted Runners

• Managed by GitHub

• Limited customization

• Shared environment

• Usage limits

Self Hosted Runners

• Fully customization

• Dedicated resources

• Better performance

• No job time limits (practically)

Why Use GitHub Self Hosted Runners?

Self hosted runners are not for everyone. But they shine in specific situations.

Commons Use Cases

Large builds that need more CPU/RAM
Access to private databases or internal networks
Custom software or tools
Faster CI/CD pipelines
Compliance and security requirements

Example:

A fintech app that must run tests inside a private network.

How GitHub Self Hosted Runners Work

Here is the simple flow:

  1. You set up a machine (server, VM, or PC)
  2. You install the GitHub runner software
  3. The runner connects securely to GitHub
  4. GitHub sends jobs to your machine
  5. Your machine runs the workflow
  6. Result are sent back to GitHub

The runner only listens for jobs. GitHub never directly controls your system.

Supported Operating Systems

GitHub self hosted runners work on:

Linux (most popular)

Windows

macOS

Linux is preferred for:

• Stability

• Speed

• Lower cost

• Better automation

Step by Step: Hoe to Set Up a GitHub Self Hosted Runner

Step 1: Prepare the Machine

Minimum recommendation:

• 2 CPU cores

• 4 GB RAM

• Stable internet

• Non root user (Linux)

Cloud or on premise both work.

Step 2: Go to GitHub Repository Settings

  1. Open your GitHub repo
  2. Go to Settings
  3. Click Action
  4. Select Runners
  5. Click New self hosted runner

Choose:

• Operating system

• Architecture

Step 3: Download the Runner

GitHub will give you commands like:

Code → mkdir actions-runner

cd action-runner

curl -o actions-runner.tar.gz -L https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz

tar xzf actions-runner.tar.gz

Step 4: Configure the Runner

Run the configuration script:

Code → ./config.sh --url https://github.com/username/repo --token YOUR_TOKEN

You will be asked:

• Runner name

• Labels

• Work folder

Step 5: Start the Runner

Code → ./run.sh

Your runner is now online

Step 6: Use It in GitHub Action

In your workflow file:

Code→ runs-on: self-hosted

Or use labels:

Code→ runs-on: [self-hosted, linux, x64]

Using Labels for Better Control

Labels help you target specific runners.

Examples

→ docker

→ high-memory

→ gpu

→ production

This is extremely useful when you have multiple runners.

Security Best Practices

Self hosted runners give power. Power needs responsibility.

Important Security Tips

Use dedicated machines
Avoid running untrusted workflows
Rotate runner tokens
Restrict repository access
Use firewall rules
Run runner as non root users

Never expose runners directly to the internet without protection.

Pros and Cons of GitHub Self Hosted Runners

Pros

• Full control over environment

• Faster builds

• No GitHub usage limits

• Custom tools and dependencies

• Better security for private systems

Cons

• You manage maintenance

• Requires monitoring

• Scaling needs planning

• Security is your responsibility

• Initial setup effort

When Should You Use Self Hosted Runners?

Use them if:

• You need speed

• You need custom tools

• You need private access

• You run many workflows daily

Avoid them if:

• You want zero maintenance

• Your builds are small

• GitHub hosted runners are enough

Common Real World Example

A startup uses:

• GitHub hosted runners for PR checks

• Self hosted runners for production deployments

This hybrid model works very well.

Conclusion

GitHub self hosted runners give you freedom and control.

They are faster.

They are flexible.

They are powerful.

But they also require responsibility. If your project has grown beyond basic CI needs, self hosted runners are a smart next step.

Start small.
Secure properly.
Secure gradually.

Once setup correctly, they can transform your CI/CD pipeline.

FAQs About GitHub Self Hosted Runners

Q1. Are GitHub self hosted runners free?

Yes. GitHub does not charge for self hosted runner usage.

Q2. Can I run multiple runners on one machine?

Yes, but resource allocation must be handled carefully.

Q3. Are self hosted runners secure?

They can be, if configured properly with strict access control.

Q4. Can I use Docker with self hosted runners?

Yes. Docker is commonly used with self hosted runners.

Q5. Do self hosted runners support auto scaling?

Yes, using cloud VMs, containers, or orchestration tools.

About the author

Dharm Thakor Dharm Thakor
Updated on Dec 22, 2025