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:Documentation Index
Fetch the complete documentation index at: https://docs.suprsend.com/llms.txt
Use this file to discover all available pages before exploring further.
- 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
- 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
- Minimum: 4 CPU cores, 8GB RAM
- Recommended: 8 CPU cores, 16GB RAM
- Storage: At least 100GB for logs and data
Installation Options
Temporal can be deployed with different storage backends depending on your workload requirements:| Workload Size | Primary Storage | Visibility Store | Use Case |
|---|---|---|---|
| < 1M workflows/day | PostgreSQL | PostgreSQL | Standard deployments |
| > 1M workflows/day | Cassandra | OpenSearch/PostgreSQL | High-volume deployments |
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
Thetemporal-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: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: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:Step 6: Set up the default namespace for Temporal
SuprSend expects a Temporal namespace nameddefault. The admintools image does not include bash; use sh.
default; adjust retention if needed):
exit when finished.
Step 7: Configure SuprSend search attributes (required)
Thetemporal 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.
Verify namespaces
From your machine (pipes remote JSONL to local You should see
jq):temporal-system and default.Open an admintools shell (for the next step)
Search-attribute commands must run where the Then run the
temporal CLI is available — inside the admintools pod. Open a shell first:temporal operator search-attribute create commands below in that 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
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: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:Monitoring Your Deployment
Check Cluster Status
Monitor your Temporal deployment using standard Kubernetes tools:Access Temporal Web UI
Verify Search Attributes
FAQ
Search attributes already exist
Search attributes already exist
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.Pods stuck in Pending or CrashLoopBackOff
Pods stuck in Pending or CrashLoopBackOff
Check pod status and events:
Web UI not accessible
Web UI not accessible
Check service status and port-forward to the Web UI service (not the gRPC frontend):
High memory usage
High memory usage
Add resource limits to your
values.yaml:Getting help
Getting help
- Temporal Documentation: https://docs.temporal.io
- Temporal Community: https://community.temporal.io
- SuprSend Support: Contact your SuprSend support team