Skip to main content
Temporal is a distributed, scalable, durable, and highly available orchestration engine designed to execute asynchronous long-running business logic in a resilient way. This guide walks you through setting up Temporal for SuprSend’s Self-Hosted deployment. This installation guide covers:
  • Setting up Temporal with PostgreSQL for standard workloads
  • Configuring Temporal with Cassandra for high-volume workloads (>0.5M workflows/day)
  • Enabling SSO authentication
  • Configuring required search attributes for SuprSend

Prerequisites

Before installing Temporal, ensure you have: System Requirements
  • Kubernetes cluster (AWS EKS, GKE, AKS, kind, or minikube)
  • kubectl configured to access your cluster
  • Helm v3 (v3.8.0 or later recommended)
  • Git for cloning the Temporal repository
Database Requirements
  • PostgreSQL 12+ instance accessible from your Kubernetes cluster. For smaller deployments you can use same postgres database which is setup for suprsend. If you have higher volume, you can setup a different postgres instance as well OR move to cassandra backed deployment.
  • Database credentials with sufficient privileges to create databases and schemas
Resource Requirements
  • Minimum: 4 CPU cores, 8GB RAM
  • Recommended: 8 CPU cores, 16GB RAM
  • Storage: At least 100GB for logs and data
Verify Prerequisites

Installation Options

Temporal can be deployed with different storage backends depending on your workload requirements:

Database Setup

Temporal requires two PostgreSQL databases:
  • temporal: Stores workflow execution data
  • temporal_visibility: Stores workflow visibility/search data

Step 1: Build the Temporal SQL Tool

The temporal-sql-tool is required to initialize the database schemas. Build it from the official Temporal repository:

Step 2: Initialize PostgreSQL Databases

Set up your PostgreSQL connection details and create the required databases:

Step 3: Verify Database Setup

Verify that both databases were created successfully:
You should see both temporal and temporal_visibility databases listed.

Step 4: Install Temporal

Check out the Temporal Helm chart from temporalio/helm-charts and work from the chart directory:
Create a values file (for example values-temporal-postgres.yaml) that uses your PostgreSQL instance for both default and visibility stores, enables the Web UI and admintools, and disables bundled databases you do not need. The structure below matches the chart’s server.config.persistence + datastores style; align field names with your chart version using helm show values temporal/temporal if anything differs. Install Temporal with Helm (from helm-charts/charts/temporal, or pass the full path to -f):

Alternative: command-line --set flags

Some chart versions still expose Postgres settings under server.config.persistence.default.sql.*. If that matches your helm show values output, you can pass overrides directly (for simpler setups only):
Prefer the values file (datastores / connectAddr layout) above when it matches your chart; the --set keys vary by chart version.

Step 5: Verify installation

Check that all Temporal components are running:
Open http://localhost:8080 in your browser to access the Temporal Web UI.

Step 6: Set up the default namespace for Temporal

SuprSend expects a Temporal namespace named default. The admintools image does not include bash; use sh.
Inside that shell, create the namespace (do not change the name default; adjust retention if needed):
Exit with exit when finished.

Step 7: Configure SuprSend search attributes (required)

The temporal CLI runs inside the admintools pod. jq is not installed in that image - run jq on your workstation by piping kubectl exec output to your local shell.
1

Verify namespaces

From your machine (pipes remote JSONL to local jq):
You should see temporal-system and default.
2

Open an admintools shell (for the next step)

Search-attribute commands must run where the temporal CLI is available - inside the admintools pod. Open a shell first:
Then run the temporal operator search-attribute create commands below in that shell.
3

Add search attributes needed for SuprSend

4

Verify search attributes

Still inside the admintools shell:

Step 8: SuprSend Helm configuration

Once your Temporal cluster is set up and running with the required search attributes, configure SuprSend to connect to it.
This section shows only the Temporal-specific configuration. You must also configure other required secrets and values for SuprSend to work properly. See the complete configuration guide: SuprSend Installation Guide
Helm Values Configuration Add the following to your suprsend-values.yaml (along with other required configuration):
The above configuration goes under global.config section in your suprsend-values.yaml.

Step 9: Upsize Temporal based on your need


High-Volume Deployment with Cassandra - Optional

For workloads exceeding 1 million workflows per day, use Cassandra as the primary datastore with OpenSearch or PostgreSQL for visibility.

Prerequisites for High-Volume Setup

  • Cassandra cluster (3+ nodes recommended)
  • OpenSearch cluster or PostgreSQL instance for visibility store
  • Sufficient resources: 16+ CPU cores, 32+ GB RAM

Step 1: Initialize Cassandra Keyspaces

If you have an existing Cassandra cluster, initialize the required keyspaces:

Step 2: Configure High-Volume Deployment

Download and configure the Cassandra values file:
Edit values.cassandra.yaml to configure:
values.cassandra.yaml

Step 3: Install High-Volume Temporal

Use PostgreSQL for Visibility

If you prefer PostgreSQL for visibility store instead of OpenSearch:
values.cassandra.yaml

Configure SSO Authentication (Optional)

Enable Single Sign-On (SSO) authentication for the Temporal Web UI to integrate with your identity provider.

Step 1: Create Kubernetes Secret

Create a secret containing your SSO client secret:

Step 2: Configure SSO Environment Variables

Add SSO configuration to your Helm values file:
values.yaml

Step 3: Update Temporal Installation

Upgrade your Temporal installation with SSO configuration:
For more SSO configuration options, refer to the Temporal Web UI Server Environment Variables.

Monitoring Your Deployment

Check Cluster Status

Monitor your Temporal deployment using standard Kubernetes tools:

Access Temporal Web UI

Open http://localhost:8080 in your browser to access the Temporal Web UI.

Verify Search Attributes

You should see all the SuprSend-specific search attributes listed in the output.

FAQ

Check existing search attributes with tctl admin cluster get-search-attributes. If they already exist, you can skip adding them or remove and re-add with tctl admin cluster remove-search-attributes --name SS_WorkspaceId.
Check pod status and events:
Check service status and port-forward to the Web UI service (not the gRPC frontend):
Add resource limits to your values.yaml: