“Il mio portatile ha un M3 Pro con 16GB di RAM, perché mai dovrei prendere un server con solo 4 core e 8GB?”

Su Reddit, nella sezione r/indiehackers, questa è una delle domande più gettonate tra i principianti. In un’era dominata dal Serverless (tipo Vercel) e dal PaaS (tipo Supabase), il VPS (Virtual Private Server) sembra quasi roba “all’antica”.

Ma la realtà dei fatti è questa: gli sviluppatori indipendenti che riescono davvero a chiudere il cerchio commerciale e a generare profitti a lungo termine, di VPS ne hanno sicuramente un paio nel loro arsenale.

In questo articolo partiremo da 7 punti dolenti tipici dello sviluppo indie, per analizzare nel dettaglio perché il VPS è il passaggio obbligato per diventare professionisti e dire addio ai “giocattoli di codice”.


1. Addio all’“ansia da locale”: risolvere il buco nero di spazio di node_modules e Docker

Per uno sviluppatore indie l’asset più costoso è il portatile, mentre il più economico è il suo disco rigido. Gran parte di questa ondata di programmazione assistita dall’IA si basa su NextJS, e questo porta con sé il disastro di node_modules. In realtà, anche cc adora fare il pull di bb. Se osservi il processo di esecuzione di cc, noterai che continua a scrivere roba nella directory /tmp

  • Il problema: storage e performance messi all’angolo

    • Esplosione di node_modules: se gestisci 10 progetti in parallelo, le node_modules ti mangiano facilmente più di 50 GB di SSD.
    • Accumulo di immagini Docker: far girare i container in locale rallenta tutto e fa urlare le ventole.
    • Carico di calcolo: tenere in esecuzione in locale middleware come PostgreSQL o Redis rallenta drasticamente la reattività del tuo IDE.
  • La soluzione: un VPS come “datacenter pesante”
    In locale ti basta tenere il leggero duo VS Code + Cursor, collegandoti al VPS tramite Remote SSH. Tutte le dipendenze più pesanti e l’ambiente girano nel cloud, il portatile si limita a mostrare la UI.

Node Model

2. Di “no” al ricatto delle bollette SaaS: il controllo dei costi parte dalla logica di business

Da sviluppatore indipendente, la cosa che ti fa più paura non è restare senza utenti, ma ritrovarti con la bolletta del SaaS esplosa ancora prima che i clienti abbiano iniziato a pagarti. In questi ultimi anni, lavorando con l’AI coding, è inevitabile finire per usare strumenti come Supabase, Clerk e, a dirla tutta, anche Vercel. All’inizio la seembrano tutte una favola, ci prendi gusto, ma a un certo punto ti arriva una bolletta da paura. Vercel ha una trappola insidiosa: il componente Image. In fase di build ti suggerisce di usare il componente <Image, sembra una pensata super carina, vero? Peccato che di default quel componente passi per il servizio di ottimizzazione immagini di Vercel — e ogni singola immagine ottimizzata viene tariffata. Se hai un sito con molto traffico, solo con l’ottimizzazione delle immagini finisci per pagare più di quanto spendi per l’hosting.

Il piano gratuito Hobby di Vercel è super allettante — deployment, CDN e SSL inclusi. Ma appena il tuo progetto inizia a prendere traffico, inizia l’incubo.

Panoramica sui costi di extra-fascia:

Risorsa Incluso nel piano Pro Costo extra-fascia
Banda 1 TB/mese $0.15/GB (cioè $150/TB)
Richieste Edge 10 milioni/mese $2/milione
Tempo di esecuzione Serverless 40 ore/mese $5/ora
Ottimizzazione immagini 5000/mese $5/1000 immagini
  • Il vero problema: i costi di lock-in che esplodono

    • La trappola del PaaS: il free tier di Firebase è allettante, ma appena ci vai di mezzo con backup complessi o picchi di traffico, i prezzi schizzano in modo esponenziale.
    • Autenticazione a pagamento: servizi come Clerk ti fanno pagare in base agli utenti attivi mensili (MAU). Se hai un’app con alto traffico ma basso valore per singolo utente, è un incubo.
  • La soluzione: il full-stack self-hosted
    Con un VPS da $5/mese, puoi sfruttare al massimo le performance con Docker e far girare contemporaneamente: database (PostgreSQL), sistema di autenticazione (PocketBase) e analytics (Umami).

