Temporal

An abstraction for building simple, sophisticated, resilient applications

Developing your application on the Temporal platform gives you a secret weapon —durable execution— which guarantees that your code runs to completion no matter what. The result? Bulletproof applications that are faster to develop and easier to support.

Software Included

Package Version License
temporal 1.22.4 MIT License
temporalio/ui 2.22.3 MIT License
temporalio/admin-tools 1.22.4 MIT License
temporalio/auto-setup 1.22.4 MIT License
postgres 13 MIT License
elasticsearch 7.16.2 Elastic License

Creating an App using the Control Panel

Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

Deploy to DO

Creating an App using the API

In addition to creating a Droplet from the Temporal 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB Temporal Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token) to an environment variable or substitute it in the command below.

curl -X POST -H 'Content-Type: application/json' \
         -H 'Authorization: Bearer '$TOKEN'' -d \
        '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image": "temporal"}' \
        "https://api.digitalocean.com/v2/droplets"

Getting Started After Deploying Temporal

1. Finishing setup

After installation you need to login to the droplet and finish setup process, it will generate required certificates. After setup process is over, the app will be fully functional in 5-10 minutes.

2. Temporal UI

By default UI is not accessible because authentication is missing. To open UI in a browser just run this command:

ssh -i %PATH_TO_YOUR_SSH_KEY% -L 8080:127.0.0.1:8080 -N -f root@%DROPLET_IP_ADDRESS%

Where %PATH_TO_YOUR_SSH_KEY% is the path to the ssh key used in the droplet creation process, %DROPLET_IP_ADDRESS% - the droplet IP address.

Note: If droplet was created with root password port forwarding can be applied using this command:

ssh -L 8080:127.0.0.1:8080 -N -f root@%DROPLET_IP_ADDRESS%

After the command is executed Temporal UI will be accessible in a browser with URL http://127.0.0.1:8080.

Temporal UI also can be configured to use thirdparty authorisation. Take a look at the article: https://github.com/temporalio/web?tab=readme-ov-file#configuring-authentication-optional

Note: to share temporal UI, the droplet’s /srv/temporal/docker-compose.yml should be updated:

temporal-ui:
    container_name: temporal-ui
    depends_on:
      - temporal
    ....
    ports:
      - "8080:8080"

3. Using Temporal in development process

Files /srv/temporal/certs/client.pem and /srv/temporal/certs/client.key should be copied to the local machine and they should be used to access the temporal service.

For example, lets run GO lang samples from this repository: https://github.com/temporalio/samples-go/tree/main/helloworldmtls. To start the worker use this command

go run ./helloworldmtls/worker -target-host %DROPLET_IP_ADDRESS%:7233 -namespace default -client-cert ./helloworldmtls/client.pem -client-key ./helloworldmtls/client.key

To execute workflow use this:

go run ./helloworldmtls/starter -target-host %DROPLET_IP_ADDRESS%:7233 -namespace default -client-cert ./helloworldmtls/client.pem -client-key ./helloworldmtls/client.key

client.pem and client.key should be copied from the droplet, it was mentioned before.

Accessing temporal using other programming languages is similar.