diff --git a/ccp/modules/opal-compose.yml b/ccp/modules/opal-compose.yml new file mode 100644 index 0000000..f623829 --- /dev/null +++ b/ccp/modules/opal-compose.yml @@ -0,0 +1,79 @@ +version: "3.7" + +services: + + ############################################ DataSHIELD Client (Rocker R-Studio) + rstudio: + image: docker.verbis.dkfz.de/dktk/bridgehead-rstudio:latest + container_name: bridgehead-rstudio + #TODO: Connect with Keycloak: https://rocker-project.org/images/versioned/rstudio.html + environment: + USER: "ruser" + PASSWORD: "${RSTUDIO_PASSWORD}" + labels: + - "traefik.enable=true" + - "traefik.http.routers.login.rule=PathPrefix(`/rstudio`)" + - "traefik.http.services.login.loadbalancer.server.port=8787" + - "traefik.http.routers.login.tls=true" + volumes: + - "rstudio-config:/home/rstudio/.config/rstudio" + - "rstudio-workspace:/home/rstudio/workspace" + - "rstudio-user-files:/home/user-files" + + ############################################ DataSHIELD Server (Opal) + opal: + image: obiba/opal:4.5 + container_name: bridgehead-opal + labels: + - "traefik.enable=true" + - "traefik.http.routers.login.rule=PathPrefix(`/opal`)" + - "traefik.http.services.login.loadbalancer.server.port=8080" #TODO: HTTPS -> 8443 + - "traefik.http.routers.login.tls=true" + links: + - opal-rserver + - opal-mongo + - opal-db + environment: + JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC" + # OPAL_ADMINISTRATOR_USER: "administrator" + OPAL_ADMINISTRATOR_PASSWORD: "${OPAL_ADMINISTRATOR_PASSWORD}" + MONGO_HOST: "opal-mongo" + MONGO_PORT: "27017" + POSTGRESDATA_HOST: "opal-db" + POSTGRESDATA_DATABASE: "opal" + POSTGRESDATA_USER: "opal" + POSTGRESDATA_PASSWORD: "${OPAL_DB_PASSWORD}" + + ROCK_HOSTS: "opal-rserver:8085" + volumes: + - "opal:/srv" + + opal-mongo: # IDs + image: mongo:4.2 # TODO: Update mongo:6.0.4 + container_name: bridgehead-opal-mongo + + opal-db: # Data + image: postgres:15.1 + container_name: bridgehead-opal-db + environment: + POSTGRES_PASSWORD: "${OPAL_DB_PASSWORD}" + POSTGRES_USER: "opal" + POSTGRES_DB: "opal" + volumes: + - "opal-db:/var/lib/postgresql/data" + + opal-rserver: + image: datashield/rock-base:6.2-R4.2 # https://datashield.discourse.group/t/ds-aggregate-method-error/416/4 + container_name: bridgehead-opal-rserver + +volumes: + rstudio-config: + name: "rstudio-config" + rstudio-workspace: + name: "rstudio-workspace" + rstudio-user-files: + name: "rstudio-user-files" + opal-db: + name: "opal-db" + opal: + name: "opal" diff --git a/ccp/modules/opal-setup.sh b/ccp/modules/opal-setup.sh new file mode 100644 index 0000000..259dee6 --- /dev/null +++ b/ccp/modules/opal-setup.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ "$ENABLE_OPAL" == true ];then + log INFO "Opal setup detected -- will start Opal services." + OVERRIDE+=" -f ./$PROJECT/modules/opal-compose.yml" +fi +OPAL_DB_PASSWORD="$(echo \"This is a salt string to generate one consistent password. It is not required to be secret.\" | openssl rsautl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)" diff --git a/ccp/modules/opal.md b/ccp/modules/opal.md new file mode 100644 index 0000000..e69de29 diff --git a/ccp/modules/teiler-ui-compose.yml b/ccp/modules/teiler-ui-compose.yml index 57cfbb1..d159e48 100644 --- a/ccp/modules/teiler-ui-compose.yml +++ b/ccp/modules/teiler-ui-compose.yml @@ -241,26 +241,26 @@ services: TEILER_APP24_INMENU: "false" TEILER_APP25_NAME: "dialog-tests" TEILER_APP25_INMENU: "false" - # TEILER_APP26_NAME: "opal" - # TEILER_APP26_TITLE: "Opal" - # TEILER_APP26_DESCRIPTION: "Opal is OBiBa’s core database application for biobanks." - # TEILER_APP26_SOURCEURL: "http://localhost:8880" - # TEILER_APP26_ROLES: "TEILER_USER" - # TEILER_APP26_ISACTIVATED: "true" - # TEILER_APP26_ICONSOURCEURL: "https://www.obiba.org/assets/themes/bootstrap/img/obiba-logo-small.png" - # TEILER_APP26_ORDER: "19" - # TEILER_APP26_ISEXTERNALLINK: "true" - # TEILER_APP26_ISLOCAL: "true" - # TEILER_APP27_NAME: "rstudio" - # TEILER_APP27_TITLE: "R Studio" - # TEILER_APP27_DESCRIPTION: "RStudio is an integrated development environment (IDE) for R and Python." - # TEILER_APP27_SOURCEURL: "http://localhost:8787" - # TEILER_APP27_ROLES: "TEILER_USER" - # TEILER_APP27_ISACTIVATED: "true" - # TEILER_APP27_ICONSOURCEURL: "https://rstudio.com/wp-content/uploads/2018/10/RStudio-Logo-Flat.png" - # TEILER_APP27_ORDER: "20" - # TEILER_APP27_ISEXTERNALLINK: "true" - # TEILER_APP27_ISLOCAL: "true" + TEILER_APP26_NAME: "opal" + TEILER_APP26_TITLE: "Opal" + TEILER_APP26_DESCRIPTION: "Opal is OBiBa’s core database application for biobanks." + TEILER_APP26_SOURCEURL: "https://${HOST}/opal" + TEILER_APP26_ROLES: "TEILER_USER" + TEILER_APP26_ISACTIVATED: "true" + TEILER_APP26_ICONSOURCEURL: "https://www.obiba.org/assets/themes/bootstrap/img/obiba-logo-small.png" + TEILER_APP26_ORDER: "19" + TEILER_APP26_ISEXTERNALLINK: "true" + TEILER_APP26_ISLOCAL: "true" + TEILER_APP27_NAME: "rstudio" + TEILER_APP27_TITLE: "R Studio" + TEILER_APP27_DESCRIPTION: "RStudio is an integrated development environment (IDE) for R and Python." + TEILER_APP27_SOURCEURL: "https://${HOST}/rstudio" + TEILER_APP27_ROLES: "TEILER_USER" + TEILER_APP27_ISACTIVATED: "true" + TEILER_APP27_ICONSOURCEURL: "https://rstudio.com/wp-content/uploads/2018/10/RStudio-Logo-Flat.png" + TEILER_APP27_ORDER: "20" + TEILER_APP27_ISEXTERNALLINK: "true" + TEILER_APP27_ISLOCAL: "true" volumes: login-db: diff --git a/ccp/modules/teiler-ui.md b/ccp/modules/teiler-ui.md new file mode 100644 index 0000000..e69de29