5S-TES DemoStack Quickstart

⚠️

This is not intended to be a production deployment. To run these applications in a deployed environment, see their respective deployment documentation

DemoStack is a demonstration instance of the complete Five Safes TES Weave (intended to be run locally).

The purpose of this Quickstart is allowing you to run all the components of Five Safes TES in a single install, and guide you through sending your first “Hello World” submission to the Five Safes TES. This then will help you to explore how this weave can be useful for your use case, or as part of a development pathway.

The quickstart is expected to take approximately 10 minutes to complete.

Prerequisites

  • To run the quickstart, you will need Docker, which can be installed and running on your machine, following these instructions. Any issues can be raised here.

  • The Docker Compose files of Five Safes TES Weave need to be downloaded or cloned from the GitHub repository. You can do this by running the following command:

git clone https://github.com/SwanseaUniversityMedical/5S-TES-deployment.git

You do not need a GitHub account to access these, but you may wish to create one in order to keep your configuration script in version control. If you do this or wish to clone the repository, you will also need Git installed on your machine.

  • Funnel is chosen as the TES executor for the DemoStack quickstart. The DemoStack provides automated setup scripts that handle Funnel installation and configuration.

If there are any issues with the automated setup scripts, or if you prefer to set up Funnel manually, follow the instructions here.

Sending Hello World submission

Start the starter.sh automation scripts

The DemoStack includes a starter.sh automation script that automates the initial setup process. This script will:

  1. Start all Docker Compose services in DemoMode = true to seed the demo data and instances.
  2. Install and configure the MinIO client (mc).
  3. Fetch MinIO access keys for Funnel.
  4. Installs and setup the Funnel for executing the TES tasks.
  5. Generate the Funnel configuration file.
  6. Start the Funnel TES server.

Follow these steps to run the starter.sh automation script:

  • Within the 5S-TES-deployment root directory, change to the DemoStack directory:
    cd DemoStack
  • Give permission to execute the starter.sh automation script:
    chmod +x scripts/starter.sh

    The command above only requires if you run this for the first time.

  • Run the starter.sh automation script:
    ./scripts/starter.sh

Wait until all the services are up and running and the starter.sh script finishes executing. You should see the following message in the terminal:

...
Creating funnel-config.yml...
Starting Funnel...
server               Server listening
httpPort             8000
rpcAddress           :9090
time                 2026-02-25T12:47:16Z

This will start the stack with the seeding of some demo data and instances. For example, Testing project will be created, TRE named DEMO will be deployed, and users credentials used to communicate between apps will be seeded.

You can check the status of the services by running docker stats in the terminal.

💡

Once the keycloak service has started, the configuration files for three realms DARE-Control, DARE-TRE and Data-Egress will be imported and applied automatically. As a result, the admin user globaladminuser to access Submission Layer, TRE Agent and Egress Layer will be created in each realm.

Username: globaladminuser
Password: password123

Approve the Project access to the TRE

Since the “DemoMode” is true for the first run, a project named Testing and a TRE named DEMO are automatically seeded in the Submission layer. Once the Docker Compose stack has started successfully, if the seeded project and TRE do not appear yet, please allow approximately 2 minutes for the TRE Agent to complete the migration of the demo projects and sync.

Follow this guide to approve the project access to the TRE.

To make sure that the project has been approved and Submission Layer is in sync with TRE Agent, choose the project in Submission layer and navigate to the TREs section. You should see Approved status for the TRE.

Prepare to send the first submission

To send the first submission, you need to disable simulation mode in DemoStack by doing the following:

  • Set DemoMode to false
  • Set UseTESK to true

This can be done manually by editing the .env file and restarting the Docker Compose services or by running the submission-ready.sh automation script.

Follow these steps to run the submission-ready.sh automation script:

  1. Open a new terminal window and navigate to the DemoStack directory:
cd DemoStack
  1. Give permission to execute the submission-ready.sh automation script:
chmod +x scripts/submission-ready.sh

The command above only requires if you run this for the first time.

  1. Run the submission-ready.sh automation script:
./scripts/submission-ready.sh

This script will automatically do the following steps:

  1. Set DemoMode to false
  2. Set UseTESK to true
  3. Restart all Docker Compose services with the updated configuration.
💡

Tips:

  • Before sending submission, make sure you have Funnel running in a separate terminal window. You can start Funnel by running the following command at the DemoStack directory:
 ./scripts/funnel.sh
  • You can always start or restart the Docker Compose services (e.g.,after editing the .env file) by running the following command:
 ./scripts/submission-ready.sh

This will help keep the stack in the state that ready for you to send the submission.

Send a Hello World submission

The Hello World TES task is a simple submission that is used to demo the DemoStack.

  1. Login to the Submission Layer

  2. Go to the Projects page.

  3. From the list of projects select the Testing project.

  4. Once in the Testing project go to Submissions -> Create Submission -> TES Wizard.

  5. On the TES Wizard page select Submission Mode -> Raw JSON

  6. Enter the following payload, then click Submit TES Task:

{
  "state": 0,
  "name": "Hello World",
  "inputs": [],
  "outputs": [
    {
      "name": "Stdout",
      "description": "Stdout results",
      "url": "s3://",
      "path": "/outputs",
      "type": "DIRECTORY"
    }
  ],
  "executors": [
    {
      "image": "ubuntu",
      "command": ["echo", "Hello World"],
      "workdir": "/outputs",
      "stdout": "/outputs/stdout"
    }
  ],
  "volumes": null,
  "tags": {
    "project": "Testing",
    "tres": "DEMO"
  },
  "logs": null,
  "creation_time": null
}

More information around submitting different TES Tasks can be found in the TES Wizard
guide
.

Tracking and approving the submission results

You will be redirected to the list of Submissions, click onto the submission you just sent.

You should be able to see the status of the submission. Once it has been processed, the status will be set to: Requested Egress. This means that the results are waiting for egress approval. Follow this guide to approve the submission results.

View the submission results

Once the Egress request has been approved, you can view the results in the Submission Layer’s output bucket.

The final successful process should be like this:

Next steps

Now you have sent your first submission, you can try to send a different submission with a different project and TRE using this guide.