Alcuni link in questa pagina sono link di affiliazione: se ti registri tramite questi link, il sito riceve una commissione senza costi aggiuntivi per te. Prezzi e consigli non cambiano.

Ogni guida « fai girare la CI gratis » si ferma allo stesso punto: GitHub regala minuti gratis, e i runner self-hosted sono gratis. Nessuna delle due affermazioni è sbagliata, e nessuna ti dice quanto costa davvero un runner. Questo fa l’aritmetica con i numeri che GitHub pubblica oggi, e un prezzo di VPS che abbiamo misurato noi stessi.

Quanto costano i runner GitHub-hosted al minuto

Il numero da titolo è $0.006 al minuto per un runner Linux standard a 2 core, e vale solo quando i tuoi minuti inclusi sono finiti. Prima non paghi affatto al minuto; stai consumando un budget mensile.

RunnerTariffa al minuto (USD)
Linux 1 core (x64)$0.002
Linux 2 core (x64)$0.006
Linux 2 core (arm64)$0.005
Windows 2 core$0.010
macOS 3-4 core$0.062

In quella tabella si nascondono due cose. Primo, GitHub arrotonda ogni job al minuto intero superiore, quindi un job di 30 secondi viene fatturato come un minuto. Secondo, arm64 costa meno di x64 ($0.005 contro $0.006) - un motivo per passare il tuo runner pubblico a un’etichetta Arm se il tuo stack compila su Arm.

I runner più grandi sono un’altra scala: Linux 4 core a $0.012/min, 8 core $0.022, 16 core $0.042, fino a 96 core a $0.252. Contano solo se parallelizzi dentro un singolo job, e sul piano Free non sono affatto disponibili.

Il tier gratuito, in minuti

« Gratis » significa una quantità di calcolo inclusa, non minuti illimitati. Il budget mensile, convertito in minuti Linux standard a $0.006 :

PianoCalcolo inclusoMinuti Linux standard
Free$122.000
Pro$183.000
Team$183.000
Enterprise Cloud$30050.000

Due regole contano più della tabella. I repository pubblici hanno runner hosted standard gratuiti illimitati - i minuti qui sopra valgono solo per i repo privati. E i runner self-hosted sono gratis, sempre, e non attingono affatto al calcolo incluso. Questa seconda regola è l’intera ragione economica per far girare il tuo.

Il break-even: quando un VPS batte GitHub

Un runner self-hosted costa quanto costa la macchina, e i minuti sono gratis. La domanda è quanti minuti hosted quella macchina deve sostituire prima di ripagarsi.

Prendi il Hetzner CX23 che abbiamo misurato per il nostro confronto VPS: 2 vCPU / 4 GB / 40 GB a 5,49 € al mese, circa $6. A $0.006 al minuto Linux, $6 comprano esattamente 1.000 minuti hosted. Quindi il CX23 si ripaga nel mese in cui altrimenti consumeresti 1.000 minuti a pagamento - cioè minuti oltre il budget gratuito.

Esempio calcolato sul piano Free:

  • Hai 2.000 minuti Linux gratis.
  • Te ne servono davvero 4.000 (un repo privato molto attivo, o più d’uno).
  • Costo hosted: (4.000 - 2.000) × $0.006 = $12.
  • Costo self-hosted: 5,49 € ≈ $6, minuti illimitati.
  • Sei in vantaggio dal primo mese, e ogni minuto in più è gratis.

Lo stesso calcolo su Pro (3.000 inclusi): il self-hosted vince appena superi 3.000 + 1.000 = 4.000 minuti al mese. Sotto quella soglia l’hosted è più economico, perché paghi già Pro e il budget ti copre.

La parte che l’aritmetica tace

Il VPS è acceso che un build giri o no. I runner hosted fatturano solo i minuti usati. Questa asimmetria decide tutto:

  • CI costante e pesante - build notturni, un monorepo con molti job - il self-hosted vince nel primo mese intenso e continua a vincere.
  • CI a scatti - pochi push a settimana, minuti qua e là - resti nel tier gratuito e l’hosted non costa nulla. Un VPS da 5,49 € sono 5,49 € che non ti serviva spendere.
  • Job brevi - l’arrotondamento al minuto di GitHub punisce i job da 20 secondi. Un runner self-hosted non ha contatore da arrotondare, quindi cento job da 20 secondi sono solo… tempo.

