logo
icon

Inngest

Inngest auto-hospedado — motor de ejecución durable para trabajos en segundo plano y flujos de trabajo de IA. Incluye PostgreSQL y Redis.

PlataformaZeabur
Implementado3
EditorzeaburZeabur
Implementado3 veces
EditorzeaburZeabur
Creado2026-04-16
Servicios
service icon
service icon
service icon
Etiquetas
Developer ToolsBackground JobsWorkflow

Inngest — Auto-Hospedado

Inngest es un motor de ejecución durable de código abierto para trabajos en segundo plano, funciones programadas y flujos de trabajo de IA con reintentos y control de concurrencia integrados.

Esta plantilla despliega una instancia auto-hospedada de Inngest con PostgreSQL y Redis en un solo clic.

Servicios

ServicioPuertoPropósito
Inngest Dashboard & API8288 (HTTP)UI, ingesta de eventos, REST API
Inngest Connect Gateway8289 (HTTP/WSS)Puerta de enlace WebSocket para workers SDK
PostgreSQL5432Almacenamiento de estado persistente
Redis6379Cola y caché

Preparación

Necesitas dos cadenas hexadecimales (número par de caracteres, solo 0-9 y a-f):

openssl rand -hex 16

Usa una para Event Key y otra para Signing Key.

⚠️ Advertencia de seguridad

Inngest self-hosted por diseño no aplica autenticación al Dashboard UI ni a la GraphQL API. El código fuente solo aplica la validación de signing key a los endpoints del SDK:

EndpointProtegido
Dashboard UI❌ Público
GraphQL API (/v0/gql)❌ Público — cualquiera puede consultar todas las apps, funciones y eventos
Envío de eventos (/e/*)✅ Requiere Event Key
SDK Sync (/fn/register)✅ Requiere Signing Key
Connect WebSocket✅ Requiere Signing Key

Recomendado: no expongas el dominio del Dashboard públicamente. Colócalo detrás de una VPN, lista de IPs permitidas o un proxy con HTTP Basic Auth. El dominio del Connect Gateway (puerto 8289) debe permanecer público para los workers del SDK.

Conectar workers SDK

const inngest = new Inngest({
  id: "my-app",
  baseUrl: "https://YOUR_DOMAIN",
  eventKey: "YOUR_EVENT_KEY",
  signingKey: "YOUR_SIGNING_KEY",
});

Para el modo Connect (workers WebSocket), especifica tu dominio Connect en gatewayUrl:

// ⚠️ Usa `triggers` (array plural), NO `trigger` (singular)
const myFn = inngest.createFunction(
  { id: "my-fn", triggers: [{ event: "my/event" }] },
  async ({ event, step }) => { /* ... */ }
);

await connect({
  apps: [{ client: inngest, functions: [myFn] }],
  gatewayUrl: "wss://YOUR_CONNECT_DOMAIN/v0/connect",
});

Importante: Usa siempre triggers: [...] (array plural) al definir funciones. Usar trigger: (singular) dejará los triggers vacíos y las funciones nunca se ejecutarán.

Licencia

Inngest es de código abierto bajo la licencia Apache 2.0.