Skip to main content
All CollectionsVPSVPS OS and Templates
How to use the Fireactions VPS template
How to use the Fireactions VPS template

Getting started with the Fireactions VPS Template

Updated this week

Why Fireactions?

Fireactions is designed to be a cost-effective, fast, and secure solution for running self-hosted GitHub runners. It is built on top of Firecracker microVMs, which provide a lightweight and secure environment for running workloads.

Several key features:

  • Scalable
    Pool-based scaling approach. Fireactions always ensure the minimum number of GitHub runners in the pool.

  • Ephemeral
    Each virtual machine is created from scratch and destroyed after the job is finished; no state is preserved between jobs, just like with GitHub-hosted runners.

  • Customizable
    Define job labels and customize virtual machine resources to fit Your needs.

Why Firecracker?

Firecracker is a lightweight virtual machine monitor (VMM) that uses the Linux Kernel-based Virtual Machine (KVM) to create and manage microVMs. MicroVMs are lightweight, fast, and secure virtual machines that are designed to run a single application or service.

Compared to containers, microVMs provide a higher level of isolation and security, as each microVM runs in its own isolated environment. This makes them ideal for running untrusted workloads, such as CI/CD jobs.

Configuring Fireactions

To start using Fireactions, a few steps have to be performed:

Create and install a GitHub App (see Creating a GitHub App) with the following permissions:

  • Read access to metadata

  • Read and write access to actions and organization self-hosted runners

Note down the GitHub App ID as well as Github Organization, and generate a private key. This data will need to be added manually on the VPS in the following file /etc/fireactions/config.yml using your favorite text editor, for example:

nano /etc/fireactions/config.yml

Example of content:

app_private_key: |

-----BEGIN RSA PRIVATE KEY-----

#

app_id: 12345

organization: MyORG

After configuration is done, the Fireactions service has to be restarted with the following command: systemctl restart fireactions.service

This creates a default configuration with a single pool named default with a single runner. Check Configuration for more information and further configuration possibilities.

To create a new GitHub workflow, you need to create a new file in the .github/workflows directory of your repository. The file should have an .yml extension and contain the following content:

# .github/workflows/test.yaml
name: test

on:
workflow_dispatch:
pull_request:
branches:
- '*'
push:
branches:
- main

jobs:
test:
name: test
runs-on: # The label(s) of the Fireactions pool
- self-hosted
- fireactions
steps:
- name: Example
run: |
echo "Hello, Fireactions!"

This workflow will run on every push to the main branch, pull request, and manual trigger. The job will run on the Example pool, which is the pool label you created in the previous steps while configuring Fireactions.

For more information and configuration options, please check the following:

Did this answer your question?