From 16cebbe5583f74d5c733341d160eee64cf209c6d Mon Sep 17 00:00:00 2001
From: Pierre Delpy
Date: Fri, 6 Nov 2026 13:43:45 +0100
Subject: [PATCH] Add the ITCC Overview, a Teiler without OIDC, to the itcc
project
Enabled with ENABLE_TEILER, served under /itcc-overview. Local apps:
quality report, export, validator (ENABLE_OMICS) and local explorer
(ENABLE_LENS). Central apps: explorer and data warehouse. The dashboard
lists apps only if local and central apps exist.
teiler-backend:develop, because 1.0.2 (latest) rejects the relative
orchestrator URL.
---
itcc/modules/teiler-compose.yml | 113 ++++++++++++++++++++++++++++++++
itcc/modules/teiler-setup.sh | 8 +++
itcc/teiler-assets/styling.json | 4 ++
3 files changed, 125 insertions(+)
create mode 100644 itcc/modules/teiler-compose.yml
create mode 100644 itcc/modules/teiler-setup.sh
create mode 100644 itcc/teiler-assets/styling.json
diff --git a/itcc/modules/teiler-compose.yml b/itcc/modules/teiler-compose.yml
new file mode 100644
index 0000000..91713f8
--- /dev/null
+++ b/itcc/modules/teiler-compose.yml
@@ -0,0 +1,113 @@
+# ITCC Overview, built from the Teiler. Without OIDC: the apps are public in the dashboard and all routes are behind the auth middleware
+services:
+
+ overview-orchestrator:
+ image: docker.verbis.dkfz.de/cache/samply/teiler-orchestrator:latest
+ container_name: bridgehead-overview-orchestrator
+ labels:
+ - "traefik.enable=true"
+ - "traefik.http.routers.overview_orchestrator_itcc.rule=Host(`${HOST}`) && PathPrefix(`/itcc-overview`)"
+ - "traefik.http.services.overview_orchestrator_itcc.loadbalancer.server.port=9000"
+ - "traefik.http.routers.overview_orchestrator_itcc.tls=true"
+ - "traefik.http.middlewares.overview_orchestrator_itcc_strip.stripprefix.prefixes=/itcc-overview"
+ - "traefik.http.routers.overview_orchestrator_itcc.middlewares=overview_orchestrator_itcc_strip,auth"
+ environment:
+ TEILER_BACKEND_URL: "/itcc-overview-backend"
+ TEILER_DASHBOARD_URL: "/itcc-overview-dashboard"
+ DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE_LOWER_CASE}"
+ HTTP_RELATIVE_PATH: "/itcc-overview"
+
+ overview-dashboard:
+ image: docker.verbis.dkfz.de/cache/samply/teiler-dashboard:develop
+ container_name: bridgehead-overview-dashboard
+ labels:
+ - "traefik.enable=true"
+ - "traefik.http.routers.overview_dashboard_itcc.rule=Host(`${HOST}`) && PathPrefix(`/itcc-overview-dashboard`)"
+ - "traefik.http.services.overview_dashboard_itcc.loadbalancer.server.port=80"
+ - "traefik.http.routers.overview_dashboard_itcc.tls=true"
+ - "traefik.http.middlewares.overview_dashboard_itcc_strip.stripprefix.prefixes=/itcc-overview-dashboard"
+ - "traefik.http.routers.overview_dashboard_itcc.middlewares=overview_dashboard_itcc_strip,auth"
+ environment:
+ DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
+ TEILER_BACKEND_URL: "/itcc-overview-backend"
+ TEILER_DASHBOARD_URL: "/itcc-overview-dashboard"
+ TEILER_ADMIN_NAME: "${OPERATOR_FIRST_NAME} ${OPERATOR_LAST_NAME}"
+ TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}"
+ TEILER_ADMIN_PHONE: "${OPERATOR_PHONE}"
+ TEILER_PROJECT: "ITCC"
+ EXPORTER_API_KEY: "${EXPORTER_API_KEY}"
+ TEILER_ORCHESTRATOR_URL: "/itcc-overview"
+ TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/itcc-overview"
+ REPORTER_DEFAULT_TEMPLATE_ID: "itcc-qb"
+ EXPORTER_DEFAULT_TEMPLATE_ID: "itcc"
+
+ overview-backend:
+ image: docker.verbis.dkfz.de/cache/samply/teiler-backend:develop
+ container_name: bridgehead-overview-backend
+ labels:
+ - "traefik.enable=true"
+ - "traefik.http.routers.overview_backend_itcc.rule=Host(`${HOST}`) && PathPrefix(`/itcc-overview-backend`)"
+ - "traefik.http.services.overview_backend_itcc.loadbalancer.server.port=8085"
+ - "traefik.http.routers.overview_backend_itcc.tls=true"
+ - "traefik.http.middlewares.overview_backend_itcc_strip.stripprefix.prefixes=/itcc-overview-backend"
+ - "traefik.http.routers.overview_backend_itcc.middlewares=overview_backend_itcc_strip,auth"
+ environment:
+ LOG_LEVEL: "INFO"
+ APPLICATION_PORT: "8085"
+ DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
+ TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/itcc-overview"
+ TEILER_ORCHESTRATOR_URL: "/itcc-overview"
+ TEILER_DASHBOARD_DE_URL: "/itcc-overview-dashboard/de"
+ TEILER_DASHBOARD_EN_URL: "/itcc-overview-dashboard/en"
+ TEILER_DASHBOARD_STYLING: "/itcc-overview-backend/assets/styling.json"
+ TEILER_DASHBOARD_LOGO_TEXT: "ITCC Overview"
+ TEILER_BACKEND_ASSETS_DIRECTORY: "/app/assets"
+ HTTP_PROXY: "http://forward_proxy:3128"
+ TEILER_APP1_NAME: "quality-report"
+ TEILER_APP1_ROLES: "TEILER_PUBLIC"
+ TEILER_APP1_BACKENDURL: "/itcc-reporter"
+ TEILER_APP1_BACKENDCHECKURL: "http://reporter:8095/info"
+ TEILER_APP2_NAME: "exporter"
+ TEILER_APP2_ROLES: "TEILER_PUBLIC"
+ TEILER_APP2_BACKENDURL: "/itcc-exporter"
+ TEILER_APP2_BACKENDCHECKURL: "http://exporter:8092/info"
+ TEILER_APP3_NAME: "execution"
+ TEILER_APP3_ROLES: "TEILER_PUBLIC"
+ TEILER_APP3_INMENU: "false"
+ TEILER_APP3_BACKENDURL: "/itcc-exporter"
+ TEILER_APP3_BACKENDCHECKURL: "http://exporter:8092/info"
+ TEILER_APP4_NAME: "validator"
+ TEILER_APP4_TITLE: "Validator"
+ TEILER_APP4_DESCRIPTION: "Checks the local data against the ITCC data model"
+ TEILER_APP4_SOURCEURL: "https://${HOST}/itcc-validator/"
+ TEILER_APP4_SOURCECHECKURL: "http://blaze-validator:8091/"
+ TEILER_APP4_ROLES: "TEILER_PUBLIC"
+ TEILER_APP4_ICONCLASS: "bi bi-check2-square"
+ TEILER_APP4_ISEXTERNALLINK: "true"
+ # The validator belongs to the omics ingest
+ TEILER_APP4_ISACTIVATED: "${ENABLE_OMICS:-false}"
+ TEILER_APP5_NAME: "local-explorer"
+ TEILER_APP5_TITLE: "Local Explorer"
+ TEILER_APP5_SOURCEURL: "https://${HOST}/"
+ TEILER_APP5_SOURCECHECKURL: "http://itcc-explorer:3000/"
+ TEILER_APP5_ROLES: "TEILER_PUBLIC"
+ TEILER_APP5_ICONCLASS: "bi bi-search"
+ TEILER_APP5_ISEXTERNALLINK: "true"
+ TEILER_APP5_ISACTIVATED: "${ENABLE_LENS:-false}"
+ TEILER_APP6_NAME: "central-explorer"
+ TEILER_APP6_TITLE: "Central Explorer"
+ TEILER_APP6_SOURCEURL: "https://portal.pedcanportal.eu/"
+ TEILER_APP6_ROLES: "TEILER_PUBLIC"
+ TEILER_APP6_ICONCLASS: "bi bi-globe"
+ TEILER_APP6_ISEXTERNALLINK: "true"
+ TEILER_APP6_ISLOCAL: "false"
+ TEILER_APP7_NAME: "data-warehouse"
+ TEILER_APP7_TITLE: "Central Data Warehouse"
+ TEILER_APP7_DESCRIPTION: "Reachable from the DKFZ intranet only"
+ TEILER_APP7_SOURCEURL: "https://garage-itcc.sci-cloud.dkfz.de/auth/login"
+ TEILER_APP7_ROLES: "TEILER_PUBLIC"
+ TEILER_APP7_ICONCLASS: "bi bi-database"
+ TEILER_APP7_ISEXTERNALLINK: "true"
+ TEILER_APP7_ISLOCAL: "false"
+ volumes:
+ - "/srv/docker/bridgehead/itcc/teiler-assets:/app/assets:ro"
diff --git a/itcc/modules/teiler-setup.sh b/itcc/modules/teiler-setup.sh
new file mode 100644
index 0000000..dc8dfc4
--- /dev/null
+++ b/itcc/modules/teiler-setup.sh
@@ -0,0 +1,8 @@
+#!/bin/bash -e
+
+if [ "$ENABLE_TEILER" == true ];then
+ log INFO "Teiler setup detected -- will start Teiler services."
+ OVERRIDE+=" -f ./$PROJECT/modules/teiler-compose.yml"
+ TEILER_DEFAULT_LANGUAGE=EN
+ TEILER_DEFAULT_LANGUAGE_LOWER_CASE=${TEILER_DEFAULT_LANGUAGE,,}
+fi
diff --git a/itcc/teiler-assets/styling.json b/itcc/teiler-assets/styling.json
new file mode 100644
index 0000000..6ce0761
--- /dev/null
+++ b/itcc/teiler-assets/styling.json
@@ -0,0 +1,4 @@
+{
+ "logo": "/logo-ITCC.jpg",
+ "logoHeight": 40
+}