docs/reference/configuration.md
Rama main · réplica de lectura del repositorio original.
# Configuration
Fireactions is configured using a YAML file. The default configuration file is located at `/etc/fireactions/config.yaml`.
You can also specify a custom configuration file using the `--config` flag when starting the Fireactions server.
Example configuration file with all available options:
```yaml
---
#
# The address to listen on for HTTP requests.
#
# Default: 127.0.0.1:8080
#
bind_address: 127.0.0.1:8080
#
# Metrics server configuration. This is used to expose Prometheus metrics on endpoint `/metrics`.
#
metrics:
#
# Enable Prometheus metrics.
#
enabled: true
#
# The address to listen on for HTTP requests.
#
# Default: 127.0.0.1:8081
#
address: 127.0.0.1:8081
#
# GitHub configuration.
#
github:
#
# The GitHub App private key. This is used to authenticate with GitHub.
#
# Default: ""
#
app_private_key: |
-----BEGIN RSA PRIVATE KEY-----
#
# The GitHub App ID.
#
# Default: 0
app_id: 12345
#
# Pools configuration.
#
pools:
#
# The name of the pool.
#
- name: fireactions-2vcpu-2gb
#
# The number of replicas for the GitHub runners in the pool.
#
# Required: true
#
replicas: 5
#
# Shutdown the Firecracker VM when the runner exits.
#
# Required: false, Default: true
#
shutdown_on_exit: true
#
# Maximum lifetime of a Firecracker VM. The VM is stopped when it is reached, even if a job is still running. 0 disables the limit.
#
# Required: false, Default: 0
#
max_lifetime: 24h
#
# Maximum size in MiB of the VM console log (<pool directory>/<runner>.log). Output beyond the limit is discarded. 0 disables the limit.
# The limit does not apply to <runner>.firecracker.log, which Firecracker writes itself.
#
# Required: false, Default: 0
#
max_log_size_mib: 64
#
# GitHub runner configuration.
#
runner:
#
# The name of the GitHub runner. This is used to identify the runner in GitHub and is suffixed with a unique identifier.
#
# Required: true
name: fireactions-2vcpu-2gb
#
# Container image to use for the Firecracker VM as the root device.
#
# Required: true
#
image: ghcr.io/hostinger/fireactions/runner:ubuntu-20.04-x64-2.310.2
#
# The pull policy for the container image. Can be one of: Always, IfNotPresent, Never.
#
# Required: true
image_pull_policy: IfNotPresent
#
# GitHub runner group ID. 1 is the default group.
#
# Required: true
group_id: 1
#
# Organization name.
#
# Required: true
#
organization: hostinger
#
# Labels to apply to the GitHub runner.
#
# Required: true
#
labels:
- self-hosted
- fireactions-2vcpu-2gb
- fireactions
#
# Firecracker configuration.
#
firecracker:
#
# The path to the Firecracker binary.
#
# Default: firecracker
#
binary_path: firecracker
#
# The path to the kernel image.
#
# Required: true
#
kernel_image_path: /var/lib/fireactions/vmlinux
#
# Kernel command line arguments.
#
# Default: "console=ttyS0 noapic reboot=k panic=1 pci=off nomodules rw"
#
kernel_args: "console=ttyS0 noapic reboot=k panic=1 pci=off nomodules rw"
#
# Firecracker machine configuration.
#
# Required: true
#
machine_config:
#
# The amount of memory in MiB.
#
# Required: true
#
mem_size_mib: 2048
#
# The number of vCPUs.
#
# Required: true
#
vcpu_count: 2
#
# Firecracker network interface configuration.
#
# Default: {} (no rate limiting)
#
network_interface:
#
# Rate limiter for incoming (ingress) traffic. Maps to the Firecracker
# network interface `rx_rate_limiter`. Both the `bandwidth` and `ops`
# token buckets are optional, an omitted bucket means unlimited.
#
# The resulting rate is `size` / `refill_time`.
#
# Default: {} (unlimited)
#
in_rate_limiter:
#
# Token bucket with bytes as tokens.
#
# Default: {} (unlimited)
#
bandwidth:
#
# The total number of tokens (bytes) the bucket can hold.
#
# Required: true
#
size: 131072000
#
# The amount of milliseconds it takes for the bucket to refill.
# 131072000 bytes per 1000 ms is ~125 MiB/s.
#
# Required: true
#
refill_time: 1000
#
# The initial burst size (bytes). Consumed before the refill process
# starts happening.
#
# Default: 0
#
one_time_burst: 262144000
#
# Token bucket with operations (packets) as tokens.
#
# Default: {} (unlimited)
#
ops:
size: 10000
refill_time: 1000
#
# Rate limiter for outgoing (egress) traffic. Maps to the Firecracker
# network interface `tx_rate_limiter`. Same structure as
# `in_rate_limiter`.
#
# Default: {} (unlimited)
#
out_rate_limiter:
bandwidth:
size: 26214400
refill_time: 1000
#
# Firecracker root block device configuration.
#
# Default: {} (no rate limiting)
#
rootfs:
#
# Rate limiter for the root block device. Maps to the Firecracker drive
# `rate_limiter`. Both the `bandwidth` and `ops` token buckets are
# optional, an omitted bucket means unlimited.
#
# The resulting rate is `size` / `refill_time`.
#
# Default: {} (unlimited)
#
rate_limiter:
#
# Token bucket with bytes as tokens. 52428800 bytes per 1000 ms is
# ~50 MiB/s of disk throughput.
#
# Default: {} (unlimited)
#
bandwidth:
size: 52428800
refill_time: 1000
#
# Token bucket with operations (IOPS) as tokens.
#
# Default: {} (unlimited)
#
ops:
size: 2000
refill_time: 1000
#
# Metadata to pass to the Firecracker VM via MMDS.
#
# Default: {}
#
metadata:
example1: value1
example2: value2
#
# Log level. Can be one of: debug, info, warn, error, fatal, panic, trace.
#
# Default: info
#
log_level: debug
```