---
title: Github Actions Runner
description: Deploy a self-hosted **GitHub Actions Runner** on Ubuntu 24.04 with Docker pre-installed. Connect the Droplet to your repository, organization, or …
product: Marketplace
url: https://docs.digitalocean.com/products/marketplace/catalog/github-actions-runner/
last_updated: "2026-09-03"
---

> **For AI agents:** The documentation index is at [https://docs.digitalocean.com/llms.txt](https://docs.digitalocean.com/llms.txt). Markdown versions of pages use the same URL with `index.html.md` in place of the HTML page (for example, append `index.html.md` to the directory path instead of opening the HTML document).

# Github Actions Runner

Generated on 3 Sep 2026 from [the Github Actions Runner catalog page](https://marketplace.digitalocean.com/apps/github-actions-runner)

## GitHub Actions Runner 1-Click Application

Deploy a self-hosted **GitHub Actions Runner** on Ubuntu 24.04 with Docker pre-installed. Connect the Droplet to your repository, organization, or enterprise and run CI/CD jobs on DigitalOcean infrastructure you control.

## What is Included

| Component | Purpose |
|---|---|
| GitHub Actions Runner | Official self-hosted runner agent (version pinned in the image build / `application.info`) |
| Docker & Docker Compose | Run workflows that use container jobs and services |
| UFW firewall | SSH rate-limited only; Docker uses the local unix socket |
| `runner` system user | Non-root account that executes jobs |
| Setup wizard | First-login registration with GitHub |
| `/opt/*-github-runner.sh` | Start, stop, restart, status, and update helpers |

## System Requirements

| Use case | Recommended size |
|---|---|
| Light CI (lint, unit tests) | 2 GB RAM / 1–2 vCPU |
| Container builds / moderate CI | 4 GB RAM / 2 vCPU |
| Heavy builds / parallel jobs | 8 GB+ RAM / 4+ vCPU |

Choose a Droplet size that matches your workflow resource needs when creating the Droplet from the Marketplace.

## Software Included

| Package | Version | License |
|---|---|---|
| Docker Compose | 3.0 | |

## Creating an App using the Control Panel

Click the **Deploy to DigitalOcean** button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/droplets/new?image=githubactionsrun)

## Creating an App using the API

In addition to creating a Droplet from the Github Actions Runner 1-Click App using the control panel, you can also use the [DigitalOcean API](https://docs.digitalocean.com/reference/api). As an example, to create a 4GB Github Actions Runner Droplet in the SFO2 region, you can use the following `curl` command. You need to either save your [API access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) to an environment variable or substitute it in the command below.

```shell
curl -X POST -H 'Content-Type: application/json' \
         -H 'Authorization: Bearer '$TOKEN'' -d \
        '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"githubactionsrun"}' \
        "https://api.digitalocean.com/v2/droplets"
```

## Getting Started After Deploying Github Actions Runner

1. **Create a registration token** on GitHub:

   Repository or Organization → **Settings** → **Actions** → **Runners** → **New self-hosted runner**.
2. **Deploy** this 1-Click from the DigitalOcean Marketplace.
3. **SSH** into the Droplet: `ssh root@your-droplet-ip`
4. **Complete the setup wizard** (runs on first login), or run:

   ```
   /etc/setup-github-runner.sh
   ```

   Enter:

   - GitHub URL (for example `https://github.com/ORG/REPO` or `https://github.com/ORG`)
   - Registration token (expires in about one hour; input is hidden)
   - Optional runner name and labels
5. Confirm the runner shows as **Idle** under your GitHub Runners page.

### Manual registration

```
cd /home/runner/actions-runner
sudo -u runner ./config.sh --url https://github.com/ORG/REPO --token YOUR_TOKEN
/opt/start-github-runner.sh
```

## Service Management

```
/opt/status-github-runner.sh
/opt/start-github-runner.sh
/opt/stop-github-runner.sh
/opt/restart-github-runner.sh
journalctl -u actions-runner -f
```

| Path | Description |
|---|---|
| `/home/runner/actions-runner` | Runner install directory |
| `/etc/setup-github-runner.sh` | Registration wizard |
| `/etc/systemd/system/actions-runner.service` | systemd unit |
| `/opt/start-github-runner.sh` | Start the runner |
| `/opt/stop-github-runner.sh` | Stop the runner |
| `/opt/restart-github-runner.sh` | Restart the runner |
| `/opt/status-github-runner.sh` | Show status |
| `/opt/update-github-runner.sh` | Update runner binaries |

## Using the Runner in Workflows

Target the self-hosted runner with:

```
jobs:
  build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v4
      - run: echo "Running on DigitalOcean"
```

Add custom labels during setup to select specific Droplets:

```
runs-on: [self-hosted, linux, production]
```

Docker is available for jobs that use the `container:` key or build images.

## Updating

On a live Droplet:

```
/opt/update-github-runner.sh           # latest release
/opt/update-github-runner.sh <VERSION> # specific version (e.g. from actions/runner releases)
```

Or follow [GitHub’s upgrade documentation](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/upgrading-self-hosted-runners). To change the version baked into new Marketplace images, rebuild with an updated `application_version` in `template.json`.

## Security Notes

- Prefer **private** repositories with self-hosted runners.
- Forks of **public** repositories can run untrusted workflow code on this machine.
- Treat registration tokens as secrets; they expire quickly.
- Restrict SSH access with a DigitalOcean Cloud Firewall when possible.
- Docker API ports are not exposed; only SSH is allowed through UFW.

## Support and Resources

- [About self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)
- [Adding self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners)
- [actions/runner releases](https://github.com/actions/runner/releases)
- [DigitalOcean Community](https://www.digitalocean.com/community)