Tutorial

Instalar Temporal en un VPS: automatización self-hosted

Automatización10 min de lectura10 pasos

Temporal es un motor de orquestación de workflows duraderos: sus procesos largos sobreviven a los reinicios, a las caídas y a los errores, porque su estado se persiste en cada etapa. Diseñado para desarrolladores mediante SDK (Go, Java, Python, TypeScript), es ideal para las transacciones complejas y las sagas. Así se instala en self-hosted en un VPS.

Contenido· Por qué alojar Temporal en un VPS1/11
  1. 01Por qué alojar Temporal en un VPS
  2. 02Casos de uso de Temporal
  3. 03Arquitectura de Temporal auto-alojado
  4. 04Temporal vs BullMQ vs Celery
  5. 05Requisitos técnicos
  6. 06Desplegar Temporal con Docker Compose
  7. 07Configurar un Worker simple en Go o TypeScript
  8. 08Temporal UI — monitorear y depurar workflows
  9. 09Copias de seguridad de PostgreSQL y persistencia
  10. 10Resolución de problemas — errores frecuentes
  11. 11Seguridad: no expongas el Frontend Service sin autenticación

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

CriterioTemporalBullMQCelery
Durabilidad del estadoHistorial completo persistido en base de datos — un workflow interrumpido se reanuda exactamente donde estabaEstado en Redis — una pérdida de Redis significa pérdida de jobsBackend de resultados opcional — sin historial de ejecución nativo
Replay y determinismoReplay automático desde el historial — el código de workflow debe ser deterministaSin replay nativo — reintento simple en caso de falloReintento configurable por tarea, sin replay de workflow multi-paso
UI de observaciónUI rica incluida: lista de workflows, detalle de cada paso, búsqueda, acciones manualesBull Board como plugin de tercerosFlower como herramienta separada — métricas básicas
Lenguajes soportadosGo, TypeScript/JavaScript, Python, Java, ‎.NET, PHP (SDKs oficiales)Solo Node.jsPrincipalmente Python
Rendimiento y latenciaMayor sobrecarga por tarea — optimizado para durabilidad, no para velocidadLatencia muy baja — pensado para jobs de alta frecuenciaLatencia variable según el broker
Caso de uso idealWorkflows de negocio largos y críticos, patrón Saga, procesos multi-paso durante díasColas de tareas de alta frecuencia, procesamiento de imágenes, notificaciones en tiempo realTareas background Python, pipelines de datos

Requisitos técnicos

Desplegar Temporal con Docker Compose

  1. Crear el directorio de trabajo

    Crea un directorio dedicado y sitúate en él.

  2. 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.

  3. Crear el archivo de variables de entorno

    Crea un archivo .env para personalizar las credenciales de PostgreSQL. Nunca dejes contraseñas por defecto en producción.

  4. Restringir los permisos del archivo .env

    El archivo .env contiene credenciales — limita su acceso.

  5. Iniciar la stack de Temporal

    Lanza todos los servicios en segundo plano. El primer arranque tarda unos minutos: auto-setup inicializa el esquema de PostgreSQL automáticamente.

  6. Verificar que todos los servicios están sanos

    Espera 60 a 90 segundos, luego verifica que los contenedores están en estado healthy o running.

  7. Verificar la conexión al Frontend Service

    Usa la CLI de Temporal para confirmar que el servidor responde en el puerto gRPC.

  8. 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.

  9. 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).

  10. 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.

Una infraestructura VPS para Temporal

Temporal exige recursos sólidos: el VPS Cloud de ServOrbit aporta los vCPU, la RAM y el disco rápido necesarios, con Docker listo para usar y SSL automático para proteger la Web UI. Ponga en marcha su orquestación duradera en self-hosted.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva