- Target Audience
- TRE Operator
- Time to read
- 45 min
Install Funnel TES Backend
Funnel is an implementation of the GA4GH Task Execution Schemas. It provides an API server, multiple storage backends, multiple compute backends and a web UI.
This guide will walk you through the process of installing Funnel and configuring it to use the TRE Layer S3 instance.
Set up S3 Access key
This step is required to configure Funnel to use the TRE Layer S3 instance.
-
Navigate to the S3 instance of the TRE Layer. It will be on the same host as the TRE Agent, at port
9002, if you followed the example configuration. If you’ve configured it to be different, you’ll need to use the correct port. -
Login with S3 TRE root credentials (which are set up in the environment variables in the
.envfile). -
To create the access keys, in the S3 (currently RustFS) console navigate to Access Keys -> Add Access Key
While you can log in with your KeyCloak credentials, using the option Log in with KeyCloak, to create access keys with efficient privileges, you need to
log in with S3 root credentials.

Install Funnel
You can find the latest releases with installation instructions here .
Funnel is currently only available on linux and macOS.
Install Script
This installs the latest release candidate at the time of writing v0.11.12.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/calypr/funnel/develop/install.sh)" -- "v0.11.12"You can add the destination of Funnel by adding it in the end of the command. For example, to install Funnel to /opt/funnel:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/calypr/funnel/develop/install.sh)" -- "v0.11.12" "/opt/funnel"Check if funnel has been successfully installed
funnel --helpFunnel config file
Funnel will need access to the TRE layer S3 storage. Once funnel is installed, create a config.yml file.
Endpointis where the instance of S3 in the TRE Layer is hosted.Access key&Secretare created in the previous step.
GenericS3:
- Disabled: false
Endpoint: "localhost:9002" # URL to S3 API. Change to match your environment. `9002` is the default port in our deployment samples.
Key: "<access key>"
Secret: "<secret>"You may also wish to configure other elements of the Funnel installation, e.g.:
Server:
HTTPPort: "80" # Control which port Funnel binds on, default is 8000
Worker:
WorkDir: "/var/opt/funnel" # explicitly specify Funnel's working directory
# ...Funnel’s documentation offers configuration details in the relevant pages for each feature area.
Funnel’s own deployment documentation also offers suggested approaches to deployment.
Run Funnel
Run the funnel server using the config created above.
funnel server run -c config.ymlYou can decide the location of the config file, but the command above will
need to be changed to point to the correct config file location. For example,
if the config file is located in /etc/funnel/: bash copy funnel server run -c /etc/funnel/config.yml
Optionally, to run Funnel in the background on a typical linux server, you may wish to setup a systemd service.
For example, if Funnel is installed manually to /opt/funnel/funnel:
[Unit]
Description=Funnel Server
[Service]
ExecStart=/opt/funnel/funnel server run --config /etc/funnel/config.yml
SyslogIdentifier=funnel
LimitNOFILE=1000000
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.targetAccess to Funnel
By default, Funnel Web Dashboard can be accessed at host and port specified in the config file (Server.HTTPPort) with a default value of 8000.
It is strongly recommended NOT to open public internet access to Funnel Dashboard and to limit the Funnel network access to specific IP addresses, e.g., IP of developer’s machine for debugging purposes, only.