title: "Instalación de Node.js y npm: Guía Completa para Producción" description: "Guía exhaustiva para instalar y configurar Node.js y npm en servidores Ubuntu/Debian y CentOS. Incluye instalación con nvm, NodeSource, gestión de versiones, optimización de rendimiento y mejores prácticas de seguridad." date: 2024-03-15 tags: ["Node.js", "npm", "nvm", "JavaScript", "Ubuntu", "Debian", "CentOS", "Installation"] categories: ["Application Deployment", "Web Servers"]
Instalación de Node.js y npm: Guía Completa para Producción
Introducción
Node.js es un poderoso runtime de JavaScript construido sobre el motor V8 de Chrome que permite la ejecución de JavaScript del lado del servidor. Combinado con npm (Node Package Manager), se ha convertido en la base del desarrollo web moderno, impulsando desde APIs simples hasta aplicaciones full-stack complejas. Esta guía proporciona instrucciones completas para instalar y configurar Node.js y npm en entornos de producción.
Lo que Aprenderás
- Múltiples métodos para instalar Node.js y npm
- Gestión de versiones con nvm (Node Version Manager)
- Instalación desde repositorios oficiales
- Construcción desde código fuente para configuraciones personalizadas
- Gestión de paquetes global y local con npm
- Mejores prácticas de seguridad
- Optimización del rendimiento
- Solución de problemas comunes
¿Por Qué Node.js?
- JavaScript en Todas Partes: Usa el mismo lenguaje para frontend y backend
- Alto Rendimiento: I/O no bloqueante y arquitectura orientada a eventos
- Gran Ecosistema: npm proporciona acceso a millones de paquetes
- Escalabilidad: Maneja miles de conexiones concurrentes eficientemente
- Comunidad Activa: Fuerte soporte de la comunidad y actualizaciones regulares
- Desarrollo Moderno: Esencial para React, Vue, Angular y herramientas modernas
Requisitos Previos
- Ubuntu 20.04+, Debian 10+, CentOS 8+, o Rocky Linux 8+
- Acceso root o sudo
- Al menos 1GB de RAM (se recomiendan 2GB+)
- 10GB de espacio libre en disco
- Conocimientos básicos de línea de comandos
Instalación
Método 1: Usando Node Version Manager (nvm) - Recomendado
nvm te permite instalar y gestionar múltiples versiones de Node.js simultáneamente.
Instalar nvm
# Download and install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Or using wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Load nvm into current session
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# Verify installation
nvm --version
Instalar Node.js usando nvm
# List available Node.js versions
nvm list-remote
# Install latest LTS version (recommended for production)
nvm install --lts
# Install specific version
nvm install 18.19.0
nvm install 20.11.0
# Install latest version
nvm install node
# List installed versions
nvm list
# Use specific version
nvm use 18.19.0
# Set default version
nvm alias default 18.19.0
# Verify Node.js installation
node --version
npm --version
Método 2: Repositorio Oficial de NodeSource
Instalación en Ubuntu/Debian
# Install prerequisites
sudo apt update
sudo apt install -y curl ca-certificates gnupg
# Setup Node.js 20.x repository
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# Install Node.js and npm
sudo apt install -y nodejs
# Verify installation
node --version
npm --version
# Install build tools (needed for some npm packages)
sudo apt install -y build-essential
Para Node.js 18.x (LTS):
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Instalación en CentOS/Rocky Linux
# Setup Node.js 20.x repository
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
# Install Node.js and npm
sudo dnf install -y nodejs
# Install development tools
sudo dnf groupinstall -y "Development Tools"
# Verify installation
node --version
npm --version
Método 3: Desde Repositorios de la Distribución
Ubuntu/Debian
# Install Node.js from default repositories
sudo apt update
sudo apt install -y nodejs npm
# Note: This usually installs an older version
node --version
CentOS/Rocky Linux
# Enable EPEL repository
sudo dnf install -y epel-release
# Install Node.js
sudo dnf module install nodejs:18
# Verify installation
node --version
npm --version
Método 4: Construcción desde Código Fuente
Para configuraciones personalizadas o versiones más recientes:
# Install build dependencies
sudo apt install -y python3 g++ make
# Download Node.js source
cd /tmp
wget https://nodejs.org/dist/v20.11.0/node-v20.11.0.tar.gz
# Extract
tar -xzf node-v20.11.0.tar.gz
cd node-v20.11.0
# Configure and compile
./configure
make -j$(nproc)
# Install
sudo make install
# Verify installation
node --version
npm --version
Configuración
Configuración de npm
Establecer Valores Predeterminados de npm
# Set default author information
npm config set init-author-name "Your Name"
npm config set init-author-email "[email protected]"
npm config set init-author-url "https://yourwebsite.com"
npm config set init-license "MIT"
# View npm configuration
npm config list
# View global configuration
npm config list -g
Configurar Registro de npm
# View current registry
npm config get registry
# Set custom registry (if using private registry)
npm config set registry https://registry.npmjs.org/
# Use yarn registry
npm config set registry https://registry.yarnpkg.com
Directorio Global de Paquetes npm
Por defecto, los paquetes globales requieren sudo. Configura un directorio global a nivel de usuario:
# Create directory for global packages
mkdir -p ~/.npm-global
# Configure npm to use new directory
npm config set prefix '~/.npm-global'
# Add to PATH in ~/.bashrc or ~/.profile
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
# Reload configuration
source ~/.bashrc
# Now you can install global packages without sudo
npm install -g pm2
Múltiples Versiones de Node.js con nvm
# Install multiple versions
nvm install 16.20.0
nvm install 18.19.0
nvm install 20.11.0
# List installed versions
nvm list
# Switch between versions
nvm use 16.20.0
nvm use 18.19.0
# Set default version
nvm alias default 18.19.0
# Use project-specific Node version
echo "18.19.0" > .nvmrc
nvm use
Variables de Entorno de Node.js
# Set Node.js environment
export NODE_ENV=production
# Set memory limit (for large applications)
export NODE_OPTIONS="--max-old-space-size=4096"
# Add to .bashrc for persistence
echo 'export NODE_ENV=production' >> ~/.bashrc
echo 'export NODE_OPTIONS="--max-old-space-size=4096"' >> ~/.bashrc
Despliegue
Instalación de Paquetes npm
Instalación de Paquetes Locales
# Create new project
mkdir my-app && cd my-app
npm init -y
# Install package locally
npm install express
# Install specific version
npm install [email protected]
# Install as dev dependency
npm install --save-dev nodemon
# Install from package.json
npm install
# Install all dependencies including dev
npm install --include=dev
Instalación de Paquetes Globales
# Install global packages
npm install -g pm2
npm install -g nodemon
npm install -g express-generator
npm install -g create-react-app
npm install -g typescript
# List global packages
npm list -g --depth=0
# Update global package
npm update -g pm2
# Uninstall global package
npm uninstall -g nodemon
Gestión de Paquetes
# Update packages
npm update
# Update specific package
npm update express
# Check for outdated packages
npm outdated
# View installed packages
npm list --depth=0
# Search for packages
npm search express
# View package information
npm view express
# Audit for security vulnerabilities
npm audit
# Fix vulnerabilities
npm audit fix
# Force fix (may introduce breaking changes)
npm audit fix --force
Usando npx
npx ejecuta paquetes sin instalarlos globalmente:
# Run package without installing
npx create-react-app my-app
# Run specific version
npx [email protected] my-app
# Execute local package
npx nodemon app.js
Monitoreo
Verificar Estado de Node.js y npm
# Node.js version
node --version
# npm version
npm --version
# Node.js installation path
which node
# npm installation path
which npm
# View Node.js configuration
node -p process.config
# View system information
node -p "os.cpus()"
node -p "os.totalmem()"
Gestión de Caché de npm
# View cache location
npm config get cache
# Verify cache integrity
npm cache verify
# Clean cache
npm cache clean --force
# View cache size
du -sh ~/.npm
Monitorear Paquetes Instalados
# List all installed packages
npm list
# List global packages
npm list -g --depth=0
# Check package license
npm license
# View package dependencies
npm view express dependencies
Solución de Problemas
Problemas Comunes y Soluciones
Errores de Permisos EACCES
Problema: Permiso denegado al instalar paquetes globales
Solución:
# Option 1: Use nvm (recommended)
# Install Node.js via nvm as shown above
# Option 2: Change npm's default directory
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# Option 3: Fix npm permissions (not recommended)
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Comando npm No Encontrado
Solución:
# Check if npm is installed
which npm
# If not found, reinstall Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# Or using nvm
nvm install --lts
Falla la Instalación de Paquetes
Soluciones:
# Clear npm cache
npm cache clean --force
# Delete node_modules and reinstall
rm -rf node_modules package-lock.json
npm install
# Install with verbose logging
npm install --verbose
# Use legacy peer deps (for dependency conflicts)
npm install --legacy-peer-deps
Conflictos de Versiones
Solución:
# Use nvm to switch versions
nvm use 18.19.0
# Or specify version in package.json
{
"engines": {
"node": ">=18.0.0",
"npm": ">=9.0.0"
}
}
# Install exact versions
npm install --save-exact express
Instalaciones Lentas de npm
Soluciones:
# Use different registry
npm config set registry https://registry.npmmirror.com
# Increase timeout
npm config set timeout 60000
# Use npm ci for faster installs (in CI/CD)
npm ci
# Use yarn as alternative
npm install -g yarn
yarn install
Mejores Prácticas de Seguridad
Mantener Node.js y npm Actualizados
# Update Node.js using nvm
nvm install node --reinstall-packages-from=current
# Update npm
npm install -g npm@latest
# Check for outdated packages
npm outdated
# Update all packages
npm update
# Update package.json to latest versions
npx npm-check-updates -u
npm install
Auditoría de Seguridad
# Audit dependencies
npm audit
# View detailed audit report
npm audit --json
# Fix vulnerabilities
npm audit fix
# Fix including breaking changes
npm audit fix --force
# Install specific security updates
npm install express@latest --save
Gestión de Dependencias
# Use package-lock.json
# Always commit package-lock.json to version control
# Install exact versions
npm install --save-exact
# Avoid installing untrusted packages
npm view package-name
# Check package reputation
npm view package-name downloads
npm view package-name repository
Variables de Entorno
# Never commit secrets
# Use .env files (add to .gitignore)
# Install dotenv
npm install dotenv
# Create .env file
cat > .env <<EOF
DATABASE_URL=postgresql://localhost:5432/mydb
API_KEY=your_api_key_here
EOF
# Add to .gitignore
echo ".env" >> .gitignore
Optimización del Rendimiento
Optimización de Build de Producción
# Set production environment
export NODE_ENV=production
# Install production dependencies only
npm install --production
# Or using npm ci (faster, uses package-lock.json)
npm ci --production
# Prune dev dependencies
npm prune --production
Gestión de Memoria
# Increase Node.js memory limit
node --max-old-space-size=4096 app.js
# Set globally
export NODE_OPTIONS="--max-old-space-size=4096"
# For PM2
pm2 start app.js --node-args="--max-old-space-size=4096"
Optimización de Instalación npm
# Use npm ci instead of npm install (in CI/CD)
npm ci
# Reduce package size
npm dedupe
# Analyze bundle size
npx webpack-bundle-analyzer
# Use .npmrc for project settings
cat > .npmrc <<EOF
package-lock=true
save-exact=true
fund=false
audit=false
EOF
Conclusión
Has instalado con éxito Node.js y npm con configuración completa para uso en producción. Ya sea usando nvm para gestión de versiones o instalando desde repositorios oficiales, ahora tienes una base sólida para el desarrollo con Node.js.
Puntos Clave
- nvm es recomendado para entornos de desarrollo y gestión de múltiples versiones
- Repositorios oficiales proporcionan versiones estables para producción
- Configuración de directorio global de paquetes previene problemas de permisos
- Auditorías de seguridad deben ejecutarse regularmente
- npm ci es más rápido y confiable para CI/CD que npm install
Mejores Prácticas
- Usa nvm para desarrollo, paquetes oficiales para producción
- Siempre commitea package-lock.json
- Ejecuta auditorías de seguridad regularmente
- Mantén Node.js y npm actualizados
- Usa .npmrc para configuración consistente del proyecto
- Nunca commitees node_modules al control de versiones
- Usa variables de entorno para datos sensibles
Próximos Pasos
- Instalar PM2 para gestión de procesos en producción
- Configurar una aplicación Node.js con Express o tu framework preferido
- Configurar proxy inverso con Nginx
- Implementar despliegues automatizados
- Configurar monitoreo y logging
- Crear planes de copia de seguridad y recuperación ante desastres
Node.js y npm forman la base del desarrollo moderno de JavaScript. Con la instalación y configuración adecuadas, estás listo para construir y desplegar aplicaciones poderosas.
¡Feliz programación!


