Instalar Node.js 26 con apt en Ubuntu 26.04
El 21 de octubre de 2026, Node.js publicó parches de seguridad para diez vulnerabilidades que afectan a sus versiones con soporte, cuatro de ellas graves, incluida una ejecución remota de código. Las versiones sin soporte, como Node.js 20 y 25, no recibirán actualizaciones.
Mantener Node.js al día no es opcional: merece la pena dedicarle un rato, tanto en tu ordenador personal como en tu servidor. Lo más sencillo es que sea el propio sistema operativo quien gestione esas actualizaciones. Para eso, instalas Node.js con apt desde el repositorio de NodeSource y sudo apt upgrade se encarga del resto.
Ahora que Node.js 26 (Lithium) es LTS desde el 28 de octubre de 2026 y Ubuntu 26.04 LTS (Resolute Raccoon) lleva meses publicado, es buen momento para dejarlo bien instalado. La receta es la misma que en mi guía de Node.js 24 en Ubuntu 24.
Fechas de soporte de un vistazo
Las dos versiones tienen periodos de soporte largos, así que esta instalación te va a durar una buena temporada:
| Versión | Publicación | LTS / soporte estándar | Fin de vida |
|---|---|---|---|
| Node.js 26 (Lithium) | 5 de mayo de 2026 | Active LTS desde el 28 de octubre de 2026 | 30 de abril de 2029 |
| Ubuntu 26.04 LTS | 23 de abril de 2026 | Soporte estándar hasta abril de 2031 | ESM con Ubuntu Pro durante 10 años |
Node.js 26 pasa a mantenimiento el 20 de octubre de 2027 (lo tienes en el calendario oficial) y es la última versión del modelo de pares e impares: a partir de Node.js 27, el proyecto publica una sola versión mayor al año y todas pasan a ser LTS. Si sigues en Node.js 24, tranquilidad: tiene soporte hasta abril de 2028 (y Node.js 22, hasta abril de 2027).
Qué ha cambiado desde Node.js 24
Casi todos los pasos son iguales, pero hay un cambio importante: Corepack ya no viene incluido con Node.js. Se eliminó en Node.js 25, así que corepack enable no funciona en una instalación limpia de Node.js 26. La documentación de Node.js recomienda usar el paquete corepack de npm si todavía lo necesitas.
Yo he optado por lo más sencillo y ahora instalo pnpm con su propio instalador. Si usas Yarn, puedes instalar el paquete corepack de forma global (lo vemos más abajo).
La vía fácil
Igual que antes, puedes instalarlo todo con un solo comando. El script instala Node.js 26 desde NodeSource, configura un prefijo global de npm (para que no necesites sudo con los paquetes globales) y, opcionalmente, instala pnpm y Bun.
curl -fsSL https://angelblanco.dev/scripts/ubuntu-install-node-26.sh | bash
El script te pide confirmación en cada paso importante. Como siempre, échale un vistazo al script antes de pasárselo a bash. Ejecutar scripts aleatorios de internet es muy divertido hasta que deja de serlo.
Si no tienes curl instalado:
sudo apt update
sudo apt install curl
La guía paso a paso
Esto es lo que hace el script, por si prefieres ir paso a paso.
1. Actualizar dependencias y añadir el repositorio de NodeSource
Primero, instala las herramientas necesarias para descargar y verificar paquetes:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
Después, añade el repositorio de NodeSource para Node.js 26:
curl -fsSL https://deb.nodesource.com/setup_26.x | sudo -E bash -
NodeSource usa una única suite nodistro para todas las distribuciones basadas en Debian, así que funciona en Ubuntu 26.04 sin esperar a un repositorio específico para su nombre en clave. El script de NodeSource también añade un pin de apt con prioridad 600, de modo que el paquete de NodeSource siempre gana al paquete nodejs del archivo de Ubuntu. Sin él, podrías acabar con un Node.js más antiguo de los repositorios de Ubuntu.
2. Instalar Node.js y npm
sudo apt-get install -y nodejs
node --version
Esto instala tanto el entorno de ejecución node como npm.
3. Configurar el prefijo global de npm
Para instalar paquetes globales sin sudo, configura un directorio dentro de tu carpeta personal:
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
Y añádelo a tu PATH en ~/.bashrc o ~/.zshrc:
export PATH=~/.npm-global/bin:$PATH
4. Instalar pnpm
Como Corepack ya no viene incluido, instala pnpm con su script oficial:
curl -fsSL https://get.pnpm.io/install.sh | sh -
El instalador añade pnpm al PATH en la configuración de tu shell, así que abre una terminal nueva (o haz source de tu fichero de configuración) antes de ejecutar pnpm --version. A partir de ahí, pnpm self-update lo mantiene actualizado.
5. Instalar Bun (opcional)
Si quieres probar Bun, usa su instalador oficial, que necesita unzip:
sudo apt install -y unzip
curl -fsSL https://bun.sh/install | bash
¿Y Yarn?
Si tus proyectos usan Yarn, puedes seguir usando Corepack. Solo tienes que instalarlo tú:
npm install -g corepack
corepack enable
Como hemos configurado un prefijo global de npm, funciona sin sudo. Eso sí, el paquete Corepack ahora se mantiene fuera del ciclo de versiones de Node.js, así que revisa su README si algo no se comporta como esperas en Node.js 26.
El script
Este es el script completo. Incluye confirmaciones, usa un directorio temporal que se borra al terminar y lee tus respuestas desde la terminal, así que funciona aunque lo ejecutes directamente desde curl.
Este script sale de mi repo de configuración de Neovim, donde guardo mis scripts de instalación. El editor necesita Node.js para varios language servers y plugins, así que los actualizo con frecuencia. Si quieres la versión más reciente, pásate por allí.
#!/bin/bash
#
# Author: Ángel Blanco
# License: MIT
#
# This script is provided "as is", without warranty of any kind. Use at your own risk.
#
# Source: https://angelblanco.dev/blog/apt-install-node-26-on-ubuntu-26
#
# Usage:
# curl -fsSL https://angelblanco.dev/scripts/ubuntu-install-node-26.sh | bash
#
# This script installs Node.js and several package managers.
# Run it as your non-root user: it asks for elevated permissions
# with sudo when needed.
#
set -e
# Basic confirmation module before executing the script.
confirm_action() {
read -p "$1 (y/n): " choice < /dev/tty
case "$choice" in
[Yy]|[Yy][Ee][Ss])
return 0
;;
[Nn]|[Nn][Oo])
return 1
;;
*)
echo "Invalid choice. Please enter 'y' or 'n'."
confirm_action "$1"
;;
esac
}
# You can configure these variables if needed
NODE_VERSION=26
NPM_PREFIX="~/.npm-global"
DEPS="ca-certificates curl gnupg"
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
echo "This script will install Node.js and optionally other package managers."
echo ""
if ! confirm_action "Install Node.js version $NODE_VERSION?"; then
echo "Skipping Node.js installation. Exiting."
exit 0
fi
echo "Installing the dependencies needed to install Node.js..."
sudo apt update
sudo apt install -y $DEPS
echo "Installing Node.js..."
curl -fsSL https://deb.nodesource.com/setup_$NODE_VERSION.x -o $TMP_DIR/nodesource_setup.sh
sudo -E bash $TMP_DIR/nodesource_setup.sh
sudo apt-get install -y nodejs
mkdir -p ~/.npm-global
npm config set prefix $NPM_PREFIX
echo "npm prefix set to $NPM_PREFIX"
echo "Node.js installation completed."
echo "Node version: "
node --version
echo ""
if confirm_action "Install pnpm?"; then
echo "Installing pnpm..."
curl -fsSL https://get.pnpm.io/install.sh | sh -
echo "pnpm installation completed. Open a new terminal (or source your shell config) to use it."
fi
echo ""
if confirm_action "Install Bun?"; then
echo "Installing Bun..."
sudo apt install -y unzip
curl -fsSL https://bun.sh/install | bash
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
echo "Bun version: "
bun --version
fi
echo ""
echo "Installation process finished."
echo ""
echo "Add the global npm bin directory to your PATH by adding this line to your .bashrc or .zshrc:"
echo 'export PATH=~/.npm-global/bin:$PATH'
echo ""
echo "Node.js now comes from apt, so keep it patched with:"
echo "sudo apt update && sudo apt upgrade"
echo ""
Mantén todo al día
Una vez instalado, mantenerlo al día es cuestión de un par de comandos:
# Sistema operativo y Node.js
sudo apt update && sudo apt upgrade
# Gestores de paquetes
pnpm self-update
bun upgrade
npm update -g
Y no te olvides de las dependencias de tus proyectos: pnpm outdated y pnpm audit te dicen qué toca actualizar.
Por eso mismo sigo sin usar NVM en el día a día, como ya conté en el post anterior. Es estupendo si de verdad necesitas varias versiones de Node.js a la vez, pero cada versión que instalas con NVM es una más que tienes que acordarte de parchear.
Con una inteligencia artificial que acelera cómo se descubren y explotan las vulnerabilidades, y con brechas de seguridad que no paran de surgir, mantenerse al día tiene que ser lo más sencillo posible. Porque ahora, más que nunca, no es opcional.