Compartir en Twitter
Go to Homepage

CÓMO DESPLEGAR UNA APLICACIÓN NODE.JS EN PRODUCCIÓN

November 13, 2025

Introducción a cómo desplegar una aplicación Node.js

Desplegar una aplicación Node.js en un servidor de producción requiere una serie de pasos bien definidos para garantizar un entorno seguro, eficiente y escalable. Este tutorial te guiará desde la creación de un servidor en Digital Ocean, pasando por la configuración del sistema operativo, la instalación de herramientas esenciales como Nginx y Node.js, hasta la ejecución de tu aplicación como un proceso gestionado. Aunque el enfoque está en Node.js, muchos de los pasos son aplicables a otras aplicaciones web. Este proceso incluye la configuración de un servidor Ubuntu, la autenticación mediante claves SSH, la instalación de un proxy inverso con Nginx y la gestión de procesos con PM2. Si tienes conocimientos básicos de terminal y editores como Vi/Vim, estarás listo para seguir este tutorial. Los comandos se ejecutarán en un entorno Unix, pero puedes adaptarlos a Windows utilizando PowerShell o un emulador Unix.

Por qué elegir Digital Ocean para el despliegue

Digital Ocean es una opción popular para desplegar aplicaciones debido a su interfaz intuitiva, precios competitivos y facilidad de uso en comparación con plataformas como AWS. Ofrece máquinas virtuales denominadas Droplets, que son instancias de servidores compartidos o dedicados, ideales para proyectos personales, startups o aplicaciones de prueba. Los Droplets funcionan como máquinas virtuales, lo que permite escalar recursos como CPU y memoria según las necesidades. Además, Digital Ocean incluye créditos iniciales para nuevos usuarios, lo que reduce los costos iniciales, especialmente para desarrolladores que buscan experimentar con despliegue de aplicaciones.

Para comenzar, necesitas una cuenta en Digital Ocean. Una vez registrado, puedes crear un proyecto que contendrá tus Droplets. Desde el panel de control, selecciona la opción para crear un nuevo proyecto, asigna un nombre descriptivo y omite la asignación de recursos si es un proyecto nuevo.

# Ejemplo de navegación en el panel de Digital Ocean
# Crear un proyecto: Seleccionar "New Project" en el menú lateral
# Asignar nombre: "MiAplicacionNode"

Creación de un Droplet en Digital Ocean

Un Droplet es la unidad básica de un servidor en Digital Ocean. Para crearlo, selecciona la opción “Get Started” en tu proyecto. Debes elegir una imagen para la máquina virtual; en este caso, Ubuntu 22.04 LTS (versión más reciente con soporte a largo plazo en 2025) es la opción recomendada por su estabilidad y amplia comunidad. Las versiones LTS garantizan actualizaciones y soporte durante varios años, lo que las hace ideales para entornos de producción.

Selecciona el plan más económico si estás probando, aunque para proyectos más grandes, considera opciones con CPU dedicada. Elige una región de datacenter cercana a tu ubicación para minimizar la latencia. Por ejemplo, si estás en Europa, selecciona un datacenter en Frankfurt o Londres.

# Configuración recomendada para el Droplet
Imagen: Ubuntu 22.04 LTS
Plan: Básico ($5/mes para pruebas)
Región: Cercana a tu ubicación

Para la autenticación, selecciona claves SSH en lugar de contraseñas, ya que ofrecen mayor seguridad. Esto requiere generar una clave SSH en tu máquina local y añadirla a Digital Ocean.

Generación de una clave SSH

Las claves SSH son esenciales para una conexión segura al servidor. En un entorno Unix (como macOS o Linux), abre una terminal y accede al directorio .ssh:

cd ~/.ssh

Genera una clave SSH con el siguiente comando:

ssh-keygen

Presiona Enter para aceptar los valores predeterminados (nombre de archivo id_rsa y sin contraseña, aunque puedes añadir una para mayor seguridad). Esto generará dos archivos: id_rsa (clave privada) y id_rsa.pub (clave pública). Puedes verificar los archivos generados:

ls
# Salida esperada
id_rsa  id_rsa.pub

Si usas Windows, consulta la documentación de Digital Ocean para generar claves con herramientas como PuTTY o PowerShell.

Añadir la clave SSH a Digital Ocean

Copia la clave pública (id_rsa.pub) desde tu máquina local. Puedes verla con:

cat ~/.ssh/id_rsa.pub

Copia todo el contenido, incluyendo ssh-rsa. En el panel de Digital Ocean, ve a la sección de SSH Keys, selecciona “New SSH Key”, pega la clave y asigna un nombre descriptivo. Esto permitirá que el servidor autentique tu conexión usando la clave privada correspondiente.

Conexión al servidor mediante SSH

Con el Droplet creado, obtén su dirección IP desde el panel de Digital Ocean. Conecta al servidor con el siguiente comando, reemplazando IP_ADDRESS por la IP de tu Droplet:

ssh root@IP_ADDRESS

Si la conexión es exitosa, estarás en la terminal del servidor. En caso de errores, usa la opción -v para depuración:

ssh -v root@IP_ADDRESS

Configuración inicial del servidor

Antes de desplegar la aplicación, es fundamental configurar el servidor para garantizar seguridad y estabilidad.

Actualización de software

Actualiza los paquetes del sistema para evitar vulnerabilidades conocidas:

sudo apt update

Esto lista los paquetes disponibles. Luego, actualiza los paquetes instalados:

sudo apt upgrade

Confirma con y cuando se te solicite. Este paso asegura que el servidor use las versiones más recientes de los paquetes.

Creación de un usuario no root

Conectarse como root es arriesgado, ya que este usuario tiene privilegios ilimitados. Crea un usuario con privilegios limitados para operaciones diarias:

adduser usuario_ejemplo

Sigue las instrucciones para establecer una contraseña y completar los campos opcionales. Luego, añade el usuario al grupo sudo para permitir comandos administrativos:

usermod -aG sudo usuario_ejemplo

Cambia al nuevo usuario:

su usuario_ejemplo

Verifica que el usuario tiene permisos sudo:

sudo whoami
# Salida esperada
root

Configuración de SSH para el nuevo usuario

Para permitir conexiones SSH con el nuevo usuario, copia la clave pública al servidor. Crea el directorio .ssh en el nuevo usuario:

mkdir -p ~/.ssh

Crea el archivo authorized_keys con Vi/Vim:

vi ~/.ssh/authorized_keys

Pega la clave pública (id_rsa.pub) desde tu máquina local, guarda el archivo (:wq) y ajusta los permisos:

chmod 644 ~/.ssh/authorized_keys

Conecta al servidor con el nuevo usuario:

ssh usuario_ejemplo@IP_ADDRESS

Deshabilitar el acceso root

Para mayor seguridad, deshabilita el acceso root vía SSH. Edita el archivo de configuración de SSH:

sudo vi /etc/ssh/sshd_config

Busca la línea PermitRootLogin y cámbiala a:

PermitRootLogin no

Guarda los cambios y reinicia el servicio SSH:

sudo service ssh restart

Instalación de Node.js y Git

Instala Node.js y npm para ejecutar tu aplicación, junto con Git para clonar repositorios:

sudo apt install nodejs npm
sudo apt install git

Verifica las versiones instaladas:

node -v
npm -v

Creación y prueba de una aplicación Node.js

Crea un directorio para tu aplicación y un archivo de prueba:

mkdir /var/www/app
cd /var/www/app
vi app.js

Añade el siguiente código para una aplicación Express básica:

const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
    res.send("¡Hola, mundo!");
});

app.listen(port, () =>
    console.log(`Aplicación escuchando en el puerto ${port}!`)
);

Instala Express:

npm install express

Ejecuta la aplicación:

node app.js

Verifica que funcione enviando una solicitud a http://IP_ADDRESS:3000 desde un navegador o cliente HTTP como Postman. Deberías ver “¡Hola, mundo!”.

Instalación y configuración de Nginx como proxy inverso

Los usuarios no suelen acceder a puertos específicos como el 3000. Configura Nginx como proxy inverso para redirigir las solicitudes del puerto 80 al puerto 3000.

Instala Nginx:

sudo apt install nginx

Inicia el servicio:

sudo service nginx start

Verifica que Nginx esté funcionando visitando http://IP_ADDRESS en tu navegador, donde deberías ver la página predeterminada de Nginx.

Configura el proxy inverso editando el archivo de configuración:

sudo vi /etc/nginx/sites-available/default

Modifica el bloque location /:

location / {
    proxy_pass http://127.0.0.1:3000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

Reinicia Nginx para aplicar los cambios:

sudo service nginx reload

Ahora, las solicitudes a http://IP_ADDRESS se redirigen a tu aplicación Node.js.

Gestión de la aplicación con PM2

Para garantizar que tu aplicación se reinicie automáticamente tras errores o reinicios del servidor, usa PM2, un gestor de procesos para Node.js.

Instala PM2 globalmente:

sudo npm install -g pm2

Inicia tu aplicación con PM2:

pm2 start app.js

Guarda la lista de procesos:

pm2 save

Configura PM2 para iniciarse con el sistema:

pm2 startup systemd

Sigue las instrucciones que PM2 muestra para completar la configuración. Reinicia el servidor para probar:

sudo reboot

Tras el reinicio, verifica que la aplicación sigue funcionando visitando http://IP_ADDRESS.

Conclusiones

Desplegar una aplicación Node.js en un servidor de producción implica configurar un entorno seguro y eficiente, desde la creación de un Droplet en Digital Ocean hasta la gestión de procesos con PM2. Este tutorial cubrió la selección de un sistema operativo, la configuración de claves SSH, la instalación de herramientas esenciales como Node.js, Git y Nginx, y la automatización del despliegue con PM2. Al seguir estos pasos, puedes tener una aplicación Node.js funcionando en un servidor accesible desde cualquier navegador, con medidas de seguridad como la deshabilitación del acceso root y la autenticación SSH. Este proceso no solo es aplicable a Node.js, sino que puede adaptarse a otros frameworks y lenguajes, lo que lo convierte en un conocimiento valioso para cualquier desarrollador web. Continúa explorando temas como la conexión de dominios o la integración continua para optimizar aún más tus despliegues.