图 2:SaaS 订阅 vs. VPS 固定成本曲线对比

💡 Diciamoci la verità: il self-hosting richiede un minimo di competenza ops. Però ultimamente un sacco di sviluppatori oltreoceano stanno condividendo la loro esperienza nella gestione di PostgreSQL — ed è molto più facile del previsto, specialmente con Docker e un paio di script di backup automatici. Più avanti ti spiego passo passo come fare.

3. Vero CI/CD: costruire la pipeline di automazione per il tuo “reparto IT in singolo”

Il vero vantaggio competitivo di noi indie hacker sta nella velocità di iterazione. Distribuire su piattaforme serverless come Vercel, Cloudflare o Netlify va benissimo per validare un’idea nelle prime fasi, ma c’è un problema: le loro implementazioni di Node non sono complete, quindi non puoi far girare task lunghi. Una volta il tuo computer locale iniziava a urlare come un pazzo per compilare tutto, ma grazie alle GitHub Actions non devi più preoccupartene: alla fine ti ritrovi un’immagine Docker bella e pronta, e via, decollo immediato.

  • Limiti di tempo di esecuzione: Le funzioni serverless hanno generalmente un timeout di 10-60 secondi, con un default che di solito è fissato a 10s

  • Niente processi persistenti: WebSocket, connessioni lunghe e task in background sono una vera scocciatura

  • Ritardo del cold start: La prima richiesta potrebbe richiedere diversi secondi di attesa

  • Punto dolente: l’inefficienza e gli errori del deploy manuale
    Se stai ancora lanciando a mano git pull, non stai solo sprecando tempo prezioso, ma stai anche alzando le probabilità di combinare un disastro in produzione.

  • La soluzione: automazione leggera basata su VPS
    Sfrutta un VPS per far girare GitHub Actions Runner:

    1. Git Push innesca la pipeline.
    2. Il VPS pulla automaticamente il codice e builda l’immagine Docker.
    3. Docker Compose riavvia i container in automatico, garantendo aggiornamenti senza downtime.

图 3:基于 VPS 的自动化 CI/CD 流水线示意图

Non so se è per questo, ma ultimamente Cloudflare non sta spingendo più molto Pages, è tornato a puntare su Worker. Sinceramente lo trovo un po’ scomodo da usare, tu che ne pensi?

4. Risolvere i “blocchi di rete”: dal web scraping silenzioso all’accesso cross-border

Tante volte un progetto in locale non ne vuole sapere di partire, e non è mica colpa del codice: è un problema di rete. Un sacco di pacchetti npm che usiamo per sviluppare, o altre risorse, spesso ti fanno venire il nervoso, ti logorano, ti fanno perdere un sacco di tempo e ti fanno diventare matto per colpa della rete.

  • Punto dolente: IP che cambia e traffico in uscita limitato

    • Hai bisogno di un IP fisso: Quando ti interfacci con le API di Stripe, PayPal o della tua banca, devi quasi sempre inserire un IP pubblico fisso in whitelist. L’IP dinamico della linea di casa proprio non fa al caso tuo.
    • Problemi di rete: Molti pacchetti npm, immagini Docker e risorse su GitHub che usi per sviluppare, spesso ti fanno impazzire a causa di problemi di rete.
    • Ban anti-scraping: Se stai lavorando a un progetto di data scraping, l’IP della tua linea domestica viene bloccato in un attimo dai sistemi anti-bot.
  • La soluzione: un VPS come hub di rete globale

    • Identità fissa: Fornisci al tuo business un IP pubblico permanente, così gli Stripe Webhook e i callback OAuth funzionano sempre senza intoppi.
    • Centro di reverse proxy: Con un solo VPS e Nginx o Caddy, puoi gestire più di 10 domini e mapparli su diverse porte locali.
    • Ambiente di sviluppo turbo: Esegui npm install e docker pull direttamente sul VPS, la velocità di download è folle e non sei più limitato dalla rete di casa.

image.png

Ho un vero e proprio conto in sospeso con nginx proxy manager: già un paio di volte ho provato a far girare il suo Docker e si è mangiato ben 10 G di spazio, roba che proprio non mi entra in testa. Caddy, al confronto, è molto più leggero e snello.

5. Proteggere le “entrate passive”: monitoraggio 24/7 e disaster recovery

