Deploy Temporal v1 Durable Workflows Server

Reliable, retryable workflows in any language. Temporal server plus Web UI.

Deploy Temporal v1 Durable Workflows Server

Just deployed

Just deployed

Just deployed

Just deployed

Deploy and Host Temporal with Railway

Temporal is an open-source durable execution platform: you write workflows as ordinary code in Go, Java, TypeScript, Python, .NET, PHP or Ruby, and Temporal persists every step so they survive crashes, retries and deploys. This community template runs a self-hosted Temporal Server with PostgreSQL and a password-protected Web UI on Railway.

About Hosting Temporal

A self-hosted Temporal cluster needs the Temporal Server (frontend, history, matching and internal worker roles), a database for workflow state, a visibility store for searching workflows, and usually the Web UI. This template runs the server roles in one service on the official temporalio/server image, stores both persistence and visibility in PostgreSQL (SQL advanced visibility, no Elasticsearch required), and creates or upgrades the database schema with Temporal's own temporal-sql-tool in a Railway pre-deploy step. A one-shot job registers the default namespace. The Web UI stays on the private network behind a small Caddy gateway with basic authentication, and the gRPC frontend is reachable by your workers over Railway's private network.

Common Use Cases

  • Order, payment and subscription flows that must finish exactly once despite failures.
  • Long-running business processes with timers, human approvals and compensation (sagas).
  • Reliable background jobs and data pipelines with automatic retries and full history.
  • Orchestrating AI agents and LLM tool calls that need durable state and replay.
  • Coordinating microservices without hand-built state machines and queues.

Dependencies for Temporal Hosting

  • Temporal Server (temporalio/server) and admin tools (temporalio/admin-tools)
  • PostgreSQL (persistence and visibility databases)
  • Temporal Web UI (temporalio/ui)
  • Caddy (basic-auth gateway for the UI)
  • Your own worker services using a Temporal SDK

Deployment Dependencies

Implementation Details

ServiceImageRolePublic
temporaltemporalio/server:1.32.1 + schema toolsgRPC frontend :7233, history, matching, workerPrivate (TCP proxy optional)
temporal-ui-gatewaycaddy:2.11.7-alpine + configBasic-auth entry point for the UIHTTPS domain
temporal-uitemporalio/ui:2.55.0Web UIPrivate
temporal-namespacetemporalio/admin-tools:1.32.1One-shot: creates namespace default—
PostgresRailway Postgrestemporal and temporal_visibility databases—

First login. Open the temporal-ui-gateway domain and sign in with BASIC_AUTH_USERNAME (default admin) and the generated BASIC_AUTH_PASSWORD from that service's Variables tab.

Connect your workers. Deploy your worker service in the same Railway project and set TEMPORAL_ADDRESS=${{temporal.TEMPORAL_ADDRESS}} (resolves to temporal.railway.internal:7233) and TEMPORAL_NAMESPACE=default. To reach the server from outside Railway, add a TCP proxy on port 7233 to the temporal service — only together with mTLS, because the frontend has no authentication by default.

Scaling. Scale your worker services horizontally. Give temporal and Postgres more resources as throughput grows. The history shard count (512) is fixed at first start.

Pinning and upgrades. Server and admin-tools tags live in services/temporal/Dockerfile. Upgrade one minor version at a time; the pre-deploy step applies schema changes before the new server starts.

Why Deploy Temporal on Railway?

Railway runs the Temporal Server, its database, the UI and your workers side by side on a private network, so workflows and workers talk without public exposure. You get managed volumes, deploy previews and per-service scaling without operating Kubernetes.


Template Content

More templates in this category

View Template
Celery | Web, Worker and Scheduler as Three Services
Web, worker and scheduler wired up: Celery on Redis, outcomes in Postgres.

Templates Guru
0
View Template
Redpanda
Redpanda 26.2: Kafka-compatible streaming, single node, with Kafbat UI.

Agaz Self-Host
0
View Template
smoothmq
A drop-in replacement for AWS SQS

poundifdef
7