--- title: "Cómo instalar Node.js y npm en Ubuntu 24.04" description: "Instala Node.js 24 LTS y npm en Ubuntu 24.04 desde el repositorio de NodeSource o con nvm, configura paquetes globales sin sudo y comprueba que todo funciona." category: "Despliegue de Aplicaciones" language: es source: https://cubepath.com/es/docs/despliegue-de-aplicaciones/instalacion-de-node-js-y-npm updated: 2026-09-25 --- # Cómo instalar Node.js y npm en Ubuntu 24.04 Node.js es el entorno de ejecución de JavaScript que se usa para servidores web, APIs y herramientas de compilación de frontend, y npm es su gestor de paquetes. El paquete `nodejs` de los repositorios de Ubuntu 24.04 es la versión 18, que ya no recibe parches de seguridad, así que en este tutorial instalarás Node.js 24 LTS desde el repositorio oficial de NodeSource, que es la opción recomendada para servidores. También verás cómo usar nvm cuando necesitas varias versiones por usuario y cómo instalar paquetes globales sin `sudo`. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Acceso a Internet saliente por HTTPS para descargar paquetes. ## Elegir el método de instalación | Método | Versión | Ámbito | Cuándo usarlo | |--------|---------|--------|---------------| | Repositorio de NodeSource | La rama LTS que elijas (24.x) | Todo el sistema, actualizaciones con `apt` | Servidores de producción con una única versión | | nvm | Cualquier versión | Solo el usuario que lo instala | Desarrollo, CI o proyectos que exigen versiones distintas | | Repositorio de Ubuntu (`apt install nodejs`) | 18.x | Todo el sistema | No recomendado: versión sin soporte | Las versiones LTS (números pares) reciben soporte durante unos 30 meses; las impares son de corta duración y no conviene usarlas en producción. Puedes consultar el calendario en la página de versiones de Node.js. Los pasos 1 a 3 instalan Node.js con NodeSource. Si prefieres nvm, sigue la sección correspondiente más abajo. ## Paso 1: Añadir el repositorio de NodeSource Instala las herramientas necesarias para descargar y convertir la clave del repositorio: ```bash sudo apt update sudo apt install ca-certificates curl gnupg ``` Descarga la clave de firma de NodeSource en `/etc/apt/keyrings`: ```bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg ``` Añade el repositorio de la rama 24.x. Para usar otra rama LTS en el futuro, cambia `node_24.x` por la versión correspondiente: ```bash echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list ``` Actualiza el índice y comprueba que el paquete `nodejs` viene ahora de NodeSource: ```bash sudo apt update apt-cache policy nodejs ``` ```output nodejs: Installed: (none) Candidate: 24.x.x-1nodesource1 Version table: 24.x.x-1nodesource1 500 500 https://deb.nodesource.com/node_24.x nodistro/main amd64 Packages 18.19.1+dfsg-6ubuntu5 500 500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages ``` El candidato debe ser la versión 24.x de `deb.nodesource.com`. ## Paso 2: Instalar Node.js y npm El paquete `nodejs` de NodeSource incluye npm y npx, así que no instales el paquete `npm` de Ubuntu por separado: ```bash sudo apt install nodejs ``` Comprueba las versiones: ```bash node -v npm -v ``` ```output v24.x.x 11.x.x ``` Algunos paquetes de npm incluyen módulos nativos en C/C++ que se compilan durante la instalación (por ejemplo `bcrypt` o `sqlite3` cuando no hay binario precompilado). Instala el compilador y `make` para que no fallen: ```bash sudo apt install build-essential ``` Las actualizaciones de la rama 24.x llegarán con el `sudo apt upgrade` habitual. ## Paso 3: Probar Node.js con un servidor HTTP Crea un directorio de prueba y un servidor mínimo que use solo módulos incluidos en Node.js: ```bash mkdir ~/hola-node && cd ~/hola-node nano server.js ``` ```javascript const http = require('node:http'); const port = process.env.PORT || 3000; http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end(`Hola desde Node.js ${process.version}\n`); }).listen(port, '127.0.0.1', () => { console.log(`Escuchando en http://127.0.0.1:${port}`); }); ``` Arráncalo: ```bash node server.js ``` ```output Escuchando en http://127.0.0.1:3000 ``` Desde otra sesión SSH, haz una petición: ```bash curl http://127.0.0.1:3000 ``` ```output Hola desde Node.js v24.x.x ``` Detén el servidor con `Ctrl+C`. Para dejar una aplicación funcionando de forma permanente necesitas un gestor de procesos como PM2 o un servicio de systemd; `node server.js` en una sesión SSH se detiene al cerrarla. ## Alternativa: instalar Node.js con nvm nvm (Node Version Manager) instala Node.js dentro del directorio personal del usuario y permite cambiar de versión por proyecto. No requiere `sudo`, pero cada usuario tiene su propia instalación, así que los servicios que se ejecuten con otro usuario no la verán. > Nota: No mezcles nvm con la instalación de NodeSource en el mismo usuario si no es necesario: el `node` que se ejecute dependerá del orden del `PATH`. Descarga el script de instalación (consulta la última versión en las *releases* del repositorio `nvm-sh/nvm` en GitHub) y revísalo antes de ejecutarlo: ```bash curl -fsSL -o install-nvm.sh https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh less install-nvm.sh bash install-nvm.sh ``` El script clona nvm en `~/.nvm` y añade las líneas de carga a `~/.bashrc`. Cárgalas en la sesión actual: ```bash source ~/.bashrc nvm --version ``` ```output 0.40.3 ``` Instala la última LTS y déjala como versión por defecto: ```bash nvm install --lts nvm alias default 'lts/*' node -v ``` ```output v24.x.x ``` Para fijar la versión de un proyecto, crea un archivo `.nvmrc` en su raíz. Cualquiera que clone el repositorio podrá ejecutar `nvm use` para cambiar a esa versión (e `nvm install` si no la tiene): ```bash cd ~/mi-proyecto node -v > .nvmrc nvm use ``` ```output Found '/home/your_user/mi-proyecto/.nvmrc' with version Now using node v24.x.x (npm v11.x.x) ``` Otros comandos útiles: ```bash nvm ls nvm install 22 nvm use 22 ``` ## Paso 4: Instalar paquetes globales sin sudo Con la instalación de NodeSource, `npm install -g` escribe en `/usr/lib/node_modules`, que pertenece a root. Ejecutar npm con `sudo` hace que los scripts de instalación de los paquetes se ejecuten como root. Es más seguro darle a tu usuario un prefijo propio para los paquetes globales. > Nota: Si usas nvm puedes saltarte este paso: nvm ya instala los paquetes globales en tu directorio personal. Configura el prefijo en tu directorio personal: ```bash mkdir -p ~/.npm-global npm config set prefix "$HOME/.npm-global" ``` Añade su directorio `bin` al `PATH`: ```bash echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` Instala un paquete global de prueba sin `sudo`: ```bash npm install -g npm-check-updates which ncu ``` ```output /home/your_user/.npm-global/bin/ncu ``` Si prefieres no instalar herramientas globales, `npx` ejecuta un paquete descargándolo en caché sin instalarlo: ```bash npx npm-check-updates --version ``` ## Paso 5: Instalar dependencias de un proyecto en producción En un proyecto, las dependencias se declaran en `package.json` y sus versiones exactas quedan fijadas en `package-lock.json`. Ese archivo debe estar en el control de versiones. En el servidor de producción usa `npm ci` en lugar de `npm install`: instala exactamente lo que dice `package-lock.json`, borra `node_modules` antes de empezar y falla si el lock no coincide con `package.json`. Con `--omit=dev` omite las dependencias de desarrollo: ```bash cd ~/mi-proyecto npm ci --omit=dev ``` ```output added 64 packages, and audited 65 packages in 3s found 0 vulnerabilities ``` Revisa periódicamente las vulnerabilidades conocidas en las dependencias: ```bash npm audit --omit=dev ``` Si hay avisos, `npm audit fix` aplica las actualizaciones compatibles con los rangos de `package.json`. Evita `npm audit fix --force` en producción: puede instalar versiones mayores con cambios incompatibles. Muchas librerías cambian su comportamiento según la variable `NODE_ENV`. Defínela en el entorno del servicio que arranque la aplicación (unidad de systemd o archivo ecosystem de PM2), no en tu `~/.bashrc`: ```ini Environment=NODE_ENV=production ``` ## Solución de problemas **`node -v` muestra v18 tras instalar desde NodeSource.** El paquete se instaló antes de añadir el repositorio. Comprueba `apt-cache policy nodejs` y reinstala con `sudo apt install nodejs`. Si tienes nvm, `which node` te dirá cuál se está usando. **"EACCES: permission denied" al ejecutar `npm install -g`.** npm intenta escribir en `/usr/lib/node_modules`. Configura el prefijo del paso 4 en lugar de usar `sudo` o cambiar los permisos de directorios del sistema. **"gyp ERR! build error" al instalar dependencias.** Falta el compilador para un módulo nativo. Instala `build-essential` (paso 2) y vuelve a ejecutar `npm ci`. **`nvm: command not found` en una nueva sesión.** Las líneas de carga no están en el archivo que lee tu shell. Comprueba que `~/.bashrc` contiene `export NVM_DIR="$HOME/.nvm"` y las dos líneas que lo cargan, y abre una sesión nueva. ## Conclusión Tienes Node.js 24 LTS y npm instalados en Ubuntu 24.04 desde el repositorio de NodeSource, con actualizaciones por `apt`, o con nvm si necesitas varias versiones. También has configurado los paquetes globales sin `sudo` y sabes instalar dependencias de forma reproducible con `npm ci`. Como siguientes pasos, despliega tu aplicación con PM2 para que arranque con el sistema y se reinicie si falla, colócala detrás de Nginx como proxy inverso y añade HTTPS con Certbot.