Il momento peggiore per noi indie maker è svegliarsi la mattina e scoprire che il servizio è andato giù per tutta la notte, senza che tu te ne accorgessi minimamente. (Speriamo sia solo un’ipotesi: quando un progetto inizia a farti guadagnare sul serio, gli stai dietro eccome!)

Il punto dolente: manca una sentinella

  • Il PC locale va in stop o si addormenta, quindi non può fare un monitoraggio continuo
  • I tool di monitoraggio esterni gratuiti hanno frequenze di controllo troppo basse (es. una volta ogni 5 minuti): quando finalmente rilevano il problema, gli utenti se ne sono già andati alla chetichella
  • Molti problemi sono “intermittenti”: quando vai a controllare a mano, tutto funziona che è una meraviglia

La soluzione: allestire la tua stazione di monitoraggio

Metti su Uptime Kuma (o un tool simile) sul tuo VPS e fagli controllare lo stato di accesso globale ogni 30-60 secondi. Se va giù qualcosa, ti arriva subito una notifica su Telegram, Discord o via email.

Checklist consigliata per il monitoraggio:

Cosa monitorare Frequenza check Avvisi
Codice di stato HTTP 60 secondi Notifica immediata su Telegram
Scadenza certificato SSL Ogni giorno Preavviso 14 giorni prima
Risorse server 5 minuti Allarme se CPU/RAM superano l’80%
Connessione al database 60 secondi Notifica immediata in caso di fallimento

Giochi avanzati:

  • Uptime Kuma per il monitoraggio della disponibilità
  • Bezel o Netdata per tenere d’occhio le risorse del server. Bezel è davvero comodo, Netdata è un po’ più pesante.
  • Mettili insieme e avrai un sistema di monitoraggio completo e senza buchi.

image.png

image.png

image.png

6. Sovranità dei dati: l’“ultima linea di difesa” per lo sviluppatore indipendente

  • Problema: il rischio di dipendere da una piattaforma

    Se hai tutti i dati su Firebase e un bel giorno l’account ti viene bloccato per questioni di compliance, mesi di lavoro vanno in fumo in un istante.

  • Soluzione: storage locale sul VPS + backup off-site

    • Isolamento dei dati: i file del database sono solo tuoi, al 100%.
    • Backup automatizzato: scrivi un semplice cron job che ogni giorno cripta i dati e li sincronizza su S3 o sul tuo storage locale.

image.png

7. Pianificazione delle risorse per l’indie developer: la strategia “1 + N”

Per gli scenari di sviluppo tipici del 2026, ti consiglio di puntare su questo setup:

Tipo Specifiche consigliate Ruolo principale
1 server core 2 vCPU 4GB o 4 vCPU 8GB Far girare Nginx, database principale, prodotto core.
N server sentinella 1 vCPU 1GB o inferiore Far girare Uptime Kuma per il monitoraggio, piccoli scraper, ambiente di test.

Perché tenere tutto separato?

  • I servizi di monitoraggio non dovrebbero mai stare sulla stessa macchina di quelli che stanno monitorando: se il server va giù, non riceverai mai l’allarme.
  • Tenere l’ambiente di test isolato da quello di produzione evita disastri per un errore di distrazione.
  • Più macchine piccole ti danno molta più flessibilità e resilienza rispetto a un unico server grande.

image.png

Su Reddit, Hetzner viene nominato in continuazione come il “re del rapporto qualità-prezzo”: a parità di prezzo, le configurazioni sono in genere 2-3 volte superiori a quelle dei cloud provider americani. Il lato negativo? I datacenter sono principalmente in Europa, quindi le latenze di accesso dall’Asia sono un po’ più alte.

Mettiamola così: il database conta eccome. Se hai le ore contate, fai un favore a te stesso e affidati a roba tipo Neon o Supabase.

In sintesi: il biglietto da visita per passare dal “gioco” al “pro”

Dal momento in cui metti le mani su un VPS, non sei più solo “quello che scrive codice”: diventi il “padrone del sistema”. Ti dà:

  • Determinismo: niente più sorprese per colpa dell’ambiente locale che cambia.
  • Continuità: il tuo prodotto vive di vita propria, 24 ore su 24.
  • Vocazione business: regge la crescita del progetto al costo marginale più basso possibile.

Come dice un motto che gira tra gli indie hacker: “Il primo IP del tuo server è il primo biglietto da visita del tuo prodotto.” (L’ho inventata io, ma suona bene, no?)