Home / Guías / Node.js

Implementar una aplicación Node.js en 15 minutos

Sin Docker, sin PaaS, sin magia. Node.js más sistematizado y Nginx es una pila que sobrevive reinicios, accidentes y tráfico, y usted puede leer todo.

1. Instala Node.js

apt update && apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
node --version

2. Crear un usuario de la aplicación

Nunca ejecutar una aplicación web como root. Un usuario separado limita el daño si la aplicación está comprometida.

adduser --system --group --home /opt/myapp app
mkdir -p /opt/myapp
chown app:app /opt/myapp

3. Subir la aplicación

Desde tu portátil, con rsync sobre SSH — ningún servidor Git requerido:

rsync -avz --exclude node_modules ./app/ root@YOUR_SERVER_IP:/opt/myapp/

En el servidor, instalar dependencias y probar una vez en primer plano:

cd /opt/myapp
sudo -u app npm ci --omit=dev
sudo -u app PORT=3000 node server.js

La aplicación debe escuchar 127.0.0.1:3000 - no en la interfaz pública. Nginx se enfrentará a Internet.

4. sistemad mantiene vivo

cat > /etc/systemd/system/myapp.service <<'EOF'
[Unit]
Description=My Node.js app
After=network-online.target
[Service]
User=app
WorkingDirectory=/opt/myapp
Environment=NODE_ENV=production
Environment=PORT=3000
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now myapp
systemctl status myapp

¿Crash? Se reinicia en tres segundos. ¿Reboot? Empieza automáticamente. ¿Deplorar una nueva versión? rsyncEntonces systemctl restart myapp.

5. Nginx en frente

apt install -y nginx
cat > /etc/nginx/sites-available/myapp <<'EOF'
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/myapp
nginx -t && systemctl reload nginx

A continuación, señale el registro de su dominio en el servidor y agregue HTTPS — el avance completo está en el Guía Nginx y HTTPS.

6. Revisa los registros

journalctl -u myapp -f --no-pager
tail -f /var/log/nginx/error.log

Consola de salida de su aplicación aterriza en la revista automáticamente — sin archivos de registro para configurar.

Respuestas rápidas

¿Necesito PM2?

En realidad no. systemd hace todo lo que PM2 hace para un solo servidor — auto-restart, arranque, registros — sin una dependencia adicional. PM2 tiene sentido principalmente si ejecuta varios procesos de Nodo con agrupación.

¿Cuánto RAM necesita una aplicación Node?

Una típica aplicación Express se extiende alrededor de 80–150 MB. Un servidor de 2 GB funciona cómodamente junto a Nginx y PostgreSQL; construir pasos como el paquete web son la parte memoria-hungry, por lo que construir en CI o en su computadora portátil.

¿Cómo implemento una nueva versión sin tiempo de inactividad?

rsync el nuevo código, luego reiniciar — la brecha está bajo un segundo, porque sistematizado reinicia el proceso inmediatamente. Para cero-tiempo usted ejecutaría dos puertos y cambiar Nginx río arriba, pero la mayoría de proyectos nunca lo necesitan.

Esta pila encaja cómodamente en Buran-1 en €6.5/mes.

Relacionados