Instalar Node.js 26 con apt en Ubuntu 26.04

8 min de lecturaescrito por Ángel L. Blanco
En esta página

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ónPublicaciónLTS / soporte estándarFin de vida
Node.js 26 (Lithium)5 de mayo de 2026Active LTS desde el 28 de octubre de 202630 de abril de 2029
Ubuntu 26.04 LTS23 de abril de 2026Soporte estándar hasta abril de 2031ESM 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.

bash
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:

bash
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:

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

Después, añade el repositorio de NodeSource para Node.js 26:

bash
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

bash
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:

bash
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'

Y añádelo a tu PATH en ~/.bashrc o ~/.zshrc:

bash
export PATH=~/.npm-global/bin:$PATH

4. Instalar pnpm

Como Corepack ya no viene incluido, instala pnpm con su script oficial:

bash
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:

bash
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ú:

bash
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í.

ubuntu-install-node-26.sh
#!/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:

bash
# 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.