Salta al contenuto principale

Costi reali AI on-prem: case study Hetzner CCX23 + Ollama 12 mesi

Quando un server in proprio costa meno di un'API? Un calcolo con ipotesi dichiarate mostra capacità, ore di lavoro e punto di pareggio.

Cosa ne pensi di questo articolo?

Costi reali AI on-prem: case study Hetzner CCX23 + Ollama 12 mesi
Sovereign AI PMI EUFoto:Pavel DanilyukPexels

In Breve

Quando un server in proprio costa meno di un'API? Un calcolo con ipotesi dichiarate mostra capacità, ore di lavoro e punto di pareggio.

Il conto che quasi nessuno fa: dove sta il pareggio fra server in proprio e API

«Un'AI in proprio costa meno delle API» è una frase che dipende interamente da quattro numeri: quanto costa il server, quanto lavoro richiede, quanti token consumi e quanto costa la tua alternativa a pagamento. Questo articolo costruisce il conto con un programma che puoi rifare, dichiara quali numeri sono veri e quali ipotesi, e arriva a una conclusione che può sorprendere: su un server senza GPU il risparmio, quasi sempre, non c'è. Le ragioni per tenere i modelli in casa sono altre, e conviene saperlo prima di comprare.

Una precisazione sul titolo: parla di un caso aziendale a dodici mesi, ma qui non c'è nessun caso reale misurato. Quello che trovi è un modello di calcolo con ipotesi esplicite, che è più utile di un caso inventato perché lo puoi rifare con i tuoi dati.

Che cosa entra nel costo, e che cosa ho lasciato fuori

Un confronto onesto mette sullo stesso piano costi che hanno natura diversa. Il canone del server è una spesa certa e datata; il tempo di chi lo amministra è una spesa vera anche quando non compare in fattura; il prezzo dell'API è un listino che cambia. Ecco la lista di ciò che il programma conta e di ciò che esclude.

  • Contato, dato verificato: il canone mensile del server, preso dalla pagina ufficiale (CCX23 a Norimberga, 86,49 euro al mese IVA esclusa, consultata il 2026-11-13).
  • Contato, ipotesi: 24 ore di avviamento ammortizzate su 12 mesi e un numero di ore di amministrazione al mese, a una tariffa oraria interna di 50 euro.
  • Contato, ipotesi: velocità di generazione e quota di tempo in cui il server lavora davvero, che fissano quanti token al mese può produrre.
  • Escluso: archiviazione dei backup, monitoraggio, energia e raffreddamento (compresi nel canone di un VPS, non in un server tuo), assicurazioni, incentivi fiscali e il costo dell'indisponibilità.

L'esclusione degli incentivi fiscali è deliberata: crediti d'imposta e ammortamenti dipendono dall'anno e dal tuo caso, qui non li ho verificati su una fonte ufficiale, e un'agevolazione sbagliata in un conto aziendale è peggio di nessuna. Se ritieni che si applichino al tuo caso, il commercialista li inserisce come riga a parte. Anche l'IVA è fuori: i prezzi del server sono al netto, e per una PMI che detrae l'IVA il conto non cambia.

La capacità del server è il vincolo che i listini nascondono

Un'API a pagamento scala quasi senza limite: se raddoppi le richieste, paghi il doppio. Un server no: ha un tetto di token al mese, fissato dalla sua velocità e da quanto tempo lavora. Il tetto è la prima cosa da calcolare, perché decide se il pareggio è raggiungibile. Con 8 token al secondo, un valore plausibile come tetto di una macchina con circa 40 GB/s di banda di memoria (come ricavato nell'articolo sul server in produzione), e un utilizzo del 25%, il server produce circa 5 milioni di token generati al mese.

Il numero va letto con prudenza in due sensi. Verso il basso, perché conta solo i token generati: le richieste con documenti allegati consumano molto tempo anche per leggere il testo in ingresso, e il tempo di lettura riduce la capacità effettiva. Verso l'alto, perché con più richieste elaborate insieme la macchina può aumentare la produttività complessiva, a costo di più memoria. Per questo il programma mostra una griglia di velocità e di utilizzo invece di un solo valore.

"""Punto di pareggio fra un server in proprio e un'API a pagamento.

DATO VERO: il prezzo mensile del server CCX23 (pagina Hetzner General Purpose,
sede NBG1, IVA esclusa, consultata il 2026-11-13).
Tutto il resto e' IPOTESI da sostituire con i tuoi numeri.
"""
SERVER_EUR_MESE = 86.49
TARIFFA_ORARIA = 50.0       # IPOTESI: costo interno di un'ora di lavoro
ORE_SETUP = 24              # IPOTESI: una tantum, ammortizzata su 12 mesi
SECONDI_MESE = 30 * 24 * 3600
PREZZI_API = [0.5, 2.0, 10.0, 50.0]  # IPOTESI: euro per milione di token generati, non un listino


def costo_mensile(ore_admin):
    return SERVER_EUR_MESE + ore_admin * TARIFFA_ORARIA + ORE_SETUP * TARIFFA_ORARIA / 12


def capacita_mtok(token_s, utilizzo):
    return token_s * utilizzo * SECONDI_MESE / 1e6


print("capacita' in milioni di token generati al mese (token/s x utilizzo)")
for token_s in (4, 8, 16):
    righe = "  ".join(f"{u:.0%}: {capacita_mtok(token_s, u):5.1f}" for u in (0.10, 0.25, 0.50))
    print(f"  {token_s:2d} token/s   {righe}")

cap = capacita_mtok(8, 0.25)
print(f"\nscenario di riferimento: 8 token/s al 25% -> {cap:.1f} Mtok/mese")
for ore in (0, 4):
    c = costo_mensile(ore)
    print(f"\namministrazione {ore} h/mese: costo mensile {c:6.2f} euro, "
          f"{c / cap:6.2f} euro per milione di token")
    for p in PREZZI_API:
        pareggio = c / p
        esito = "raggiungibile" if pareggio <= cap else "OLTRE la capacita'"
        print(f"  API a {p:4.1f} euro/Mtok -> pareggio a {pareggio:6.1f} Mtok/mese ({esito})")

# Output:
# capacita' in milioni di token generati al mese (token/s x utilizzo)
#    4 token/s   10%:   1.0  25%:   2.6  50%:   5.2
#    8 token/s   10%:   2.1  25%:   5.2  50%:  10.4
#   16 token/s   10%:   4.1  25%:  10.4  50%:  20.7
#
# scenario di riferimento: 8 token/s al 25% -> 5.2 Mtok/mese
#
# amministrazione 0 h/mese: costo mensile 186.49 euro,  35.97 euro per milione di token
#   API a  0.5 euro/Mtok -> pareggio a  373.0 Mtok/mese (OLTRE la capacita')
#   API a  2.0 euro/Mtok -> pareggio a   93.2 Mtok/mese (OLTRE la capacita')
#   API a 10.0 euro/Mtok -> pareggio a   18.6 Mtok/mese (OLTRE la capacita')
#   API a 50.0 euro/Mtok -> pareggio a    3.7 Mtok/mese (raggiungibile)
#
# amministrazione 4 h/mese: costo mensile 386.49 euro,  74.55 euro per milione di token
#   API a  0.5 euro/Mtok -> pareggio a  773.0 Mtok/mese (OLTRE la capacita')
#   API a  2.0 euro/Mtok -> pareggio a  193.2 Mtok/mese (OLTRE la capacita')
#   API a 10.0 euro/Mtok -> pareggio a   38.6 Mtok/mese (OLTRE la capacita')
#   API a 50.0 euro/Mtok -> pareggio a    7.7 Mtok/mese (OLTRE la capacita')

La prima tabella è la capacità: da circa 1 a oltre 20 milioni di token al mese, a seconda della velocità e dell'utilizzo. Il blocco seguente confronta il costo con quattro prezzi ipotetici dell'API (da 0,5 a 50 euro per milione di token generati: sono scenari, non listini di nessun fornitore). Con 4 ore di amministrazione al mese il server costa 386 euro, cioè circa 75 euro per milione di token, e il pareggio con un'API a 10 euro per milione di token cade a 38,6 milioni di token al mese, più di sette volte oltre la capacità del server. Anche con zero ore di amministrazione (resta l'avviamento ammortizzato) il pareggio è raggiungibile solo se l'API costa quanto 50 euro per milione di token.

Che cosa dice davvero il risultato

Il risultato non dimostra che un server in proprio sia sempre un cattivo affare. Dice che, con le ipotesi dichiarate, il canone del server pesa poco e il lavoro di chi lo gestisce pesa molto, e che un server a CPU non produce abbastanza token per ripagarsi contro un'API economica. Le ipotesi che lo rovesciano sono tre: un'API molto più cara del previsto, un volume vicino alla capacità del server, o un costo di amministrazione quasi nullo perché la competenza è già in azienda e il tempo è marginale.

