{"id":85083,"date":"2026-06-29T08:00:00","date_gmt":"2026-06-29T15:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=85083"},"modified":"2026-07-06T18:10:16","modified_gmt":"2026-07-07T01:10:16","slug":"come-eseguire-nodejs-su-un-vps-it","status":"publish","type":"post","link":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/","title":{"rendered":"Come Eseguire Node.js su un VPS"},"content":{"rendered":"<div class=\"tldr-block\" style=\"display: none;\">\n\t<div class=\"svg\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 119.25 37.8\">\n\t<g>\n\t\t<g>\n\t\t\t<path fill=\"#ffffff\" d=\"M23.4,6.93h-8.1v24.57h-7.2V6.93H0V0h23.4v6.93Z\" \/>\n\t\t\t<path fill=\"#ffffff\" d=\"M45,24.57v6.93h-18.45V0h7.2v24.57h11.25Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M90.9,15.75c0,8.91-6.61,15.75-15.3,15.75h-12.6V0h12.6c8.68,0,15.3,6.84,15.3,15.75ZM83.97,15.75c0-5.4-3.42-8.82-8.37-8.82h-5.4v17.64h5.4c4.95,0,8.37-3.42,8.37-8.82Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M105.57,21.15h-3.42v10.35h-7.2V0h12.6c5.98,0,10.8,4.81,10.8,10.8,0,3.87-2.34,7.38-5.81,9.13l6.71,11.56h-7.74l-5.94-10.35ZM102.15,14.85h5.4c1.98,0,3.6-1.75,3.6-4.05s-1.62-4.05-3.6-4.05h-5.4v8.1Z\" \/>\n\t\t<\/g>\n\t\t<path\n\t\t\tfill=\"#0173ec\"\n\t\t\td=\"M53.97,37.8h-5.4l1.8-13.27h7.2l-3.6,13.27ZM49.02,12.55c0-2.34,1.93-4.27,4.27-4.27s4.27,1.94,4.27,4.27-1.93,4.27-4.27,4.27-4.27-1.94-4.27-4.27Z\"\n\t\t \/>\n\t<\/g>\n<\/svg>\n\t<\/div>\n\t<div class=\"tldr-wrap\">\n\t\t\n\n<p class=\"wp-block-paragraph\">Eseguire Node.js su un VPS significa installare l&#8217;attuale Node.js LTS (24.x &#8220;Krypton&#8221; a partire da maggio 2026) su un server Linux che controlli, poi eseguire la tua app dietro a un gestore di processi e un proxy inverso con HTTPS. Ottieni una macchina sempre attiva che gestisce connessioni a lungo termine, lavori in background e elaborazione intensa senza fatturazione per funzione o avvii a freddo.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Configurazione target:<\/strong> Ubuntu 24.04 LTS + Node 24 tramite NodeSource o nvm + PM2 (o systemd) + NGINX + Let&#8217;s Encrypt.<\/p>\n\n\n\n\n\t<\/div>\n<\/div>\n\n<p class=\"wp-block-paragraph\">Heroku ha eliminato il suo livello gratuito e ha aumentato il limite minimo. Vercel addebita per ogni utente e interrompe i lavori che durano troppo. Render e Railway aumentano il prezzo con il traffico.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Apri la pi\u00f9 recente fattura del tuo fornitore di hosting. L&#8217;app Node, un database Postgres e una cache Redis. Tre voci, tre serie di avvisi di superamento, una discussione frenetica su Slack il giorno in cui il marketing lancia finalmente una campagna.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Quella fattura \u00e8 il motivo per cui molte squadre stanno rivalutando l&#8217;VPS. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/what-is-node-js\/\">Node.js<\/a> di per s\u00e9 non <em>si preoccupa<\/em> di dove viene eseguito. L&#8217;unica cosa da cui il serverless ti proteggeva era scoprire cosa succede dopo \u2018npm start\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Diamo un&#8217;occhiata a un modello di configurazione per la produzione per <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/nodejs\/\">Node.js<\/a> su una macchina Linux sotto il tuo controllo. Se puoi accedere tramite SSH a una macchina e leggere un file di configurazione, alla fine avrai uno stack di produzione che potrai gestire per anni con un paio di ore di manutenzione al mese.<\/p>\n\n\n<h2 id=\"h-when-does-running-node-js-on-a-vps-make-sense\" class=\"wp-block-heading\">Quando Ha Senso Usare Node.js su un VPS?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Un VPS \u00e8 la casa giusta per Node.js quando hai un processo a lungo termine, uno stack che vuoi consolidare in una fattura unica, o una fattura di runtime gestito che ha superato la convenienza.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>In generale, ci sono tre buone opzioni:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Processi di lunga durata:<\/strong> Server WebSocket, lavoratori di coda, programmatori di cron, server MCP. Qualsiasi cosa che deve <em>rimanere<\/em> in esecuzione e in ascolto. La maggior parte delle piattaforme serverless \u00e8 ancora ottimizzata per esecuzioni e cicli di richiesta di breve durata. Un processo Node su un VPS rimane l\u00ec.<\/li>\n\n\n\n<li><strong>Consolidamento dei costi:<\/strong> App Node, <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/postgresql\/\">Postgres<\/a>, Redis, pi\u00f9 un piccolo lavoratore di costruzione vivono tutti sulla stessa scatola da 4 GB. Una sola voce di fattura, non quattro.<\/li>\n\n\n\n<li><strong>App che hanno superato PaaS:<\/strong> Timeout delle funzioni sul tuo lungo lavoro di generazione PDF. Prezzo per postazione su un team che finalmente ha assunto un quarto ingegnere. Una fattura di <a target=\"_blank\" href=\"https:\/\/www.heroku.com\/pricing\/\">Heroku<\/a> che supera i $60 al mese per un carico di lavoro che funziona bene su un VPS da $15.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\"><strong>E ci sono tre <\/strong><strong><em>sbagliati<\/em><\/strong><strong> adattamenti:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Siti statici e contenuti SSG:<\/strong> Un&#8217;esportazione di Next.js, una build di Astro, un blog di Gatsby. Il livello gratuito di Vercel \u00e8 lo strumento giusto. Un VPS \u00e8 eccessivo.<\/li>\n\n\n\n<li><strong>Carichi di lavoro guidati da eventi e sporadici:<\/strong> AWS Lambda o Cloudflare Workers costano pochi centesimi per un webhook che viene eseguito dieci volte al giorno. Un VPS costa lo stesso sia che l&#8217;applicazione sia attiva o inattiva.<\/li>\n\n\n\n<li><strong>App in tempo reale scalate orizzontalmente:<\/strong> Se il tuo server WebSocket deve distribuire a 100.000 connessioni contemporanee, un VPS non \u00e8 la risposta. Quella \u00e8 un cluster Kubernetes, un&#8217;infrastruttura distribuita ai margini o una piattaforma gestita in tempo reale.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">JavaScript \u00e8 il linguaggio pi\u00f9 usato nel <a target=\"_blank\" href=\"https:\/\/survey.stackoverflow.co\/2025\/technology\">Sondaggio degli Sviluppatori di Stack Overflow 2025<\/a>, e Node.js rimane uno dei modi predefiniti con cui gli sviluppatori eseguono JavaScript sul backend. Questo significa che ci sono molte persone che eseguono Node in qualche luogo. Questo articolo \u00e8 per la fetta di loro che sarebbe pi\u00f9 felice di gestirlo su un server di cui hanno il controllo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ho visto team trasferire quattro servizi Node di produzione da Heroku su un unico VPS da 4 GB, con la stessa disponibilit\u00e0, un terzo della bolletta, e WebSockets a lunga durata che finalmente funzionavano senza bisogno di soluzioni provvisorie.<\/p>\n\n\n<p class=\"wp-block-paragraph\">La migrazione consiste principalmente in un pomeriggio di \u2018apt install\u2019, un \u2018pm2 start\u2019 e un cambio di DNS.<\/p>\n\n\n<h2 id=\"h-what-vps-specs-does-node-js-actually-need\" class=\"wp-block-heading\">Quali Specifiche VPS Richiede Effettivamente Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Node.js \u00e8 di per s\u00e9 leggero. Un server Express minimo pu\u00f2 rimanere inattivo ben al di sotto dei 100 MB di memoria residente. Il consiglio che \u201cNode ha bisogno solo di 1 GB\u201d che puoi ancora trovare nei blog pi\u00f9 vecchi \u00e8 tecnicamente vero e praticamente inutile. Entro il tempo in cui hai aggiunto Postgres, Redis, log e un processo di distribuzione che non \u00e8 tenuto insieme dalla speranza, stai gi\u00e0 superando quel limite in un giorno tranquillo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Dimensionamento realistico per carichi di lavoro comuni:<\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Carico di lavoro<\/strong><\/th><th><strong>RAM<\/strong><\/th><th><strong>vCPU<\/strong><\/th><th><strong>Archiviazione<\/strong><\/th><th><strong>Note<\/strong><\/th><\/tr><\/thead><tbody><tr><td>API Express di piccole dimensioni, nessun DB sulla macchina<\/td><td>2 GB<\/td><td>1-2<\/td><td>40 GB NVMe<\/td><td>Piano realistico per una app in produzione<\/td><\/tr><tr><td>API Node + Postgres + Redis su una macchina<\/td><td>4 GB<\/td><td>2<\/td><td>80 GB NVMe<\/td><td>Il punto ideale; la maggior parte dei team si posiziona qui<\/td><\/tr><tr><td>App pesante SSR (Next.js, Nuxt, Remix)<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>Rendering SSR e pipeline di costruzione sono dove va la memoria<\/td><\/tr><tr><td>App in tempo reale\/WebSocket, scala moderata<\/td><td>8 GB<\/td><td>4<\/td><td>80 GB NVMe<\/td><td>Ogni connessione persistente consuma memoria<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Alcuni dettagli da definire prima di procedere:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>L&#8217;Importanza dello Storage NVMe Rispetto alla Dimensione del Disco:<\/strong> Le app Node moderne accedono a migliaia di piccoli file durante installazioni, compilazioni e avvio. Dischi lenti peggiorano sensibilmente le installazioni di dipendenze, gli avvii a freddo e le ricostruzioni SSR.<\/li>\n\n\n\n<li><strong>Virtualizzazione KVM, Non OpenVZ:<\/strong> I piani basati su OpenVZ pi\u00f9 vecchi condividono un kernel con l&#8217;host, il che pu\u00f2 significare versioni del kernel datate e occasionali problemi di compatibilit\u00e0 con runtime pi\u00f9 recenti. Ora la maggior parte dei fornitori di VPS affidabili utilizza solo KVM, ma vale comunque la pena verificarlo.<\/li>\n\n\n\n<li><strong>Spazio di Swap:<\/strong> Abilita 1-2 GB di swap sui box pi\u00f9 piccoli. L&#8217;heap V8 di Node pu\u00f2 variare notevolmente durante la raccolta dei rifiuti. Senza swap, un picco transitorio interrompe il processo. Ho visto una box da 4 GB andare in OOM durante un normale deploy perch\u00e9 qualcuno aveva disabilitato lo swap pensando fosse un anacronismo dell&#8217;era Docker.<\/li>\n\n\n\n<li><strong>Larghezza di Banda:<\/strong> La maggior parte dei piani VPS moderni include da 1 a 4 TB di larghezza di banda mensile, sufficiente per quasi tutto tranne che per l&#8217;hosting video. I <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">piani VPS Auto-Gestiti<\/a> includono larghezza di banda illimitata, una voce in meno nel foglio di calcolo della pianificazione della capacit\u00e0.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Un VPS da 4 GB costa circa $15 al mese a prezzi di mercato. Ci\u00f2 equivale a 50 centesimi al giorno, o circa un caff\u00e8 all&#8217;aeroporto ogni due settimane. Rispetto al pagamento separato per i runtime delle app, Postgres gestito e Redis su un PaaS, l&#8217;economia cambia sorprendentemente velocemente.<\/p>\n\n\n<h2 id=\"h-which-node-js-version-should-you-install\" class=\"wp-block-heading\">Quale Versione di Node.js Dovresti Installare?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Installa <strong>Node.js 24 (nome in codice Krypton)<\/strong>. \u00c8 l&#8217;attuale versione LTS attiva, promossa nell&#8217;ottobre 2025 e supportata fino all&#8217;aprile 2028 secondo il <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/about\/previous-releases\">calendario ufficiale delle versioni di Node.js<\/a>.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Molti tutorial indirizzano ancora le persone a Node 22. Queste guide non sono state aggiornate. Se stai iniziando un nuovo deployment oggi, fissare l&#8217;immagine CI e il tuo VPS a Node 24.x.<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Versione<\/strong><\/th><th><strong>Codice<\/strong><\/th><th><strong>Stato<\/strong><\/th><th><strong>Fine Supporto<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Node.js 26.x<\/td><td>(nessuno)<\/td><td>Corrente<\/td><td>Passa a LTS alla fine del 2026<\/td><\/tr><tr><td>Node.js 24.x<\/td><td>Krypton<\/td><td>LTS Attivo<\/td><td>Aprile 2028<\/td><\/tr><tr><td>Node.js 22.x<\/td><td>Jod<\/td><td>LTS in Manutenzione<\/td><td>Aprile 2027<\/td><\/tr><tr><td>Node.js 20.x<\/td><td>Iron<\/td><td>Fine Vita |<\/td><td>Ha raggiunto il Fine Vita il 30 Aprile 2026. Non usarlo.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Alcune regole generali:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Non utilizzare release correnti (non-LTS) in produzione: <\/strong>Node 26 esiste per testare la compatibilit\u00e0 futura e le nuove funzionalit\u00e0 di runtime, non per l\u2019app su cui dipendono i tuoi ricavi.<\/li>\n\n\n\n<li><strong>Node 22 \u00e8 l&#8217;opzione alternativa se una dipendenza critica non \u00e8 ancora compatibile con Node 24: <\/strong>La maggior parte dell&#8217;ecosistema si \u00e8 stabilizzata entro pochi mesi dalla promozione LTS.<\/li>\n\n\n\n<li><strong>Fissa la tua versione di Node ovunque: <\/strong>La tua immagine CI, Dockerfile, .nvmrc e VPS di produzione dovrebbero essere concordi. &#8220;Funziona sul mio computer&#8221; diventa costoso molto rapidamente quando i moduli nativi entrano in gioco.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">\ud83e\udd14<a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/bun-vs-node\/\"><strong>Stai Considerando Bun<\/strong><\/a><strong>?<\/strong> \u00c8 pi\u00f9 veloce in alcuni carichi di lavoro ed \u00e8 sinceramente impressionante, ma l&#8217;ecosistema \u00e8 ancora pi\u00f9 piccolo e l&#8217;esperienza in produzione \u00e8 pi\u00f9 breve rispetto a quella di Node. Per la maggior parte dei team, la routine vince.<\/p>\n\n\n<p class=\"wp-block-paragraph\">NodeSource, che gestisce i repository apt e yum da cui molti team di produzione installano Node, evidenzia i miglioramenti nella linea 24.x, a partire da un motore V8 pi\u00f9 recente. Node 24 ora include anche strumenti ormai maturi come il node integrato &#8211;watch e un esecutore di test nativo stabile (node: test), entrambi stabilizzatisi nelle linee 20\u201322 e portati avanti qui. Niente di ci\u00f2 \u00e8 appariscente. Rimuove solo un po&#8217; di attrito operativo ogni mese.<\/p>\n\n\n<h2 id=\"h-how-do-you-install-node-js-on-a-vps\" class=\"wp-block-heading\">Come Si Installa Node.js Su Un VPS?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Hai due percorsi di installazione realistici. Scegli in base a se il server esegue una app Node o diverse.<\/p>\n\n\n<h3 id=\"h-nodesource-for-a-single-app-server\" class=\"wp-block-heading\">NodeSource Per Un Server App Singolo<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Questo \u00e8 il percorso di produzione pi\u00f9 semplice. Un script di configurazione e un <strong><code>apt install<\/code><\/strong> ti permettono di ottenere l&#8217;attuale linea LTS di Node 24 come pacchetto di sistema, e gli aggiornamenti futuri di sicurezza avverranno tramite normali upgrade dei pacchetti.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Su Ubuntu o Debian:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | bash -\napt install -y nodejs<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Verifica l&#8217;installazione:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>node -v\nnpm -v<\/code><\/pre>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"2560\" height=\"1344\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-scaled.webp\" alt=\"Comandi del terminale che mostrano la versione 24.14.0 di Node.js e la versione 11.9.0 di npm installati su DreamHost.\" class=\"wp-image-83813 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-scaled.webp 2560w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-300x158.webp 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1024x538.webp 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-768x403.webp 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1536x806.webp 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-2048x1075.webp 2048w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-600x315.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1200x630.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-730x383.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1460x767.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-784x412.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1568x823.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-877x460.webp 877w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_nodesource_for_a_single_app_server-1754x921.webp 1754w\" data-sizes=\"(max-width: 2560px) 100vw, 2560px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/1344;\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Dovresti vedere una release di Node 24.x.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Le istruzioni per le distribuzioni della famiglia RHEL (yum\/dnf) si trovano nel repository ufficiale delle distribuzioni NodeSource.<\/p>\n\n\n<h3 id=\"h-nvm-for-per-project-version-switching\" class=\"wp-block-heading\">nvm per il Cambio di Versione per Progetto<\/h3>\n\n\n<p class=\"wp-block-paragraph\"><a target=\"_blank\" href=\"https:\/\/github.com\/nvm-sh\/nvm\">nvm<\/a> (Node Version Manager) installa Node nella tua directory home e permette a diversi progetti di eseguire diverse versioni di Node. Utile se ospiti pi\u00f9 app sullo stesso server o non hai accesso sudo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Esegui questo come utente dell&#8217;app, non come root:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.40.5\/install.sh | bash<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Ricarica la tua shell, poi installa Node 24:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>nvm install 24\nnvm use 24\nnvm alias default 24<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Una regola importante: <\/strong>Non usare <code>sudo \u2018npm install -g\u2019<\/code> per le dipendenze delle applicazioni.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Le installazioni globali sono solitamente riservate agli strumenti CLI a livello di macchina come pm2, typescript o nodemon. Le dipendenze della tua app devono essere inserite nel package.json e dovrebbero essere installate dalla directory del progetto con npm ci.<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>NodeSource<\/strong><\/th><th><strong>nvm<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Una versione di Node per server<\/td><td>Multiple versioni di Node per server<\/td><\/tr><tr><td>Installato su tutto il sistema, funziona con qualsiasi utente<\/td><td>Installato per utente<\/td><\/tr><tr><td>Aggiornamenti automatici con <code>\u2018apt\u2019<\/code><\/td><td>Gestito manualmente<\/td><\/tr><tr><td>Richiede <code>sudo<\/code><\/td><td>Non richiede <code>sudo<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Se non sei sicuro, inizia con NodeSource. La maggior parte dei server di produzione monofunzione non necessita della commutazione della versione di Node per ogni progetto.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49<strong>Utenti di VPS DreamHost Autogestiti:<\/strong> L&#8217;applicazione Node disponibile in fase di provisioning include Node 22 LTS \u2014 ancora supportato fino ad aprile 2027. Per utilizzare Node 24, segui i passaggi di NodeSource o nvm sopra indicati dopo il provisioning.<\/p>\n\n\n<h2 id=\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\" class=\"wp-block-heading\">Devi Usare PM2 o systemd per Mantenere in Esecuzione la Tua App?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Entrambi funzionano. La risposta onesta \u00e8 quella con cui il tuo team si trova pi\u00f9 a suo agio. PM2 \u00e8 il percorso amichevole per gli sviluppatori. systemd \u00e8 il percorso nativo Unix. Entrambi risolvono gli stessi tre problemi: riavvio in caso di crash, avvio all&#8217;accensione e spegnimento grazioso su \u2018SIGTERM\u2019.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Se stai iniziando da zero, ecco come scegliere:<\/p>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th><strong>PM2<\/strong><\/th><th><strong>systemd<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Tempo di configurazione<\/td><td>3 minuti<\/td><td>10 minuti<\/td><\/tr><tr><td>Modalit\u00e0 cluster (multi-core)<\/td><td>Incorporata<\/td><td>Non incorporata (avviare N unit\u00e0)<\/td><\/tr><tr><td>Rotazione dei log<\/td><td>Modulo: <code>\u2018pm2-logrotate\u2019<\/code><\/td><td>Incorporata tramite <code>\u2018journalctl\u2019<\/code><\/td><\/tr><tr><td>Ricarica senza interruzioni<\/td><td><code>\u2018pm2 reload\u2019<\/code><\/td><td>Generalmente gestito manualmente con riavvii progressivi o pi\u00f9 unit\u00e0<\/td><\/tr><tr><td>Sovraccarico di memoria (demone)<\/td><td>Piccolo sovraccarico del demone<\/td><td>Nessuno (nessun demone extra)<\/td><\/tr><tr><td>Migliore per<\/td><td>Configurazioni singole, sviluppo JS veloce<\/td><td>Casse multiple per app, comfort del team operativo<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Il <a target=\"_blank\" href=\"https:\/\/pm2.keymetrics.io\/docs\/usage\/quick-start\/\">rapido avvio di PM2<\/a> \u00e8 proprio cos\u00ec, rapido:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>npm install -g pm2\npm2 start app.js --name api\npm2 startup    # stampa il comando di avvio systemd da eseguire\npm2 save       # salva l'elenco dei processi correnti<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">PM2 diventa quindi l&#8217;unico interlocutore a cui ti rivolgi: \u2018<code>pm2 logs<\/code>,\u2019 \u2018<code>pm2 reload api<\/code>,\u2019 \u2018<code>pm2 monit<\/code>.\u2019<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Da sapere anche:<\/strong> \u2018<code>pm2 startup<\/code>\u2019 scrive un&#8217;unit\u00e0 systemd, quindi la configurazione di PM2 <em>effettivamente<\/em> utilizza systemd sottostante.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Una unit\u00e0 systemd minima per la gestione diretta di Node in \u2018\/etc\/systemd\/system\/api.service\u2019:<\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Unit]<br>Descrizione=La Mia API Node<br>Dopo=network.target<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Service]<br>Type=simple<br>User=app<br>WorkingDirectory=\/var\/www\/api<br>ExecStart=\/usr\/bin\/node server.js<br>Restart=on-failure<br>RestartSec=5<br>Environment=NODE_ENV=production<br>StandardOutput=journal<br>StandardError=journal<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>[Install]<br>WantedBy=multi-user.target<\/code><br>Poi \u2018<code>systemctl enable --now api<\/code>.\u2019 I log si trovano in \u2018<code>journalctl -u api -f<\/code>.\u2019<\/p>\n\n\n<p class=\"wp-block-paragraph\">Se stai gi\u00e0 utilizzando PM2 e funziona, non migrare a systemd solo perch\u00e9 qualcuno su Hacker News lo ha detto. La memoria del daemon PM2 non \u00e8 il motivo per cui dovresti migrare da esso.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Migra quando hai una vera ragione, come eseguire mezza dozzina di processi Node dove ogni megabyte conta, o spedire in un ambiente operativo dove ogni altro servizio \u00e8 una unit\u00e0 systemd, e PM2 si distingue come l&#8217;elemento insolito.<\/p>\n\n\n<h2 id=\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\" class=\"wp-block-heading\">Come Posizionare NGINX (o Caddy) Davanti alla Tua App Node?<\/h2>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1099\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node.webp\" alt=\"NGINX funge da proxy inverso tra le richieste del client e il backend dell'app Node.js.\" class=\"wp-image-83812 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-300x206.webp 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1024x703.webp 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-768x528.webp 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1536x1055.webp 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-600x412.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1200x824.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-730x501.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1460x1003.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-784x539.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-1568x1077.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/02_how_nginx_sits_in_front_of_node-877x602.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1099;\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Vuoi un reverse proxy davanti a Node per cinque motivi: terminazione HTTPS, compressione gzip\/brotli, erogazione di risorse statiche, esecuzione di pi\u00f9 app sulla stessa macchina e limitazione del tasso pi\u00f9 semplice. Node <em>pu\u00f2<\/em> fare tutto questo. NGINX e Caddy lo fanno meglio e non interrompono il tuo ciclo di eventi quando qualcosa si comporta male.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Scegli NGINX se qualcuno nel tuo team lo conosce gi\u00e0. Scegli Caddy se vuoi <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/ultimate-guide-ssl-tls\/\">HTTPS<\/a> in tre righe di configurazione e sei a posto con un ecosistema di configurazione avanzata pi\u00f9 ridotto.<\/p>\n\n\n<h3 id=\"h-minimal-nginx-config\" class=\"wp-block-heading\">Configurazione Minima NGINX<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Inserisci questo blocco proxy in <strong>\/etc\/nginx\/sites-available\/api<\/strong>, crea un link simbolico a <strong><code>sites-enabled<\/code><\/strong>, poi <strong><code>nginx -t &amp;&amp; systemctl reload nginx<\/code><\/strong>.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name api.example.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_cache_bypass $http_upgrade;\n    }\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Le intestazioni &#8216;Upgrade&#8217; e &#8216;Connection&#8217; sono le linee di supporto WebSocket. <a target=\"_blank\" href=\"https:\/\/nginx.org\/en\/docs\/http\/websocket.html\">I documenti stessi di NGINX indicano<\/a> che Upgrade \u00e8 un&#8217;intestazione hop-by-hop, quindi necessita di una gestione esplicita quando si inoltra il traffico WebSocket.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Lasciali abilitati se la tua app utilizza WebSockets ora, o potrebbe farlo in futuro. Socket.IO, sottoscrizioni GraphQL tramite WebSockets e un sorprendente numero di funzionalit\u00e0 &#8220;regolari&#8221; in tempo reale dipendono da quel handshake di aggiornamento.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Il bug di produzione pi\u00f9 comune che vedo nelle configurazioni Node \u00e8 un server Socket.IO dietro <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216431827-Nginx-overview\">NGINX<\/a> senza quelle due righe. Le connessioni falliscono in modo intermittente, gli sviluppatori incolpano Socket.IO, e il problema effettivo \u00e8 di solito nella configurazione del proxy.<\/p>\n\n\n<h3 id=\"h-minimal-caddyfile\" class=\"wp-block-heading\">Caddyfile Minimo<\/h3>\n\n\n<p class=\"wp-block-paragraph\">La versione <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/quick-starts\/reverse-proxy\">quickstart del reverse proxy di Caddy<\/a> dello stesso argomento:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>api.example.com {\n    reverse_proxy 127.0.0.1:3000\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Questo \u00e8 l&#8217;intero file. Fintanto che il dominio punta al server e le porte 80\/443 sono raggiungibili, Caddy provvede e rinnova HTTPS automaticamente. I documenti di Caddy dicono che le <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/automatic-https\">provviste automatiche di HTTPS<\/a> rilasciano certificati TLS per i siti e li mantengono rinnovati; la guida rapida al proxy inverso segnala anche che HTTPS \u00e8 automatico quando Caddy conosce il nome host.<\/p>\n\n\n<h3 id=\"h-bind-node-to-localhost-not-0-0-0-0\" class=\"wp-block-heading\">Associa Nodo a localhost, Non a 0.0.0.0<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Qualunque proxy tu scelga, configura la tua app Node per ascoltare su 127.0.0.1:3000, non su 0.0.0.0:3000. L&#8217;unica cosa che dovrebbe affrontare internet pubblico su una scatola Node \u00e8 il proxy. Abbina questo con UFW, il comune frontend del firewall di Ubuntu, per negare tutto eccetto le porte 22, 80 e 443.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>ufw default deny incoming\nufw allow 22\/tcp\nufw allow 80\/tcp\nufw allow 443\/tcp\nufw enable<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Se SSH \u00e8 in esecuzione su una porta personalizzata, permetti quella porta prima di abilitare UFW.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Collegati a localhost fin dal primo giorno. La riunione in cui qualcuno ammette &#8220;l&#8217;app era esposta perch\u00e9 Node era collegato a 0.0.0.0&#8221; non \u00e8 una riunione a cui vuoi partecipare.<\/p>\n\n\n<h2 id=\"h-how-do-you-set-up-https-for-your-node-js-app\" class=\"wp-block-heading\">Come Configuri HTTPS Per La Tua App Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Usa <a target=\"_blank\" href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/216539558-Let-s-Encrypt-SSL-certificate-overview\">Let&#8217;s Encrypt<\/a>. \u00c8 gratuito, automatizzato e fidato da ogni browser. Ci sono due percorsi, a seconda del proxy che hai scelto.<\/p>\n\n\n<h3 id=\"h-nginx-certbot\" class=\"wp-block-heading\">NGINX + Certbot<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Imposta un record A sul tuo IP VPS e attendi la propagazione del DNS.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Installa Certbot:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>apt install certbot python3-certbot-nginx<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Avvia:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>certbot --nginx -d api.example.com<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Certbot aggiorna la tua configurazione NGINX e ricarica il server automaticamente.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Sulle versioni moderne di Ubuntu, un timer systemd installato dal pacchetto Certbot gestisce automaticamente il rinnovo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Apri <strong>https:\/\/api.example.com<\/strong> e conferma l&#8217;icona del lucchetto.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Anche la <a target=\"_blank\" href=\"https:\/\/certbot.eff.org\/instructions?ws=nginx&amp;os=snap\">documentazione ufficiale di Certbot<\/a> copre il percorso di installazione basato su snap se il pacchetto della tua distribuzione \u00e8 obsoleto.<\/p>\n\n\n<h3 id=\"h-caddy\" class=\"wp-block-heading\">Caddy<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Aggiungi il dominio al Caddyfile (l&#8217;esempio sopra gi\u00e0 lo include), poi riavvia Caddy. Finch\u00e9 il dominio viene risolto correttamente e le porte 80\/443 sono accessibili, il certificato viene fornito automaticamente al primo avvio. Non c&#8217;\u00e8 Certbot.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Non terminare TLS in Node stesso per la produzione.<\/strong><\/p>\n\n\n<p class=\"wp-block-paragraph\">Il modulo https di Node funziona perfettamente, ma i reverse proxy come NGINX e Caddy sono progettati appositamente per la terminazione TLS. Offrono stapling OCSP, cifrature moderne di default, rinnovo automatico dei certificati, supporto HTTP\/2 e \u2014 nel caso di Caddy \u2014 supporto HTTP\/3 gi\u00e0 configurato.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Potresti gestire tutto direttamente in Node? Certo. Staresti semplicemente ricostruendo un&#8217;infrastruttura che il tuo proxy gi\u00e0 risolve molto bene.<\/p>\n\n\n<h2 id=\"h-what-does-a-production-ready-node-js-setup-actually-look-like\" class=\"wp-block-heading\">Come Appare Effettivamente Una Configurazione Node.js Pronta Per La Produzione?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Otto cose mordono le persone in produzione. La maggior parte di esse non sono presenti nei tutorial di installazione perch\u00e9 non rientrano nell&#8217;arco &#8220;installa Node, esegui app&#8221;. Sono la differenza tra un&#8217;app che sopravvive al secondo mese e una che non lo fa.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NODE_ENV=production:<\/strong> Lo step pi\u00f9 spesso dimenticato. In molti Framework e librerie Node, disabilita comportamenti esclusivi dello sviluppo e abilita le ottimizzazioni di produzione. Express, ad esempio, memorizza nella cache i template di vista compilati e restituisce errori pi\u00f9 concisi in produzione \u2014 la propria documentazione cita un miglioramento delle prestazioni fino a 3 volte. Imposta la &#8216;env var&#8217; ovunque.<\/li>\n\n\n\n<li><strong>Graceful shutdown:<\/strong> Quando il tuo VPS si riavvia o PM2 invia \u2018SIGTERM\u2019, la tua app ha qualche secondo per gestire le richieste in corso, chiudere le connessioni al database e uscire pulitamente. Configura un gestore \u2018process.on(&#8216;SIGTERM&#8217;, &#8230;)\u2019. Il tempo di spegnimento predefinito di PM2 dipende dalla configurazione e dall&#8217;ambiente, quindi non presupporre che avrai sempre molto tempo per pulire.&nbsp;<\/li>\n\n\n\n<li><strong>Log rotation:<\/strong> Il modulo \u2018pm2-logrotate\u2019 di PM2 gestisce questo per PM2. Il giornale di systemd lo gestisce per le unit\u00e0 systemd dirette. Senza rotazione, i tuoi log riempiono il disco in un quarto del tempo che ti aspetteresti.<\/li>\n\n\n\n<li><strong>.env discipline:<\/strong> Non commettere mai segreti, non registrarli mai. Usa \u2018dotenv\u2019 per lo sviluppo locale. In produzione, imposta le variabili d&#8217;ambiente tramite &#8216;Environment=&#8217; della tua unit\u00e0 systemd o il tuo file ecosistema PM2. Il giorno in cui fai \u2018console.log(process.env)\u2019 per errore \u00e8 il giorno in cui devi ruotare ogni credenziale.<\/li>\n\n\n\n<li><strong>Un reverse proxy davanti a Node: <\/strong> Collega Node a localhost; lascia che NGINX o Caddy si confrontino con internet pubblico.<\/li>\n\n\n\n<li><strong>Un firewall:<\/strong> UFW nega tutto tranne 22, 80, 443. Spostare SSH dalla porta 22 non fermer\u00e0 un attaccante determinato, ma riduce drasticamente il rumore di tentativi di forza bruta automatizzati e i log di autenticazione inutili.<\/li>\n\n\n\n<li><strong>Monitoring:<\/strong> Un endpoint di controllo sanitario che il tuo strumento di monitoraggio verifica ogni minuto. PM2 ha funzionalit\u00e0 di base integrate. Per questioni serie, utilizza Prometheus e Grafana, oppure un servizio di monitoraggio dell&#8217;uptime ospitato come <a target=\"_blank\" href=\"https:\/\/betterstack.com\/\">Better Stack<\/a> o <a target=\"_blank\" href=\"https:\/\/uptimerobot.com\/\">UptimeRobot<\/a>. Vuoi sapere che la tua app non funziona <em>prima<\/em> che un cliente te lo dica.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Stima manutenzione per lo stack sopra: da una a tre ore al mese.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Aggiornamenti Apt, aggiornamenti occasionali delle dipendenze e un controllo trimestrale del volume dei log. Questo \u00e8 lo scambio per i vantaggi di costo e controllo.<\/p>\n\n\n<h2 id=\"h-when-is-a-vps-the-wrong-choice-for-node-js\" class=\"wp-block-heading\">Quando Un VPS \u00c8 La Scelta Sbagliata Per Node.js?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Un VPS \u00e8 la scelta sbagliata quando il tuo carico di lavoro \u00e8 pensato per qualcos&#8217;altro. Sii onesto su quale lato ti trovi prima di effettuare la configurazione.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Siti Statici e Contenuti SSG:<\/strong> Esportazione Next.js, Astro, Gatsby e un blog Eleventy. Piattaforme come Vercel, Netlify o Cloudflare Pages offrono hosting statico globalmente memorizzato nella cache, deploy basati su Git e ricostruzioni automatiche inclusi. Un VPS di solito \u00e8 un&#8217;infrastruttura non necessaria per contenuti puramente statici.<\/li>\n\n\n\n<li><strong>Carichi di lavoro guidati da eventi sparsi:<\/strong> Cloudflare Workers e AWS Lambda sono economici per i webhook eseguiti dieci volte al giorno.&nbsp;<\/li>\n\n\n\n<li><strong>App in tempo reale che necessitano di oltre 100.000 connessioni contemporanee:<\/strong> Un VPS non scala orizzontalmente. Avrai bisogno di orchestrazione (Kubernetes, ECS, Nomad) o di una piattaforma gestita per il tempo reale come Ably o Pusher.<\/li>\n\n\n\n<li><strong>Carichi di lavoro regolati e con elevati requisiti di conformit\u00e0:<\/strong> HIPAA, PCI-DSS Livello 1, FedRAMP. Una PaaS gestita con certificazioni di conformit\u00e0 integrate allevia il dolore delle revisioni. Auto-ospitare la conformit\u00e0 su un VPS \u00e8 un progetto di pi\u00f9 trimestri che probabilmente non vuoi.<\/li>\n\n\n\n<li><strong>Nessuna dimestichezza con <\/strong><a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/linux-distros\/\"><strong>Linux<\/strong><\/a><strong> \u2014 e nessuna voglia di acquisirla:<\/strong> Piattaforme come Render, Railway e DigitalOcean App Platform si collocano tra l&#8217;hosting VPS grezzo e una PaaS completamente gestita. Strumenti come <a href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/dokploy\/\">Dokploy<\/a> aggiungono flussi di lavoro di deployment in stile Heroku sulla tua infrastruttura VPS. Ottieni comunque molti dei vantaggi in termini di costo e controllo senza la necessit\u00e0 di familiarizzare profondamente con iptables, gli interni di systemd o il debugging del reverse-proxy all&#8217;1 di notte.<\/li>\n\n\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\">Non c&#8217;\u00e8 nulla di sbagliato in nessuna di quelle risposte. La migliore decisione tecnica \u00e8 quella che si adatta al tuo carico di lavoro.<\/p>\n\n\n<h2 id=\"h-picking-your-node-stack-and-moving-in\" class=\"wp-block-heading\">Scegliere Il Tuo Stack Node E Trasferirsi<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Apri quella fattura di hosting un&#8217;altra volta.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Stai per sostituire una quantit\u00e0 sorprendente di esso con un unico conto VPS.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83d\udc49Lo stack:<\/strong> Ubuntu 24.04 LTS, Node 24, PM2 (o systemd), NGINX (o Caddy), Let&#8217;s Encrypt tramite Certbot (o integrato in Caddy).<\/p>\n\n\n<p class=\"wp-block-paragraph\">Avvia il piano VPS pi\u00f9 piccolo che soddisfi la RAM necessaria, installa Node, esegui la tua app su \u2018127.0.0.1,\u2019 indirizza NGINX verso di essa e cambia i tuoi DNS.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Se l&#8217;app supera un deploy, un riavvio e una sessione notturna senza problemi, hai quasi raggiunto il tuo obiettivo.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Il resto \u00e8 manutenzione. Un&#8217;ora o due al mese, la sporadica finestra di &#8216;apt upgrade&#8217;, un aggiornamento delle dipendenze trimestrale. Questo \u00e8 l&#8217;accordo che hai fatto quando hai scambiato una fattura per postazione con una forfettaria, e il Self-Managed VPS Stack 4 di DreamHost \u00e8 il punto da cui puoi partire.<\/p>\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a-877x522.webp 1x, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a.webp 2x\"  \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/hosting\/vps\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>VPS<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tOwn Your Entire Stack. Apps, AI, Databases, and More.\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tKeep every credential and conversation on a server you control, with NVMe speed and unmetered bandwidth built in.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Explore VPS Hosting Plans                    <\/a>\n\n\t<\/div>\n<\/div>\n\n<h2 id=\"h-frequently-asked-questions-about-running-node-js-on-a-vps\" class=\"wp-block-heading\">Domande Frequenti Sull&#8217;Uso di Node.js su un VPS<\/h2>\n\n\n<h3 id=\"h-can-i-run-node-js-on-any-vps\" class=\"wp-block-heading\">Posso eseguire Node.js su qualsiasi VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">La maggior parte dei piani VPS moderni eseguono Node.js senza problemi. I piani VPS basati su KVM con una distribuzione Linux a 64 bit sono la scelta predefinita pi\u00f9 sicura per le versioni attuali di Node.js.<\/p>\n\n\n<p class=\"wp-block-paragraph\">I piani pi\u00f9 vecchi basati su OpenVZ a volte hanno restrizioni del kernel che interrompono le versioni pi\u00f9 recenti di Node. Se stai scegliendo tra provider, chiedi se sono basati su KVM.<\/p>\n\n\n<h3 id=\"h-how-much-ram-does-node-js-need-on-a-vps\" class=\"wp-block-heading\">Quanta RAM \u00e8 necessaria per Node.js su un VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Un server Express minimo rimane inattivo ben al di sotto dei 100 MB, ma un&#8217;applicazione di produzione realistica con middleware, registrazione e un pool di connessioni funziona tipicamente nel range di 150-300 MB.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Il minimo realistico per un&#8217;app di produzione \u00e8 di 2 GB; il punto ideale per uno stack Node + Postgres + Redis \u00e8 di 4 GB. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">L&#8217;Hosting VPS Autogestito di DreamHost<\/a> Stack 4 (4 GB) gestisce la maggior parte dei carichi di lavoro di produzione di Node. Passa allo Stack 8 (8 GB) per app con SSR intensivo o in tempo reale.<\/p>\n\n\n<h3 id=\"h-what-s-the-current-node-js-lts-version\" class=\"wp-block-heading\">Qual \u00e8 la versione LTS corrente di Node.js?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">L&#8217;attuale LTS attivo \u00e8 Node.js 24.x (&#8220;Krypton&#8221;), promosso il 28 ottobre 2025 e supportato fino ad aprile 2028. Node.js 22.x (&#8220;Jod&#8221;) \u00e8 in LTS di manutenzione fino ad aprile 2027 se una dipendenza impone la retrocompatibilit\u00e0. <a target=\"_blank\" href=\"https:\/\/nodejs.org\/en\/blog\/release\/v26.0.0\">Node.js 26 \u00e8 stato lanciato il 5 maggio 2026<\/a>, come Corrente e sar\u00e0 promosso a LTS nell&#8217;ottobre 2026.<\/p>\n\n\n<p class=\"wp-block-paragraph\">La maggior parte dei team di produzione si attiene alle versioni LTS a meno che non abbiano specificamente bisogno di funzionalit\u00e0 di runtime pi\u00f9 recenti.<\/p>\n\n\n<h3 id=\"h-do-i-need-pm2-if-i-have-systemd\" class=\"wp-block-heading\">Ho bisogno di PM2 se ho systemd?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">No, non hai bisogno di entrambi. PM2 e systemd risolvono lo stesso problema: mantenere la tua app Node in esecuzione in caso di crash e riavvii. Molti team focalizzati su Node scelgono PM2 per il clustering integrato, la gestione dei log e gli strumenti di ricarica.<\/p>\n\n\n<p class=\"wp-block-paragraph\">I team che gi\u00e0 utilizzano unit\u00e0 systemd per tutto il resto scelgono systemd.<\/p>\n\n\n<h3 id=\"h-why-put-nginx-in-front-of-node-js\" class=\"wp-block-heading\">Perch\u00e9 posizionare NGINX davanti a Node.js?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">NGINX (o Caddy) davanti a Node.js centralizza la terminazione TLS, la compressione, la distribuzione di asset statici e il rate limiting in un software progettato specificamente per il proxying e il servizio web.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Ti permette anche di eseguire pi\u00f9 app Node sullo stesso VPS senza conflitti di porte. In produzione, Node ascolta su localhost; NGINX si affaccia su internet pubblico.<\/p>\n\n\n<h3 id=\"h-is-node-js-on-a-vps-cheaper-than-heroku-or-vercel\" class=\"wp-block-heading\">Node.js su un VPS \u00e8 pi\u00f9 economico di Heroku o Vercel?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">S\u00ec, spesso. Un VPS da 4 GB si colloca comunemente in una fascia di prezzo di $15-$25 al mese a tariffe di mercato e pu\u00f2 consolidare i costi di runtime dell&#8217;app, del database e della cache che sono fatturati separatamente su molte piattaforme PaaS.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Il prezzo di Vercel Pro \u00e8 basato su ogni utente, e le piattaforme serverless impongono ancora limiti sulla durata dell&#8217;esecuzione a seconda del runtime e del piano.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Il compromesso \u00e8 che ti occupi tu stesso delle operazioni, circa da una a tre ore al mese.<\/p>\n\n\n<h3 id=\"h-can-i-run-multiple-node-apps-on-one-vps\" class=\"wp-block-heading\">Posso eseguire pi\u00f9 app Node su un unico VPS?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">S\u00ec, ed \u00e8 la ragione pi\u00f9 comune per cui i team passano da PaaS a un VPS. Esegui ogni app sulla sua porta interna (3000, 3001, 3002) e indirizza il traffico con i blocchi server di NGINX per Nome host. PM2 gestisce tutti come processi separati; systemd utilizza un file unit\u00e0 per app.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Un VPS da 4 GB pu\u00f2 spesso gestire diversi servizi Node leggeri insieme a un piccolo carico di lavoro del database.<\/p>\n\n\n<h3 id=\"h-can-i-run-node-js-on-dreamhost-shared-hosting\" class=\"wp-block-heading\">Posso eseguire Node.js su DreamHost Hosting Condiviso?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">No. Node.js richiede processi persistenti, installazioni di pacchetti a livello di root e associazione diretta delle porte, nessuna delle quali \u00e8 fornita dall&#8217;hosting condiviso. I <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\">piani VPS Self-Managed di DreamHost<\/a> (Stack 4 e superiori) sono adatti per i carichi di lavoro Node con pieno accesso root, storage NVMe e larghezza di banda illimitata.<\/p>\n\n\n\n<p><script type=\"application\/ld+json\"><br \/>\n{<br \/>\n  \"@context\": \"https:\/\/schema.org\",<br \/>\n  \"@graph\": [<br \/>\n    {<br \/>\n      \"@type\": \"FAQPage\",<br \/>\n      \"mainEntity\": [<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Posso eseguire Node.js su qualsiasi VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"La maggior parte dei piani VPS moderni esegue Node.js senza problemi. Il requisito \u00e8 KVM (o una virtualizzazione completa simile) e un kernel Linux a 64 bit. I piani pi\u00f9 vecchi basati su OpenVZ a volte hanno restrizioni del kernel che interrompono le nuove versioni di Node. Se stai scegliendo tra diversi fornitori, chiedi se si basano su KVM.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Quanta RAM \u00e8 necessaria per Node.js su un VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"Un server Express minimo rimane attivo con ben meno di 100 MB, ma un'app di produzione realistica con middleware, registrazione e un pool di connessioni solitamente opera nella gamma di 150-300 MB. Il minimo realistico per un'app di produzione \u00e8 2 GB; il punto ideale per un stack Node + Postgres + Redis \u00e8 4 GB. Il Self-Managed VPS Stack 4 (4 GB) di DreamHost gestisce la maggior parte dei carichi di lavoro di produzione di Node. Passa allo Stack 8 (8 GB) per app con rendering lato server pesante o app in tempo reale.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Qual \u00e8 la versione LTS corrente di Node.js?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"L'Active LTS corrente \u00e8 Node.js 24.x ('Krypton'), promosso il 28 ottobre 2025 e supportato fino ad aprile 2028. Node.js 22.x ('Jod') \u00e8 in Maintenance LTS fino ad aprile 2027 se una dipendenza critica richiede la compatibilit\u00e0 retroattiva. Node.js 26 \u00e8 stato lanciato il 5 maggio 2026 come Current e passa a LTS nell'ottobre 2026. Non eseguire rilasci Current (non LTS) in produzione.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Ho bisogno di PM2 se ho systemd?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"No, non hai bisogno di entrambi. PM2 e systemd risolvono lo stesso problema, mantenendo la tua app Node in esecuzione attraverso crash e riavvii. La maggior parte dei team sceglie PM2 per le comodit\u00e0 di modalit\u00e0 cluster, rotazione dei log e ricarica senza tempo di inattivit\u00e0 gi\u00e0 pronte. I team che gi\u00e0 gestiscono unit\u00e0 systemd per tutto il resto scelgono systemd. Usa quello con cui il tuo team si trova pi\u00f9 a suo agio.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Perch\u00e9 mettere NGINX davanti a Node.js?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"NGINX (o Caddy) davanti a Node.js gestisce la terminazione TLS, la compressione gzip e brotli, il servizio di asset statici e il limitazione della velocit\u00e0 pi\u00f9 efficientemente di Node stesso. Ti permette anche di eseguire pi\u00f9 app Node sullo stesso VPS senza conflitti di porte. In produzione, Node ascolta su localhost; NGINX si affaccia su internet pubblico. Questo \u00e8 lo schema di produzione standard, non un'ottimizzazione opzionale.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Node.js su un VPS \u00e8 pi\u00f9 economico di Heroku o Vercel?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"S\u00ec, spesso. Un VPS da 4 GB ha un costo mensile tra i 15 e i 25 dollari e sostituisce un dyno Heroku Basic pi\u00f9 un stack Heroku Postgres pi\u00f9 Heroku Redis che spesso si aggira tra i 25 e i 60 dollari al mese. Vercel Pro parte da 20 dollari a posto con timeout delle funzioni. La differenza \u00e8 che devi gestire le operazioni da solo, circa da una a tre ore al mese di manutenzione.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Posso eseguire pi\u00f9 app Node su un solo VPS?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"S\u00ec, ed \u00e8 il motivo pi\u00f9 comune per cui i team passano da PaaS a un VPS. Esegui ogni app sulla sua porta interna (3000, 3001, 3002) e instrada il traffico con i blocchi server di NGINX in base all'hostname. PM2 gestisce tutte come processi separati; systemd utilizzerebbe un file unitario per app. Un VPS da 4 GB gestisce comodamente tre o quattro piccoli servizi Node pi\u00f9 un database.\"<br \/>\n          }<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"Question\",<br \/>\n          \"name\": \"Posso eseguire Node.js sull'hosting condiviso di DreamHost?\",<br \/>\n          \"acceptedAnswer\": {<br \/>\n            \"@type\": \"Answer\",<br \/>\n            \"text\": \"No. Node.js necessita di processi persistenti, installazioni di pacchetti a livello di root e associazione diretta delle porte, nessuno dei quali \u00e8 fornito dall'hosting condiviso. I piani VPS Self-Managed di DreamHost (Stack 4 e superiori) si adattano ai carichi di lavoro di Node con pieno accesso root, archiviazione NVMe e larghezza di banda illimitata.\"<br \/>\n          }<br \/>\n        }<br \/>\n      ]<br \/>\n    },<br \/>\n    {<br \/>\n      \"@type\": \"HowTo\",<br \/>\n      \"name\": \"Come eseguire Node.js su un VPS\",<br \/>\n      \"step\": [<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Installa Node.js 24 LTS\",<br \/>\n          \"text\": \"Su Ubuntu o Debian, esegui: curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | bash -, poi apt install -y nodejs. Verifica con node -v. Usa nvm invece se hai bisogno di cambiare versione per progetto.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Configura un gestore di processi\",<br \/>\n          \"text\": \"Installa PM2 con npm install -g pm2, poi pm2 start app.js --name api, pm2 startup, pm2 save. Oppure scrivi un'unit\u00e0 systemd in \/etc\/systemd\/system\/api.service e esegui systemctl enable --now api.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Installa NGINX e configura un reverse proxy\",<br \/>\n          \"text\": \"Installa NGINX con apt install nginx. Crea un blocco server in \/etc\/nginx\/sites-available\/api con proxy_pass http:\/\/127.0.0.1:3000 e gli header di aggiornamento WebSocket. Crea un collegamento simbolico a sites-enabled e ricarica.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Associa Node a localhost e abilita un firewall\",<br \/>\n          \"text\": \"Configura la tua app Node per ascoltare su 127.0.0.1:3000 anzich\u00e9 0.0.0.0:3000. Abilita UFW con default deny incoming, poi permetti le porte 22, 80 e 443.\"<br \/>\n        },<br \/>\n        {<br \/>\n          \"@type\": \"HowToStep\",<br \/>\n          \"name\": \"Configura HTTPS con Let's Encrypt\",<br \/>\n          \"text\": \"Punta un record A all'IP del tuo VPS. Installa Certbot con apt install certbot python3-certbot-nginx, poi esegui certbot --nginx -d tuodominio.com. Certbot installa un timer systemd che rinnova automaticamente il certificato.\"<br \/>\n        }<br \/>\n      ]<br \/>\n    }<br \/>\n  ]<br \/>\n}<br \/>\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esegui Node.js su un VPS con controllo completo: niente avvii a freddo, nessun timeout di funzione, nessun conto per postazione. LTS corrente, PM2 vs. systemd, NGINX con Let\u2019s Encrypt.<\/p>\n","protected":false},"author":2,"featured_media":83811,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_opengraph-title":"Come Eseguire Node.js su un VPS - DreamHost","_yoast_wpseo_opengraph-description":"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let's Encrypt.","_yoast_wpseo_twitter-title":"Come Eseguire Node.js su un VPS - DreamHost","_yoast_wpseo_twitter-description":"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let's Encrypt.","toc_headlines":"[[\"h-when-does-running-node-js-on-a-vps-make-sense\",\"Quando Ha Senso Usare Node.js su un VPS?\"],[\"h-what-vps-specs-does-node-js-actually-need\",\"Quali Specifiche VPS Richiede Effettivamente Node.js?\"],[\"h-which-node-js-version-should-you-install\",\"Quale Versione di Node.js Dovresti Installare?\"],[\"h-how-do-you-install-node-js-on-a-vps\",\"Come Si Installa Node.js Su Un VPS?\"],[\"h-should-you-use-pm2-or-systemd-to-keep-your-app-running\",\"Devi Usare PM2 o systemd per Mantenere in Esecuzione la Tua App?\"],[\"h-how-do-you-put-nginx-or-caddy-in-front-of-your-node-app\",\"Come Posizionare NGINX (o Caddy) Davanti alla Tua App Node?\"],[\"h-how-do-you-set-up-https-for-your-node-js-app\",\"Come Configuri HTTPS Per La Tua App Node.js?\"],[\"h-what-does-a-production-ready-node-js-setup-actually-look-like\",\"Come Appare Effettivamente Una Configurazione Node.js Pronta Per La Produzione?\"],[\"h-when-is-a-vps-the-wrong-choice-for-node-js\",\"Quando Un VPS \u00c8 La Scelta Sbagliata Per Node.js?\"],[\"h-picking-your-node-stack-and-moving-in\",\"Scegliere Il Tuo Stack Node E Trasferirsi\"],[\"h-frequently-asked-questions-about-running-node-js-on-a-vps\",\"Domande Frequenti Sull'Uso di Node.js su un VPS\"]]","hide_toc":false,"show_updated_at":"0","footnotes":""},"categories":[15062,15064,15058],"tags":[],"class_list":["post-85083","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps-hosting-it","category-web-hosting-it","category-tutorials-it"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Come Eseguire Node.js su un VPS - DreamHost<\/title>\n<meta name=\"description\" content=\"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let&#039;s Encrypt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come Eseguire Node.js su un VPS - DreamHost\" \/>\n<meta property=\"og:description\" content=\"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let&#039;s Encrypt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-29T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T01:10:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1920\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Dallas Kashuba\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Come Eseguire Node.js su un VPS - DreamHost\" \/>\n<meta name=\"twitter:description\" content=\"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let&#039;s Encrypt.\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/dallas\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dallas Kashuba\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come Eseguire Node.js su un VPS - DreamHost","description":"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let's Encrypt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/","og_locale":"en_US","og_type":"article","og_title":"Come Eseguire Node.js su un VPS - DreamHost","og_description":"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let's Encrypt.","og_url":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2026-06-29T15:00:00+00:00","article_modified_time":"2026-07-07T01:10:16+00:00","og_image":[{"width":2560,"height":1920,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","type":"image\/webp"}],"author":"Dallas Kashuba","twitter_card":"summary_large_image","twitter_title":"Come Eseguire Node.js su un VPS - DreamHost","twitter_description":"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let's Encrypt.","twitter_creator":"@http:\/\/twitter.com\/dallas","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Dallas Kashuba","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#article","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/"},"author":{"name":"Dallas Kashuba","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814"},"headline":"Come Eseguire Node.js su un VPS","datePublished":"2026-06-29T15:00:00+00:00","dateModified":"2026-07-07T01:10:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/"},"wordCount":4077,"publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","articleSection":["Hosting VPS","Hosting Web","Tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/","url":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/","name":"Come Eseguire Node.js su un VPS - DreamHost","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#primaryimage"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","datePublished":"2026-06-29T15:00:00+00:00","dateModified":"2026-07-07T01:10:16+00:00","description":"Esegui Node.js su un VPS con pieno controllo: nessun avvio a freddo, nessun timeout delle funzioni, nessuna fatturazione per posto. LTS corrente, PM2 vs. systemd, NGINX con Let's Encrypt.","breadcrumb":{"@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#primaryimage","url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","contentUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_bun_vs_node_js-scaled.webp","width":2560,"height":1920,"caption":"How To Run Node.js on a VPS"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dreamhost.com\/blog\/it\/come-eseguire-nodejs-su-un-vps-it\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Come Eseguire Node.js su un VPS"}]},{"@type":"WebSite","@id":"https:\/\/www.dreamhost.com\/blog\/#website","url":"https:\/\/www.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814","name":"Dallas Kashuba","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","caption":"Dallas Kashuba"},"description":"Dallas Kashuba co-founded DreamHost while attending Harvey Mudd College and has spent nearly three decades building infrastructure at scale. Today he serves as an advisor, board member, and investor for various tech startups, with a consistent focus on user privacy, open source, and data portability. When he's not thinking about the Open Web, he's probably making music. Follow Dallas on X.","sameAs":["http:\/\/www.idallas.com\/","https:\/\/x.com\/http:\/\/twitter.com\/dallas"],"url":"https:\/\/www.dreamhost.com\/blog\/author\/dallas\/"}]}},"lang":"it","translations":{"it":85083,"en":83809,"pt":84966,"es":84969,"uk":84978,"pl":84985,"ru":84999,"fr":85022,"nl":85024,"de":85053},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":3,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85083\/revisions"}],"predecessor-version":[{"id":85215,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/85083\/revisions\/85215"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/83811"}],"wp:attachment":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=85083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=85083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=85083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}