Test indipendenti Aggiornato agosto 2026 387 guide di self-hosting 5 provider VPS testati

guide

Requisiti VPS per Windmill: RAM, CPU e Archiviazione

Windmill si dimensiona per worker, non per applicazione: circa 1 vCPU e 1-2 GB ciascuno. Cosa richiede lo stack Compose reale e quali specifiche VPS gli corrispondono.

Windmill è una piattaforma open source per sviluppatori che trasforma gli script in webhook, workflow, lavori pianificati e interfacce interne, posizionata contro Retool e Temporal e non contro un hosting per siti statici. L’edizione community è sotto licenza AGPL-3.0, quella enterprise dietro una chiave di licenza.

Dimensionarla non somiglia al dimensionamento di una normale applicazione web, perché l’unità di capacità è il worker, non l’applicazione.

L’architettura che determina le tue specifiche

Il docker-compose.yml ufficiale avvia sette servizi:

ServizioImmagineRuolo
dbpostgres:16Database e coda dei lavori
windmill_serverghcr.io/windmill-labs/windmill:mainAPI e interfaccia web, porta 8000
windmill_workerstessa immagine, MODE=workerEsegue i lavori
windmill_worker_nativestessa immagine, NATIVE_MODE=trueSolo lavori leggeri
windmill_indexerstessa immagine, MODE=indexerRicerca full-text sui lavori
windmill_extraghcr.io/windmill-labs/windmill-extra:latestLanguage server per l’editor
caddyghcr.io/windmill-labs/caddy-l4:2.11.4-1Reverse proxy sulla porta 80

Due voci di quella tabella pesano più delle altre.

Non c’è Redis. Windmill usa PostgreSQL come coda. Parecchie guide di terze parti aggiungono un container Redis e una REDIS_URL; il file Compose ufficiale non contiene né l’uno né l’altra, e copiare una guida simile significa far girare un servizio con cui Windmill non parla mai.

I worker sono il centro di costo. Il server resta relativamente inattivo. Quello che paghi davvero è capacità di worker.

RAM e CPU: dimensionare per worker

La regola pratica è un worker per vCPU, 1-2 GB di RAM ciascuno, più margine per Postgres e il server.

ConfigurazionevCPU / RAMCosa ottieni
Prova, un worker2 / 2 GBFunziona, ma un lavoro alla volta e nessun margine per una grossa installazione di dipendenze
Stack predefinito, 1-2 worker2-4 / 4 GBIl minimo praticabile per un uso reale
Più lavori in parallelo4 / 8 GBL’obiettivo comodo per una piccola squadra

I worker nativi sono l’eccezione da conoscere: eseguono lavori leggeri con circa 0,1 CPU e 128 MB, ed è per questo che lo stack predefinito ne include uno accanto a un worker standard senza pretendere un altro core.

La variabile che nessuno prevede è l’installazione delle dipendenze. Un lavoro Python che scarica pandas, o uno TypeScript con un lockfile corposo, fa schizzare la memoria ben oltre il valore a regime. Se i lavori falliscono solo alla prima esecuzione e poi passano, stai guardando la cache delle dipendenze costruirsi con troppa poca RAM.

Archiviazione: la crescita è la cache delle dipendenze

Il database resta contenuto a lungo: metadati dei lavori, script, flow e log sono testo. Il volume che cresce è worker_dependency_cache, dove finiscono ogni wheel Python e ogni pacchetto npm importati dai tuoi lavori, così le esecuzioni successive saltano l’installazione.

Parti da 40 GB. Tieni d’occhio il volume della cache più del database quando valuti un ampliamento, e preferisci NVMe o SSD: qui Postgres fa da coda oltre che da archivio ed è sensibile alla latenza di I/O.

Piani VPS che rispettano questi requisiti

ProviderPianovCPU / RAM / DiscoPrezzoVerdettoLink
ContaboCloud VPS 44 / 8 GB / 100 GB SSD5,50 EUR/mese nettoSpazio per quattro worker al prezzo di un piano d’ingressoContabo
Hetzner CloudCX232 / 4 GB / 40 GB NVMe5,49 EUR/mese nettoAdatto allo stack predefinito a due workerHetzner
DigitalOceanBasic 4 GB2 / 4 GB / 80 GB SSD24 USD/meseStesse specifiche del CX23, quattro volte il prezzoDigitalOcean
VultrRegular 4 GB2 / 4 GB / 80 GB SSD20 USD/meseLa scelta di regioni più ampiaVultr
LinodeLinode 4 GB2 / 4 GB / 80 GB SSD24 USD/mesePrestazioni prevedibili, API solidaLinode

Windmill è una delle poche applicazioni auto-ospitate per cui un piano da 1 GB non è escluso a priori: un singolo worker nativo ci sta davvero. Lì però non puoi far girare un worker standard, il che esclude qualsiasi lavoro Python o TypeScript con dipendenze: è una dimostrazione, non un’installazione.

Crescere

Windmill scala orizzontalmente aggiungendo container worker, non ingrandendo un processo. Per raddoppiare la produttività aggiungi un secondo servizio windmill_worker che punta alla stessa DATABASE_URL e dai alla macchina un altro core.

Questo ha una conseguenza pratica sulla scelta del VPS: qui più core battono core più veloci. I 4 vCPU di Contabo a 5,50 EUR netti comprano parallelismo per quattro worker, mentre il CX23 di Hetzner ne compra due a un prezzo sostanzialmente identico. Se il tuo carico è fatto di molti lavori piccoli invece che di pochi pesanti, quel rapporto è l’intera decisione.

Per uno sguardo più ampio ai piani disponibili, vedi il nostro confronto VPS completo.

Frequently asked questions

Quanta RAM serve a un'istanza di Windmill auto-ospitata?

Dimensiona per worker anziché per applicazione. La regola pratica è un worker per vCPU con 1-2 GB di RAM ciascuno, oltre a Postgres e al processo server. Un'istanza con un solo worker gira su 2 GB, lo stack Compose predefinito con due worker sta comodo su 4 GB, e 8 GB con 4 vCPU sono l'obiettivo sensato quando più lavori girano in parallelo.

Quanti core CPU dovrei assegnare a Windmill?

Parti da 2 vCPU e aggiungi un core per ogni worker in più, dato che un worker standard esegue un solo lavoro alla volta. I worker nativi sono l'eccezione: gestiscono lavori leggeri con circa 0,1 CPU e 128 MB, per questo lo stack predefinito ne include uno accanto al worker standard senza richiedere un altro core.

Windmill ha bisogno di Redis o di un altro broker di messaggi?

No. Windmill usa PostgreSQL sia come database sia come coda dei lavori. È insolito e vale la pena saperlo, perché molte guide di terze parti aggiungono un servizio Redis che il file Compose ufficiale non contiene. PostgreSQL 14 o successivo è l'unico archivio dati necessario, e aggiungere Redis produce soltanto un container sprecato.