Ne discendono tre indicazioni pratiche. Se il motivo è il costo, fai il conto prima e probabilmente scoprirai che le API vincono. Se il motivo è tenere i dati sotto il tuo controllo, il costo diventa il prezzo di quella scelta e va accettato con gli occhi aperti (l'articolo sulla privacy by design mostra che cosa quel controllo protegge e che cosa no). E se il volume cresce, la domanda diventa se una GPU cambi i numeri: non ho calcolato quel caso, perché servono un prezzo e una velocità misurati sul tuo carico, e nessuna delle mie fonti li fornisce.

Costi che compaiono dopo, e uno che scende per legge

Sul versante cloud esiste un costo che si pensa vincolante e che la legge sta riducendo: il costo di passare a un altro fornitore. Il regolamento (UE) 2023/2854, il Data Act, all'articolo 29 prevede che dal 12 gennaio 2027 i fornitori di servizi di trattamento dei dati non impongano tariffe di passaggio ad altri fornitori; fino a quella data possono imporre tariffe ridotte, che non superano i costi direttamente connessi al passaggio. L'articolo 50 stabilisce che il regolamento si applica dal 12 settembre 2025. È una norma sui servizi di trattamento dei dati in generale: se e come si applichi a uno specifico servizio di intelligenza artificiale lo deve valutare il tuo consulente, perché dipende dalla qualificazione del servizio.

Sul versante in proprio i costi nascosti sono di tipo operativo: aggiornare il sistema, ruotare le chiavi, ripristinare un backup, rispondere a un guasto di notte. Il programma li riassume in ore al mese, e la sensibilità è semplice: ogni ora di amministrazione in più aggiunge 50 euro al mese alla tariffa ipotizzata, quindi il costo cresce più in fretta per il lavoro che per il canone. Un'indicazione di metodo: registra per tre mesi le ore realmente spese e sostituisci l'ipotesi con il dato. Nell'articolo sulla continuità operativa trovi che cosa comporta un ripristino.

Come rifare il conto con i tuoi numeri

Il procedimento è meccanico e dura mezz'ora. Apri la pagina dei prezzi del fornitore e copia il canone dell'istanza che ti serve, con la sede e la data. Misura la velocità della tua macchina con una richiesta all'API di Ollama, dividendo i token generati per il tempo di generazione. Stima il volume mensile guardando i log di quello che già usi, in token e non in richieste. Prendi dal listino del fornitore di API il prezzo per milione di token generati e in ingresso, e calcola la media pesata secondo la proporzione tipica dei tuoi prompt. Sostituisci i valori nelle costanti in testa al programma e rieseguilo.

Se il pareggio cade oltre la capacità, il verdetto è «solo per ragioni diverse dal costo». Se cade dentro, aggiungi un margine per gli imprevisti e confronta il risparmio mensile con le ore che dovrai dedicare: un risparmio di poche decine di euro al mese non compensa un'ora di lavoro in più di quanto pensi. Il tema dei casi in cui il cloud europeo è la scelta migliore è sviluppato in quando non conviene il self-hosting, e il modo per decidere la taglia del modello senza esagerare è in modello piccolo o grande, mentre i vincoli di memoria e di licenza delle singole famiglie sono in quale modello scegliere.

Domande frequenti

Un server in proprio costa meno delle API?

Dipende da quattro numeri: canone, ore di amministrazione, volume e prezzo dell'API. Nel calcolo dell'articolo, con un server a CPU, il pareggio cade oltre la capacità del server per la maggior parte dei prezzi ipotizzati, quindi il risparmio non è lo scopo tipico.

Quanto pesa il lavoro di amministrazione nel costo totale?

Con la tariffa ipotizzata di 50 euro l'ora, quattro ore al mese valgono 200 euro, più del doppio del canone del server. La stima va sostituita con le ore realmente spese.

Cambiare fornitore cloud costerà meno in futuro?

Il Data Act prevede che dal 12 gennaio 2027 i fornitori di servizi di trattamento dei dati non impongano tariffe di passaggio, e che fino ad allora siano ridotte e limitate ai costi diretti. Verifica con un consulente se si applica al tuo servizio.

Che cosa sai fare adesso

Sai calcolare la capacità mensile di un server dal suo tasso di generazione, sai costruire il costo totale con le ore di lavoro dentro e sai trovare il volume di pareggio per un dato prezzo di API. Soprattutto sai distinguere i dati veri, come il canone con la sua data, dalle ipotesi da sostituire. Il resto della serie lavora sullo stesso asse: la privacy che giustifica il costo, i modelli che entrano nel server, il recupero dei documenti che li rende utili.

Nella stessa serie trovi anche il recupero ibrido sui documenti aziendali, il dimensionamento per più utenti e il riepilogo con la scheda di decisione.

Fonti

Il programma è stato eseguito con Python 3.14.4 (python3 -I), due volte, con uscita identica. Il canone è l'unico dato esterno; tariffa oraria, ore di amministrazione, velocità, utilizzo e prezzi dell'API sono ipotesi dichiarate nel codice. Nessun prezzo di API di un fornitore è riportato, perché nessuno è stato consultato per questo articolo.

Commenti

Caricamento commenti...

Accedi per commentare

Discuti questo articolo nella community

Unisciti al gruppo Telegram per discutere con altri sviluppatori, fare domande e condividere le tue esperienze.

Ti è piaciuto questo articolo?

Esplora altri contenuti sul blog o scopri i miei progetti