Pular para o conteúdo

Pré-requisitos

Item Versão Para quê
Node.js ≥ 20 Buildar e testar os pacotes. O campo engines do repositório exige isso.
Docker qualquer recente Rodar o runner em container. A imagem é node:22-alpine.
npm 10+ Os workspaces do repositório.

Você não precisa de Node instalado para rodar o runner em container: só para buildar os pacotes ou desenvolver connectors.

O runner é a metade “mãos”. Sozinho ele sobe, enrolla e fica esperando: sem um control-plane escutando no túnel, ele não faz nada útil. Antes de instalar, tenha em mãos:

  • A URL do túnel (RUNNER_TUNNEL_URL), em produção: wss://tunnel.rootpilot.sh:8443.
  • A URL de enrollment (RUNNER_ENROLL_URL), em produção: https://app.rootpilot.sh.
  • Uma forma de provar identidade: um bootstrap token da sua organização, ou uma identidade de nuvem que o control-plane reconheça. Veja Atestação.

O runner precisa de egress, e só de egress. Nenhuma porta de entrada.

Sempre:

  • tunnel.rootpilot.sh:8443 (WSS + mTLS), o túnel.
  • app.rootpilot.sh:443 (HTTPS), o enrollment, no boot e em cada renovação de certificado.

Conforme os connectors que você ligar (só os que usar):

Connector Host de saída
datadog api.datadoghq.com
github api.github.com
aws, kubernetes *.amazonaws.com, *.eks.amazonaws.com
gcp *.googleapis.com
amplitude amplitude.com
slack slack.com
cloudflare api.cloudflare.com
azion api.azion.com
vercel api.vercel.com
checkly api.checklyhq.com
grafana os endpoints dos seus datasources (Mimir, Loki, Tempo, stack)
mongo, sonarqube, jira os seus próprios hosts, que você informa na configuração

Este repositório não publica números de CPU e memória, porque não existe benchmark versionado aqui, e inventar um seria pior que omitir. O que dá para afirmar pela construção:

  • O processo é um Node de container único, sem worker pool.
  • O cache SQLite é :memory: por default, então a memória cresce com o volume de dados aprendidos na sessão e zera a cada boot.
  • O RUNNER_IDEMPOTENCY_MAX_ENTRIES (default 2000) limita o cache de idempotência de propósito, para um runner longevo não crescer sem teto.

Comece pequeno, observe, e ajuste. O runner é cattle: redimensionar é subir outro.

Nenhuma é obrigatória para subir. Cada connector é lazy, instanciado no primeiro uso, então faltar uma chave só faz aquelas operações responderem auth_error; o resto continua funcionando. A lista completa está em Credenciais por connector.