Por qué alojar Temporal en un VPS
Temporal Cloud existe, pero el self-hosting sigue siendo relevante. Coste: desde 99 DH/mes/mes, un VPS ServOrbit es suficiente para cargas moderadas. Soberanía de datos: tus workflows pueden procesar información sensible que no debe pasar por un servicio externo. Flexibilidad: controlas la versión desplegada, las políticas de retención y las integraciones de red internas.
Casos de uso de Temporal
Temporal destaca donde los cron jobs y las colas simples muestran sus límites. Estos son los casos de uso más comunes en entornos de producción.
Arquitectura de Temporal auto-alojado
Comprender los componentes internos te ayuda a dimensionar tu VPS y a diagnosticar problemas. Temporal está compuesto por cuatro servicios principales que pueden ejecutarse en el mismo proceso (temporalio/auto-setup) o desplegarse por separado a gran escala.
Temporal vs BullMQ vs Celery
Desplace la tabla
| Criterio | Temporal | BullMQ | Celery |
|---|---|---|---|
| Durabilidad del estado | Historial completo persistido en base de datos — un workflow interrumpido se reanuda exactamente donde estaba | Estado en Redis — una pérdida de Redis significa pérdida de jobs | Backend de resultados opcional — sin historial de ejecución nativo |
| Replay y determinismo | Replay automático desde el historial — el código de workflow debe ser determinista | Sin replay nativo — reintento simple en caso de fallo | Reintento configurable por tarea, sin replay de workflow multi-paso |
| UI de observación | UI rica incluida: lista de workflows, detalle de cada paso, búsqueda, acciones manuales | Bull Board como plugin de terceros | Flower como herramienta separada — métricas básicas |
| Lenguajes soportados | Go, TypeScript/JavaScript, Python, Java, .NET, PHP (SDKs oficiales) | Solo Node.js | Principalmente Python |
| Rendimiento y latencia | Mayor sobrecarga por tarea — optimizado para durabilidad, no para velocidad | Latencia muy baja — pensado para jobs de alta frecuencia | Latencia variable según el broker |
| Caso de uso ideal | Workflows de negocio largos y críticos, patrón Saga, procesos multi-paso durante días | Colas de tareas de alta frecuencia, procesamiento de imágenes, notificaciones en tiempo real | Tareas background Python, pipelines de datos |
Requisitos técnicos
Desplegar Temporal con Docker Compose
Crear el directorio de trabajo
Crea un directorio dedicado y sitúate en él.
Descargar el archivo Docker Compose oficial
Temporal proporciona un archivo Compose de referencia en su repositorio de GitHub. Descarga la versión PostgreSQL con Elasticsearch desactivado para un inicio sencillo.
Crear el archivo de variables de entorno
Crea un archivo
.envpara personalizar las credenciales de PostgreSQL. Nunca dejes contraseñas por defecto en producción.Restringir los permisos del archivo .env
El archivo
.envcontiene credenciales — limita su acceso.Iniciar la stack de Temporal
Lanza todos los servicios en segundo plano. El primer arranque tarda unos minutos:
auto-setupinicializa el esquema de PostgreSQL automáticamente.Verificar que todos los servicios están sanos
Espera 60 a 90 segundos, luego verifica que los contenedores están en estado
healthyorunning.Verificar la conexión al Frontend Service
Usa la CLI de Temporal para confirmar que el servidor responde en el puerto gRPC.
Crear un namespace de producción
Temporal usa namespaces para aislar los workflows. Crea un namespace dedicado a tu aplicación con una retención de 30 días.
Acceder a la UI de Temporal
La interfaz web está disponible en el puerto 8080. En producción, coloca un reverse proxy nginx con HTTPS delante de este puerto (ver sección de seguridad).
Configurar el inicio automático
Activa el reinicio automático de la stack tras un reinicio del VPS.
Configurar un Worker simple en Go o TypeScript
Un Worker es el proceso que ejecuta realmente tu código de negocio. Se conecta al Frontend Service, hace polling de una task queue y ejecuta los Workflows y Activities que Temporal le despacha.
Temporal UI — monitorear y depurar workflows
La UI de Temporal (disponible en el puerto 8080) es la herramienta central para observar tus workflows en producción. Te permite:
Copias de seguridad de PostgreSQL y persistencia
La durabilidad de Temporal depende íntegramente de PostgreSQL. Una instancia sin copias de seguridad implica la pérdida total del historial de workflows en caso de fallo del VPS.
Resolución de problemas — errores frecuentes
Estos son los cuatro errores más comunes al instalar Temporal en un VPS y su solución.
Seguridad: no expongas el Frontend Service sin autenticación
Los puertos 7233 (gRPC Frontend) y 8080 (UI) nunca deben exponerse directamente a Internet sin protección. El Frontend Service no incluye autenticación nativa en las versiones open-source: cualquiera que pueda conectarse puede iniciar, detener o leer todos tus workflows. Medidas recomendadas: (1) bloquea el puerto 7233 en ufw y autoriza solo las IPs de tus Workers (ufw allow from 10.0.0.0/8 to any port 7233); (2) coloca la UI detrás de un reverse proxy nginx con autenticación HTTP básica o SSO; (3) usa una VPN o una red privada entre tu VPS de Temporal y tus VPS de Workers. En producción, considera mTLS (disponible en Temporal v1.x) para cifrar y autenticar la conexión gRPC.