Tienes una app en Node.js (por ejemplo, hecha con Express) y quieres verla en https://tu-dominio.com, con candado y sin armar un servidor tú mismo. Esta guía te lleva de la carpeta al dominio, siguiendo cómo funciona NodeApp en nuestro servidor: tu app vive en una carpeta, PM2 la mantiene corriendo, nginx conecta tu dominio con ella y el SSL de Let’s Encrypt es gratis. Si primero quieres ver qué incluye el servicio, está resumido en hosting para Node.js.
Qué necesitas antes de empezar
Tres cosas: un plan que incluya apps Node.js, un dominio y tu código.
| Dato | Cloud Startup |
|---|---|
| Apps Node.js | Incluidas |
| Acceso SSH | Sí (shell enjaulada) |
| Sitios | Sin límite |
| Disco | 100 GB SSD |
| Memoria y núcleos | 4 GB de RAM y 4 núcleos |
| Bases de datos | 300 (MySQL/MariaDB) |
| Precio de lanzamiento | US$9,99 al mes el primer año, pagando anual |
| Renovación | US$311,88 al año (US$25,99 al mes) |
| Mes a mes | US$27,99 |
- Plan. Una shell enjaulada es un terminal limitado a tu propia cuenta: ejecutas comandos, pero no tocas el resto del servidor. El pago es con tarjeta de crédito o débito por Stripe, en US$. Si usas una tarjeta boliviana, confirma con tu banco que esté habilitada para compras en el exterior.
- Dominio. Si ya tienes uno, apúntalo a
ns1.quimeracloud.comyns2.quimeracloud.comdesde tu registrador; los pasos están en la guía cómo apuntar un dominio .com o .bo a tu hosting. Si necesitas uno nuevo, se registra automáticamente al confirmarse el pago: .com y .net cuestan US$20 el primer año y US$25 al año de renovación, y .org cuesta US$16 el primer año y US$20 de renovación anual (más en dominios). No vendemos dominios .bo. - Tu código. Un proyecto con su
package.json.
Cómo funciona NodeApp en cuatro piezas
NodeApp es el plugin HCPP-NodeApp (v2.0.3 en nuestro servidor) de HestiaCP, el panel de control que usamos. Según su README, permite alojar aplicaciones Node.js con control mediante PM2.
| Pieza | Qué hace por ti |
|---|---|
Carpeta nodeapp |
Tu app vive en web/<dominio>/nodeapp. |
| PM2 | Es un gestor de procesos: un programa que arranca tu app y ayuda a mantenerla en línea, según su documentación. Si tu app se cae, la reinicia. |
| Puerto automático | El sistema asigna el puerto y se lo pasa a tu app al arrancar. |
| nginx | Recibe las visitas a tu dominio y las pasa a tu app, con soporte para WebSocket. |
Paso a paso
1. Activa NodeApp en tu dominio
- Entra al panel (disponible en español, portugués, francés, italiano, alemán e inglés).
- En la pestaña Web, edita tu dominio y abre las opciones avanzadas (Advanced Options).
- Elige NodeApp en la lista de plantillas de proxy (Proxy Template), como indica la documentación del plugin, y guarda.
El plugin también pide que tu usuario tenga acceso SSH; en QuimeraCloud lo trae Cloud Startup. Si no ves NodeApp entre las plantillas o tu usuario aún no tiene SSH, escríbenos por WhatsApp.
2. Mira el ejemplo que ya viene
En la carpeta web/<dominio>/nodeapp encontrarás un ejemplo con Express: app.js y app.config.js. Ábrelos antes de escribir nada, porque te muestran cómo recibe el puerto una app en este servidor.
El app.js de ejemplo no lee una variable de entorno: recibe el puerto como argumento -p. Esta es una versión resumida del archivo del plugin:
const express = require('express');
const app = express();
// El plugin arranca la app con: -p <puerto>
const argv = require('minimist')(process.argv.slice(2));
const port = argv.p || 0;
if (port == 0) {
console.log('Port number is not specified');
process.exit(1);
}
app.get('*', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.log(`Escuchando en el puerto ${port}`));
El ejemplo usa express y minimist como dependencias. Y el app.config.js es el archivo que PM2 lee para arrancar la app:
module.exports = {
apps: (function () {
let nodeapp = require('/usr/local/hestia/plugins/nodeapp/nodeapp.js')(__filename);
return [nodeapp];
})()
}
No hace falta tocarlo. Según su propio comentario, ese módulo del plugin da soporte automático a .nvmrc y a la asignación de puerto. Tu carpeta trae su propia copia de estos archivos: úsala como referencia si ves alguna diferencia con lo de arriba.
3. Elige la versión de Node con .nvmrc
Crea (o edita) un archivo llamado .nvmrc dentro de la carpeta nodeapp. Solo lleva la versión:
v22
En nuestro servidor hay cuatro versiones instaladas con NVM (el administrador de versiones de Node): 16, 18, 20 y 22. El README del plugin explica que la configuración de PM2 selecciona la versión a partir de este archivo. El README del repositorio describe la versión más reciente del plugin y puede nombrar otras versiones de Node; para tu cuenta vale la lista de este párrafo.
4. Sube tu propia app
- Copia tu código a la carpeta
nodeapppor SSH. - Renombra
app.jsyapp.config.jscon el nombre de tu app, por ejemplotienda.jsytienda.config.js. El README indica reemplazar “app” por el nombre de tu aplicación. - Abre tu
package.jsony cambia el campomainal nombre nuevo ("main": "tienda.js"). - Haz que tu código lea el puerto igual que el ejemplo (
-p) y escuche en ese puerto. Si escucha en otro, nginx no la encontrará. - Instala tus paquetes con
npm installdentro de la carpeta. Si tu shell no encuentranpm, escríbenos por WhatsApp.
5. Arranca y reinicia
El panel tiene, en la pestaña Web, una lista de procesos NodeApp con iniciar, detener, reiniciar y ver registros. Hay otras dos vías, ambas por SSH y desde la carpeta nodeapp:
touch .restart/restart # pide un reinicio de la app
pm2 start app.config.js # arranca con PM2 (usa tu propio nombre de archivo)
Cada vez que cambies tu código, reinicia la app para que tome los cambios.
6. Lee los registros
Si algo falla, empieza por los registros del proceso: en el panel, desde la lista de procesos NodeApp, o por SSH con pm2 logs, que según la documentación de PM2 muestra los registros en tiempo real.
7. Activa el SSL y comprueba el dominio
El SSL de Let’s Encrypt es gratis, se renueva solo y viene en todos los planes. Para emitirlo, Let’s Encrypt comprueba que controlas el dominio pidiéndole un archivo por HTTP, en el puerto 80 (así lo explica su documentación). Por eso el dominio ya debe llegar a nuestro servidor: si lo conectaste con los nameservers, el cambio puede tardar en propagarse.
- Abre
http://tu-dominio.comy comprueba que ya muestra tu app. - En el panel, abre las opciones de tu dominio y marca las casillas de SSL y de Let’s Encrypt (en inglés, Enable SSL for this domain y Use Let’s Encrypt to obtain SSL certificate). Si ya aparecen marcadas, no cambies nada. Guarda. Así lo describe la documentación de HestiaCP.
- Abre
https://tu-dominio.comy revisa el candado.
Límites que conviene conocer
- Un solo servidor, en Seattle (EE. UU.). Tus visitantes de Bolivia y de LATAM se conectan a ese servidor. No hay réplicas en otras regiones.
- Sin root. La shell enjaulada no permite instalar software del sistema. Si tu app lo necesita, un VPS te sirve más: lo comparamos en hosting compartido, cloud o VPS.
- Solo MySQL/MariaDB como bases de datos incluidas.
- Dirección IPv4 compartida. Todas las cuentas usan la IPv4 del servidor.
- Copia diaria en el mismo servidor. Se guarda la más reciente.
- Monitoreo cada minuto, aunque no publicamos una cifra de disponibilidad.
Problemas frecuentes
| Lo que ves | Causa probable | Qué hacer |
|---|---|---|
| El registro dice “Port number is not specified” | El ejemplo del plugin imprime esto cuando arranca sin el argumento -p |
Arráncala desde el panel o con pm2 start app.config.js, no con node app.js a mano |
| Cambiaste el código y no se nota | La app sigue con la versión anterior | Reinícala |
| No arranca después de renombrar archivos | El nombre del .config.js o el main de package.json no coinciden con tu archivo |
Revisa que los tres nombres coincidan |
| El dominio no carga | Los nameservers aún no se propagaron | Revisa que apunten a ns1.quimeracloud.com y ns2.quimeracloud.com (cómo comprobarlo con nslookup, en la guía de dominios) |
Si algo no coincide con lo que ves en tu panel, escríbenos por WhatsApp al +591 773 14890: te atiende una persona del equipo de Quimera. Y si todavía estás eligiendo, compara los planes.
Preguntas frecuentes
¿Puedo usar Node.js si hoy tengo el plan Premium o Unlimited?
Las apps Node.js y el acceso SSH vienen en el plan Cloud Startup. Para cambiar de plan, nos escribes por WhatsApp y lo cambiamos sin mover tu sitio: tus archivos, bases de datos y correos quedan donde están, sin que tengas que moverlos.
¿Qué base de datos puedo usar con mi app?
Los planes incluyen bases MySQL/MariaDB (300 en Cloud Startup). Otros motores de base de datos no están incluidos. Si tu app depende de uno distinto, conviene un VPS, donde instalas lo que necesites.
¿Hay copia de seguridad de mi app?
Sí, hay una copia diaria automática. Se guarda la más reciente, en el mismo servidor, y la restauras o descargas desde el panel. Como respaldo extra, descarga una copia de vez en cuando y guarda tu código en un repositorio propio.
¿Qué versiones de Node.js puedo usar?
En el servidor hay cuatro versiones instaladas con NVM: 16, 18, 20 y 22. Eliges una con un archivo .nvmrc dentro de la carpeta nodeapp de tu dominio, por ejemplo con la línea v22.
Fuentes
- HCPP-NodeApp: README del plugin (virtuosoft-dev) · 2026-11-02
- HCPP-NodeApp: app.js de ejemplo · 2026-11-02
- HCPP-NodeApp: nodeapp.js (puerto y .nvmrc) · 2026-11-02
- PM2: guía de inicio rápido · 2026-11-02
- Let's Encrypt: tipos de validación (HTTP-01) · 2026-11-02
- HestiaCP: dominios web (SSL y Let's Encrypt) · 2026-11-02
- Ficha de datos verificados de QuimeraCloud · 2026-11-02
