1 26/10/2026 8 min

Ubuntu 19.04 è una release ormai fuori supporto, quindi il primo punto non è solo come installare Node.js, ma come farlo senza trascinarsi dietro pacchetti vecchi o repository incoerenti. Su questa base hai due strade sensate: installazione di sistema con i pacchetti NodeSource, oppure installazione per utente con nvm. La scelta dipende da come gestisci il server: se devi servire una sola applicazione e vuoi un ambiente pulito, nvm è spesso la via più flessibile; se invece stai preparando una macchina condivisa o un servizio gestito da systemd, una installazione di sistema è più lineare.

Prima di tutto conviene chiarire il contesto operativo. Su una distribuzione fuori supporto, il rischio principale non è Node.js in sé, ma il fatto che apt potrebbe non avere più un quadro affidabile dei mirror e delle dipendenze. Per questo, se il tuo obiettivo è un’installazione stabile e ripetibile, evita di improvvisare con pacchetti presi a caso e scegli un canale di distribuzione esplicito. In questa guida trovi entrambe le opzioni, con verifica finale e punti di rollback.

Installazione di Node.js con NodeSource su Ubuntu 19.04

Questa è la soluzione più adatta quando vuoi Node.js disponibile a livello di sistema, per tutti gli utenti, e quando preferisci un percorso abbastanza standardizzato. NodeSource fornisce repository dedicati per versioni specifiche di Node.js, separando il runtime dai pacchetti Ubuntu spesso datati.

Prima di aggiungere il repository, aggiorna l’indice dei pacchetti e installa gli strumenti minimi necessari. Se la macchina è già in produzione, considera che questa operazione ha un impatto basso, ma tocca comunque la configurazione di APT. Il rollback, in caso di problemi, consiste nel rimuovere il repository aggiunto e, se necessario, disinstallare i pacchetti installati da lì.

Passo 1: aggiornare i pacchetti base

sudo apt update
sudo apt install -y curl ca-certificates gnupg

Se apt update restituisce errori sui mirror, non andare avanti alla cieca: prima verifica il contenuto di /etc/apt/sources.list e dei file in /etc/apt/sources.list.d/. Su una release fuori supporto è possibile che alcuni repository puntino a endpoint non più validi.

Passo 2: aggiungere il repository NodeSource

Per esempio, per Node.js 20 LTS puoi usare il ramo dedicato. Se ti serve una versione diversa, sostituisci il numero nella URL. Tieni presente che su Ubuntu 19.04 potresti incontrare limitazioni di compatibilità con release molto nuove del runtime o delle dipendenze native, quindi conviene testare prima l’applicazione reale e non solo il comando node -v.

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Questo script aggiunge il repository e la chiave necessaria. Il blast radius è limitato ad APT e ai pacchetti Node.js/strumenti correlati. Il rollback, se qualcosa non convince, è semplice: rimuovi il file di repository creato in /etc/apt/sources.list.d/ e aggiorna di nuovo l’indice pacchetti.

Passo 3: installare Node.js

sudo apt update
sudo apt install -y nodejs

In alcuni casi NodeSource include anche strumenti utili come npm e, a seconda del ramo, componenti accessori. Verifica sempre cosa è stato installato realmente, invece di dare per scontato che il pacchetto includa tutto quello che ti serve per il progetto.

Passo 4: controllare la versione installata

node -v
npm -v
which node
which npm

L’esito atteso è una versione coerente con il ramo scelto e binari risolti in un percorso di sistema, tipicamente /usr/bin/node e /usr/bin/npm. Se which node restituisce un percorso inatteso, probabilmente hai più installazioni in conflitto, ad esempio una vecchia versione manuale in /usr/local/bin o un gestore versioni già presente.

Installazione con nvm per ambiente utente

nvm è la scelta giusta quando vuoi isolare le versioni di Node.js per utente o per progetto. È molto comodo in sviluppo, nei pipeline locali e nei server dove più applicazioni richiedono versioni diverse del runtime. Il vantaggio principale è la reversibilità: disinstalli o cambi versione senza toccare il sistema in modo pesante.

Il limite è altrettanto chiaro: nvm vive nel profilo dell’utente, quindi non è la soluzione ideale per servizi di sistema avviati da utenti dedicati senza una configurazione attenta della shell. Se usi systemd, devi ricordarti che l’ambiente del servizio non eredita automaticamente il profilo interattivo.

Passo 1: scaricare e installare nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

Al termine, ricarica la shell oppure apri una nuova sessione. L’installer aggiunge le righe necessarie al profilo utente, di solito in ~/.bashrc, ~/.zshrc o file equivalenti, a seconda della shell usata.

Passo 2: verificare che nvm sia disponibile

command -v nvm

Se il comando non restituisce nulla, non forzare l’installazione: controlla il file di startup della shell e verifica che la sessione sia stata ricaricata. Il punto critico è quasi sempre lì, non nell’installer.

Passo 3: installare una versione di Node.js

nvm install 20
nvm use 20
nvm alias default 20

Con nvm alias default 20 imposti la versione predefinita per nuove sessioni. Se devi lavorare su un progetto che richiede una versione diversa, puoi installarla e attivarla senza rimuovere la precedente.

Passo 4: controllare il percorso dei binari

node -v
npm -v
which node
which npm

Con nvm il percorso atteso è dentro la directory dell’utente, in genere sotto ~/.nvm/versions/node/. Se invece vedi ancora i binari di sistema, significa che la shell non sta caricando correttamente nvm oppure che un altro node precede quello gestito da nvm nel PATH.

Quale metodo scegliere su un server Ubuntu 19.04

La scelta non è teorica, dipende dal ruolo della macchina. Se stai configurando un server applicativo con un solo stack e vuoi un servizio stabile, NodeSource è più ordinato. Se invece hai più ambienti di sviluppo o devi testare versioni differenti senza sporcare il sistema, nvm è più pratico.

In un contesto di produzione, il criterio utile è questo: installazione di sistema quando l’host è dedicato al servizio; installazione utente quando il runtime serve a sviluppatori o build locali. In entrambi i casi, la verifica reale non è solo il comando node -v, ma l’esecuzione dell’applicazione con le sue dipendenze native e il suo processo di avvio.

Verifica pratica con un file JavaScript minimo

Dopo l’installazione, conviene fare un test funzionale e non solo versionale. Un file semplice permette di verificare che Node esegua davvero codice, che l’output sia corretto e che il runtime sia usabile dal percorso previsto.

cat > test-node.js <<'EOF'
console.log('Node.js funziona correttamente');
EOF
node test-node.js

L’output atteso è una riga con il testo stampato a schermo. Se questo test fallisce, il problema non è “Node non installato”, ma qualcosa di più specifico: conflitto di binari, permessi, installazione corrotta o shell con PATH errato.

Gestione di npm e aggiornamento dei pacchetti globali

Una volta installato Node.js, il pezzo successivo è npm. Qui il punto non è installare tutto globalmente, ma capire bene cosa va realmente nel sistema e cosa resta nel progetto. In ambienti server conviene essere prudenti con i pacchetti globali: meno roba installi a livello globale, più facile è mantenere il controllo della macchina.

Per aggiornare un pacchetto globale, il comando tipico è questo:

sudo npm install -g nome-pacchetto

Il rovescio della medaglia è che i pacchetti globali possono creare divergenze tra ambienti di sviluppo e produzione. Se puoi, preferisci dipendenze locali al progetto e usa npx o gli script definiti in package.json. In questo modo eviti di dipendere da installazioni extra sparse sul server.

Rimozione o rollback dell’installazione

Se hai usato NodeSource e vuoi tornare indietro, il rollback minimo consiste nel rimuovere il pacchetto e il repository. Prima però assicurati di non avere applicazioni che dipendono da quella versione di Node in esecuzione. Il blast radius, in questo caso, è l’intero stack applicativo che usa il runtime.

sudo apt remove -y nodejs
sudo rm -f /etc/apt/sources.list.d/nodesource.list
sudo apt update

Se hai usato nvm, il rollback è più semplice e meno invasivo: rimuovi la versione installata e, se vuoi, elimina la directory ~/.nvm. Attenzione però: questa operazione è distruttiva per le versioni installate in quell’ambiente utente e va fatta solo se sei sicuro che non servano più.

nvm uninstall 20

Se vuoi disinstallare tutto l’ambiente nvm, prima verifica che nessuna shell o script dipenda da quelle variabili di ambiente. Il rollback strutturale è la rimozione delle righe di inizializzazione dal file di profilo dell’utente, ad esempio ~/.bashrc o ~/.zshrc.

Nota operativa su Ubuntu 19.04

Ubuntu 19.04 non è una base ideale per un server moderno. Se stai ancora lavorando su questa release, la valutazione più corretta non è solo come installare Node.js, ma se convenga migrare l’host a una versione supportata prima di esporre servizi critici. Questo non è un dettaglio estetico: incide su repository, aggiornamenti di sicurezza e manutenzione ordinaria.

Se non puoi migrare subito, almeno isola il servizio, documenta la versione installata con node -v e npm -v, conserva il metodo di installazione scelto e tieni traccia del repository o dell’utente che gestisce nvm. È la differenza tra una macchina che si può riprodurre e una che funziona solo “per memoria”.