Ir al contenido

Guía de despliegue · Node.js

Node.jsDespliega Node.js en minutos.

Conecta el repositorio, Railpack lo compila, el servicio recibe un dominio con TLS. Bases de datos desde plantillas, uso descontado por minuto de un saldo prepago, todo en nodos en la UE.

Una grúa del muelle baja una caja luminosa a un pequeño bote amarrado en un embarcadero de noche
$ npm i -g skiffly && skiffly login
$ cd my-api && skiffly init
$ skiffly up
$ skiffly logs -f
01Build

Qué detecta Railpack

Railpack inspecciona el repositorio y elige el build para Node.js; la mayoría de proyectos no necesita configuración. Un Dockerfile en el repositorio siempre gana.

  • package.json (start script or main)
  • lockfile: pnpm / npm / yarn
  • .nvmrc / engines.node
Builder
Railpack (por defecto)
Comando de inicio
npm start

Lo deriva Railpack; cámbialo en Configuración → Despliegue → Comando de inicio.

02Puerto

Puerto y $PORT

Skiffly inyecta PORT en cada servicio y enruta el dominio público hacia él. Define el puerto en la configuración del servicio si tu app escucha en uno fijo; el valor por defecto es 3000 para Node.js, 8080 si no defines ninguno.

Escuchar en $PORT
app.listen(process.env.PORT ?? 3000)
PORT
3000
SKIFFLY_PUBLIC_DOMAIN
<service>.skiffly.cloud
Terminal

Desde una terminal

Instala la CLI, vincula el directorio, despliega. skiffly up compila el HEAD ya subido de la rama actual y transmite los logs del build; skiffly domain le da al servicio una dirección *.skiffly.cloud.

Configuración como código

O descríbelo una sola vez

.skiffly/skiffly.ts declara el servicio, sus bases de datos y las referencias entre ellos. skiffly config plan muestra el diff, skiffly config apply lo aplica. La API replica a railway/iac.

Configuración como código
.skiffly/skiffly.ts
// .skiffly/skiffly.ts
import { defineSkiffly, github, postgres, project, redis, service } from "@skiffly/config";

export default defineSkiffly(() => {
  const db = postgres("db");
  const cache = redis("cache");

  const web = service("api", {
    source: github("acme/api"),
    start: "node server.js",
    port: 3000,
    healthcheck: "/",
    env: {
      DATABASE_URL: db.env.DATABASE_URL,
      REDIS_URL: cache.env.REDIS_URL,
      NODE_ENV: "production",
    },
  });

  return project("api", { resources: [web, db, cache] });
});
Preguntas

Node.js en Skiffly: preguntas frecuentes

¿Cómo defino variables de entorno para Node.js?
En la pestaña Variables del servicio, con skiffly variables set KEY=value o en .skiffly/skiffly.ts. Referencia otros servicios con ${{Postgres.DATABASE_URL}} y valores de todo el entorno con ${{shared.NAME}}. Los secretos se cifran en reposo.
¿Puedo cambiar el comando de build o de inicio?
Sí. Configuración → Origen → Comando de build reemplaza el paso de build de Railpack; Configuración → Despliegue → Comando de inicio reemplaza el comando de inicio. Un monorepo define un directorio raíz para que el build corra dentro de él.
¿Cómo agrego Postgres o Redis?
Despliega la plantilla en el mismo entorno. Llega con un volumen, credenciales generadas y una URL de conexión que referencias desde el servicio Node.js. Conéctate desde tu laptop con skiffly connect postgres.
¿Tengo entornos de vista previa por pull request?
Activa las vistas previas de PR en el proyecto: cada pull request recibe su propia copia del entorno en su propio dominio, eliminada al hacer merge o cerrar el PR. Los forks se ignoran.
¿Cuánto cuesta una app Node.js pequeña?
Un servicio de 512 MB / 0.25 vCPU cuesta unos $7.75 al mes, descontados por minuto de tu saldo. Agrega Postgres con 512 MB / 0.25 vCPU y un volumen de 10 GB por unos $9 más. El plan gratuito corre una app de 512 MB con App Sleeping y una base de datos de 512 MB sin costo.
¿Puede el servicio Node.js dormir cuando está inactivo?
Activa App Sleeping: tras unos 10 minutos sin solicitudes se escala a cero y despierta con la siguiente (2–10 s). CPU y memoria no se facturan mientras duerme; el volumen sí.
Amanecer en mar abierto: un bote con vela turquesa avanza hacia el horizonte por una línea punteada de carta náutica dibujada sobre el mar

Despliega tu app Node.js hoy

Plan gratuito sin tarjeta. Hobby desde $5 con $5 de uso incluidos.