Ci sono altri due vantaggi del self-hosting che non c’entrano coi soldi. I job hosted sono limitati a 6 ore; un runner self-hosted non ha questo tetto. E la concorrenza hosted è limitata dal piano, mentre un runner self-hosted ti dà tanti job paralleli quanti sono i core della macchina.

Quanto ti costa davvero un runner self-hosted

Il prezzo in dollari non è tutto il prezzo. Ora fai girare un servizio che esegue codice arbitrario dal tuo repository, e possiedi patch, aggiornamenti e confine di sicurezza.

Tre regole che seguiamo sulla nostra macchina:

  1. Mai sull’host di produzione. Un runner esegue codice di workflow non fidato. Dagli un suo VPS, o almeno un suo container senza accesso al sito, alle config o ai backup.
  2. Effimero, non longevo. Registra un runner fresco per job o per giorno, così un’immagine avvelenata non resta in giro. Actions Runner Controller (ARC) lo fa su Kubernetes; un semplice docker run --rm dell’immagine del runner lo fa su una singola macchina.
  3. Niente segreti nell’ambiente del runner. Il runner vede solo il GITHUB_TOKEN limitato al repo per i job che esegue. Tieni le chiavi di deploy dove un job non può leggerle - lo stesso ragionamento della guida al deploy rsync.

Il runner in sé è un singolo binario o un container che fai girare sotto Docker; non è esotico. Ciò che è facile sbagliare è tutto ciò che gli sta attorno, ed è lì il vero costo in tempo.

La configurazione è la stessa su ogni macchina: crea un runner in Settings → Actions → Runners → New self-hosted runner, copia il comando di download - contiene il tuo token e la versione corrente - poi esegui config.sh e installalo come servizio. La pagina GitHub ti dà i tre comandi esatti; il numero di versione cambia, il flusso no.

Cosa scegliere?

Scegli GitHub-hosted se resti nel budget gratuito - repo privati sotto i 2.000 minuti al mese, o qualsiasi repo pubblico - vuoi zero manutenzione, e i tuoi job finiscono in minuti anziché in ore.

Scegli un runner self-hosted su Hetzner se esaurisci il tier gratuito ogni mese, ti servono job lunghi o molto paralleli, o vuoi build sulla rete privata accanto ai tuoi server.

Scegli Vultr o DigitalOcean se ti serve un runner in una regione che Hetzner non copre, o fatturazione al secondo per un runner che accendi solo su richiesta.

FAQ

GitHub Actions è gratis? I repository pubblici hanno runner hosted standard gratuiti illimitati. I repository privati hanno un budget mensile incluso - $12 di calcolo sul piano Free, cioè 2.000 minuti Linux standard - poi pagano $0.006 per ogni minuto Linux in più.

Quanto costa un runner self-hosted? Il software del runner è gratis. Paghi solo la macchina su cui gira - da circa 5,49 € al mese per un Hetzner CX23 - e il tuo tempo per mantenerla. I minuti sono illimitati.

Quando un runner self-hosted è più economico? Quando il tuo consumo su repo privati supera il budget gratuito di più di circa 1.000 minuti Linux al mese. Sotto, il VPS da circa $6 costa più dei minuti hosted che sostituisce.

I runner hosted hanno limiti? Sì. I job vanno in timeout a 6 ore, e la concorrenza è limitata dal piano. I runner self-hosted non hanno costo al minuto né tetto di 6 ore, ma possiedi la macchina e i suoi aggiornamenti.

Un runner self-hosted è sicuro da far girare? Solo se lo isoli. Esegue codice arbitrario dal tuo repository, quindi non deve mai condividere un host con carichi di produzione, deve essere effimero e senza segreti longevi. Il nostro audit di server ereditati è la checklist di isolamento.

E poi?

La macchina sotto è la decisione che stai davvero prendendo. Il confronto VPS scompone Hetzner contro DigitalOcean contro Vultr con benchmark che abbiamo fatto girare noi stessi, e la guida Caddy + Docker mostra il setup mono-macchina che tiene un runner self-hosted e un piccolo sito su un solo server senza che si tocchino.