mirror of
https://github.com/samply/bridgehead.git
synced 2025-06-16 21:50:14 +02:00
Compare commits
30 Commits
feature/au
...
feature/ex
Author | SHA1 | Date | |
---|---|---|---|
5f5e626501 | |||
2b391a5156 | |||
022d6e9a72 | |||
4446f9b9ac | |||
3312ca8a64 | |||
072ee348fc | |||
f328e40963 | |||
599bcfcec4 | |||
eb2955872f | |||
24da24d05e | |||
65359c2ee6 | |||
b1de62607f | |||
969f1e7242 | |||
77c870ab22 | |||
f0bdb5c146 | |||
735e064b03 | |||
6465dcb0ad | |||
c585322ee7 | |||
4568e32ffa | |||
ed8dacaa59 | |||
3fe781255b | |||
775cef59d6 | |||
aca22fb3e3 | |||
33a2505517 | |||
83b653e0c3 | |||
bc0f46ecc9 | |||
4ab10ff71d | |||
cfa85067f0 | |||
e4bc34cce9 | |||
8fddb809a7 |
@ -34,7 +34,7 @@ This repository is the starting point for any information and tools you will nee
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
The data protection group at your site will probably want to know exactly what our software does with patient data, and you may need to get their approval before you are allowed to install a Bridgehead. To help you with this, we have provided some data protection concepts:
|
The data protection officer at your site will probably want to know exactly what our software does with patient data, and you may need to get their approval before you are allowed to install a Bridgehead. To help you with this, we have provided some data protection concepts:
|
||||||
|
|
||||||
- [Germany](https://www.bbmri.de/biobanking/it/infrastruktur/datenschutzkonzept/)
|
- [Germany](https://www.bbmri.de/biobanking/it/infrastruktur/datenschutzkonzept/)
|
||||||
|
|
||||||
@ -46,6 +46,8 @@ Hardware requirements strongly depend on the specific use-cases of your network
|
|||||||
- 32 GB RAM
|
- 32 GB RAM
|
||||||
- 160GB Hard Drive, SSD recommended
|
- 160GB Hard Drive, SSD recommended
|
||||||
|
|
||||||
|
We recommend using a dedicated VM for the Bridgehead, with no other applications running on it. While the Bridgehead can, in principle, run on a shared VM, you might run into surprising problems such as resource conflicts (e.g., two apps using tcp port 443).
|
||||||
|
|
||||||
### Software
|
### Software
|
||||||
|
|
||||||
You are strongly recommended to install the Bridgehead under a Linux operating system (but see the section [Non-Linux OS](#non-linux-os)). You will need root (administrator) priveleges on this machine in order to perform the deployment. We recommend the newest Ubuntu LTS server release.
|
You are strongly recommended to install the Bridgehead under a Linux operating system (but see the section [Non-Linux OS](#non-linux-os)). You will need root (administrator) priveleges on this machine in order to perform the deployment. We recommend the newest Ubuntu LTS server release.
|
||||||
|
@ -4,13 +4,14 @@ version: "3.7"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
blaze:
|
blaze:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/blaze:0.28
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
container_name: bridgehead-bbmri-blaze
|
container_name: bridgehead-bbmri-blaze
|
||||||
environment:
|
environment:
|
||||||
BASE_URL: "http://bridgehead-bbmri-blaze:8080"
|
BASE_URL: "http://bridgehead-bbmri-blaze:8080"
|
||||||
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
DB_BLOCK_CACHE_SIZE: ${BLAZE_MEMORY_CAP}
|
||||||
|
CQL_EXPR_CACHE_SIZE: ${BLAZE_CQL_CACHE_CAP:-32}
|
||||||
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
volumes:
|
volumes:
|
||||||
- "blaze-data:/app/data"
|
- "blaze-data:/app/data"
|
||||||
|
@ -16,7 +16,7 @@ services:
|
|||||||
- "blaze"
|
- "blaze"
|
||||||
|
|
||||||
beam-proxy-eric:
|
beam-proxy-eric:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:develop
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
container_name: bridgehead-beam-proxy-eric
|
container_name: bridgehead-beam-proxy-eric
|
||||||
environment:
|
environment:
|
||||||
BROKER_URL: ${ERIC_BROKER_URL}
|
BROKER_URL: ${ERIC_BROKER_URL}
|
||||||
|
@ -16,7 +16,7 @@ services:
|
|||||||
- "blaze"
|
- "blaze"
|
||||||
|
|
||||||
beam-proxy-gbn:
|
beam-proxy-gbn:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:develop
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
container_name: bridgehead-beam-proxy-gbn
|
container_name: bridgehead-beam-proxy-gbn
|
||||||
environment:
|
environment:
|
||||||
BROKER_URL: ${GBN_BROKER_URL}
|
BROKER_URL: ${GBN_BROKER_URL}
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
FOCUS_RETRY_COUNT=${FOCUS_RETRY_COUNT:-64}
|
FOCUS_RETRY_COUNT=${FOCUS_RETRY_COUNT:-64}
|
||||||
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
||||||
|
|
||||||
|
source versions
|
||||||
for module in $PROJECT/modules/*.sh
|
for module in $PROJECT/modules/*.sh
|
||||||
do
|
do
|
||||||
log DEBUG "sourcing $module"
|
log DEBUG "sourcing $module"
|
||||||
|
17
bridgehead
17
bridgehead
@ -32,6 +32,18 @@ case "$PROJECT" in
|
|||||||
bbmri)
|
bbmri)
|
||||||
#nothing extra to do
|
#nothing extra to do
|
||||||
;;
|
;;
|
||||||
|
cce)
|
||||||
|
#nothing extra to do
|
||||||
|
;;
|
||||||
|
itcc)
|
||||||
|
#nothing extra to do
|
||||||
|
;;
|
||||||
|
kr)
|
||||||
|
#nothing extra to do
|
||||||
|
;;
|
||||||
|
dhki)
|
||||||
|
#nothing extra to do
|
||||||
|
;;
|
||||||
minimal)
|
minimal)
|
||||||
#nothing extra to do
|
#nothing extra to do
|
||||||
;;
|
;;
|
||||||
@ -52,7 +64,7 @@ loadVars() {
|
|||||||
fetchVarsFromVaultByFile /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "Unable to fetchVarsFromVaultByFile"
|
fetchVarsFromVaultByFile /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "Unable to fetchVarsFromVaultByFile"
|
||||||
setHostname
|
setHostname
|
||||||
optimizeBlazeMemoryUsage
|
optimizeBlazeMemoryUsage
|
||||||
[ -e ./$PROJECT/vars ] && source ./$PROJECT/vars
|
[ -e ./$PROJECT/vars ] && source ./versions ./$PROJECT/vars
|
||||||
set +a
|
set +a
|
||||||
|
|
||||||
OVERRIDE=${OVERRIDE:=""}
|
OVERRIDE=${OVERRIDE:=""}
|
||||||
@ -75,13 +87,16 @@ loadVars() {
|
|||||||
case "$ENVIRONMENT" in
|
case "$ENVIRONMENT" in
|
||||||
"production")
|
"production")
|
||||||
export FOCUS_TAG=main
|
export FOCUS_TAG=main
|
||||||
|
export BEAM_TAG=main
|
||||||
;;
|
;;
|
||||||
"test")
|
"test")
|
||||||
export FOCUS_TAG=develop
|
export FOCUS_TAG=develop
|
||||||
|
export BEAM_TAG=develop
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
report_error 7 "Environment \"$ENVIRONMENT\" is unknown. Assuming production. FIX THIS!"
|
report_error 7 "Environment \"$ENVIRONMENT\" is unknown. Assuming production. FIX THIS!"
|
||||||
export FOCUS_TAG=main
|
export FOCUS_TAG=main
|
||||||
|
export BEAM_TAG=main
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
63
cce/docker-compose.yml
Normal file
63
cce/docker-compose.yml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
blaze:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
|
container_name: bridgehead-cce-blaze
|
||||||
|
environment:
|
||||||
|
BASE_URL: "http://bridgehead-cce-blaze:8080"
|
||||||
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
|
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
||||||
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
|
volumes:
|
||||||
|
- "blaze-data:/app/data"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.blaze_cce.rule=PathPrefix(`/cce-localdatamanagement`)"
|
||||||
|
- "traefik.http.middlewares.cce_b_strip.stripprefix.prefixes=/cce-localdatamanagement"
|
||||||
|
- "traefik.http.services.blaze_cce.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.routers.blaze_cce.middlewares=cce_b_strip,auth"
|
||||||
|
- "traefik.http.routers.blaze_cce.tls=true"
|
||||||
|
|
||||||
|
focus:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/focus:${FOCUS_TAG}
|
||||||
|
container_name: bridgehead-focus
|
||||||
|
environment:
|
||||||
|
API_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
BEAM_APP_ID_LONG: focus.${PROXY_ID}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
BLAZE_URL: "http://bridgehead-cce-blaze:8080/fhir/"
|
||||||
|
BEAM_PROXY_URL: http://beam-proxy:8081
|
||||||
|
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
||||||
|
EPSILON: 0.28
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
- "blaze"
|
||||||
|
|
||||||
|
beam-proxy:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
|
container_name: bridgehead-beam-proxy
|
||||||
|
environment:
|
||||||
|
BROKER_URL: ${BROKER_URL}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
APP_focus_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
PRIVKEY_FILE: /run/secrets/proxy.pem
|
||||||
|
ALL_PROXY: http://forward_proxy:3128
|
||||||
|
TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs
|
||||||
|
ROOTCERT_FILE: /conf/root.crt.pem
|
||||||
|
secrets:
|
||||||
|
- proxy.pem
|
||||||
|
depends_on:
|
||||||
|
- "forward_proxy"
|
||||||
|
volumes:
|
||||||
|
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
|
||||||
|
- /srv/docker/bridgehead/cce/root.crt.pem:/conf/root.crt.pem:ro
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
blaze-data:
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
proxy.pem:
|
||||||
|
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem
|
33
cce/modules/lens-compose.yml
Normal file
33
cce/modules/lens-compose.yml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
version: "3.7"
|
||||||
|
services:
|
||||||
|
landing:
|
||||||
|
container_name: lens_federated-search
|
||||||
|
image: docker.verbis.dkfz.de/ccp/lens:${SITE_ID}
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.landing.rule=PathPrefix(`/`)"
|
||||||
|
- "traefik.http.services.landing.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.landing.tls=true"
|
||||||
|
|
||||||
|
spot:
|
||||||
|
image: docker.verbis.dkfz.de/ccp-private/central-spot
|
||||||
|
environment:
|
||||||
|
BEAM_SECRET: "${FOCUS_BEAM_SECRET_SHORT}"
|
||||||
|
BEAM_URL: http://beam-proxy:8081
|
||||||
|
BEAM_PROXY_ID: ${SITE_ID}
|
||||||
|
BEAM_BROKER_ID: ${BROKER_ID}
|
||||||
|
BEAM_APP_ID: "focus"
|
||||||
|
PROJECT_METADATA: "cce_supervisors"
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.services.spot.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolallowmethods=GET,OPTIONS,POST"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolalloworiginlist=https://${HOST}"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolallowcredentials=true"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolmaxage=-1"
|
||||||
|
- "traefik.http.routers.spot.rule=Host(`${HOST}`) && PathPrefix(`/backend`)"
|
||||||
|
- "traefik.http.middlewares.stripprefix_spot.stripprefix.prefixes=/backend"
|
||||||
|
- "traefik.http.routers.spot.tls=true"
|
||||||
|
- "traefik.http.routers.spot.middlewares=corsheaders2,stripprefix_spot"
|
5
cce/modules/lens-setup.sh
Normal file
5
cce/modules/lens-setup.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -n "$ENABLE_LENS" ];then
|
||||||
|
OVERRIDE+=" -f ./$PROJECT/modules/lens-compose.yml"
|
||||||
|
fi
|
20
cce/root.crt.pem
Normal file
20
cce/root.crt.pem
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDNTCCAh2gAwIBAgIUW34NEb7bl0+Ywx+I1VKtY5vpAOowDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFjEUMBIGA1UEAxMLQnJva2VyLVJvb3QwHhcNMjQwMTIyMTMzNzEzWhcNMzQw
|
||||||
|
MTE5MTMzNzQzWjAWMRQwEgYDVQQDEwtCcm9rZXItUm9vdDCCASIwDQYJKoZIhvcN
|
||||||
|
AQEBBQADggEPADCCAQoCggEBAL5UegLXTlq3XRRj8LyFs3aF0tpRPVoW9RXp5kFI
|
||||||
|
TnBvyO6qjNbMDT/xK+4iDtEX4QQUvsxAKxfXbe9i1jpdwjgH7JHaSGm2IjAiKLqO
|
||||||
|
OXQQtguWwfNmmp96Ql13ArLj458YH08xMO/w2NFWGwB/hfARa4z/T0afFuc/tKJf
|
||||||
|
XbGCG9xzJ9tmcG45QN8NChGhVvaTweNdVxGWlpHxmi0Mn8OM9CEuB7nPtTTiBuiu
|
||||||
|
pRC2zVVmNjVp4ktkAqL7IHOz+/F5nhiz6tOika9oD3376Xj055lPznLcTQn2+4d7
|
||||||
|
K7ZrBopCFxIQPjkgmYRLfPejbpdUjK1UVJw7hbWkqWqH7JMCAwEAAaN7MHkwDgYD
|
||||||
|
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGjvRcaIP4HM
|
||||||
|
poIguUAK9YL2n7fbMB8GA1UdIwQYMBaAFGjvRcaIP4HMpoIguUAK9YL2n7fbMBYG
|
||||||
|
A1UdEQQPMA2CC0Jyb2tlci1Sb290MA0GCSqGSIb3DQEBCwUAA4IBAQCbzycJSaDm
|
||||||
|
AXXNJqQ88djrKs5MDXS8RIjS/cu2ayuLaYDe+BzVmUXNA0Vt9nZGdaz63SLLcjpU
|
||||||
|
fNSxBfKbwmf7s30AK8Cnfj9q4W/BlBeVizUHQsg1+RQpDIdMrRQrwkXv8mfLw+w5
|
||||||
|
3oaXNW6W/8KpBp/H8TBZ6myl6jCbeR3T8EMXBwipMGop/1zkbF01i98Xpqmhx2+l
|
||||||
|
n+80ofPsSspOo5XmgCZym8CD/m/oFHmjcvOfpOCvDh4PZ+i37pmbSlCYoMpla3u/
|
||||||
|
7MJMP5lugfLBYNDN2p+V4KbHP/cApCDT5UWLOeAWjgiZQtHH5ilDeYqEc1oPjyJt
|
||||||
|
Rtup0MTxSJtN
|
||||||
|
-----END CERTIFICATE-----
|
15
cce/vars
Normal file
15
cce/vars
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
BROKER_ID=test-no-real-data.broker.samply.de
|
||||||
|
BROKER_URL=https://${BROKER_ID}
|
||||||
|
PROXY_ID=${SITE_ID}.${BROKER_ID}
|
||||||
|
FOCUS_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
|
||||||
|
FOCUS_RETRY_COUNT=${FOCUS_RETRY_COUNT:-64}
|
||||||
|
SUPPORT_EMAIL=manoj.waikar@dkfz-heidelberg.de
|
||||||
|
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
||||||
|
BROKER_URL_FOR_PREREQ=$BROKER_URL
|
||||||
|
|
||||||
|
source versions
|
||||||
|
for module in $PROJECT/modules/*.sh
|
||||||
|
do
|
||||||
|
log DEBUG "sourcing $module"
|
||||||
|
source $module
|
||||||
|
done
|
@ -2,13 +2,14 @@ version: "3.7"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
blaze:
|
blaze:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/blaze:0.28
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
container_name: bridgehead-ccp-blaze
|
container_name: bridgehead-ccp-blaze
|
||||||
environment:
|
environment:
|
||||||
BASE_URL: "http://bridgehead-ccp-blaze:8080"
|
BASE_URL: "http://bridgehead-ccp-blaze:8080"
|
||||||
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
DB_BLOCK_CACHE_SIZE: ${BLAZE_MEMORY_CAP}
|
||||||
|
CQL_EXPR_CACHE_SIZE: ${BLAZE_CQL_CACHE_CAP:-32}
|
||||||
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
volumes:
|
volumes:
|
||||||
- "blaze-data:/app/data"
|
- "blaze-data:/app/data"
|
||||||
@ -39,7 +40,7 @@ services:
|
|||||||
- "blaze"
|
- "blaze"
|
||||||
|
|
||||||
beam-proxy:
|
beam-proxy:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:develop
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
container_name: bridgehead-beam-proxy
|
container_name: bridgehead-beam-proxy
|
||||||
environment:
|
environment:
|
||||||
BROKER_URL: ${BROKER_URL}
|
BROKER_URL: ${BROKER_URL}
|
||||||
|
@ -2,13 +2,14 @@ version: "3.7"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
blaze-secondary:
|
blaze-secondary:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/blaze:0.28
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
container_name: bridgehead-ccp-blaze-secondary
|
container_name: bridgehead-ccp-blaze-secondary
|
||||||
environment:
|
environment:
|
||||||
BASE_URL: "http://bridgehead-ccp-blaze-secondary:8080"
|
BASE_URL: "http://bridgehead-ccp-blaze-secondary:8080"
|
||||||
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
DB_BLOCK_CACHE_SIZE: ${BLAZE_MEMORY_CAP}
|
||||||
|
CQL_EXPR_CACHE_SIZE: ${BLAZE_CQL_CACHE_CAP:-32}
|
||||||
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
volumes:
|
volumes:
|
||||||
- "blaze-secondary-data:/app/data"
|
- "blaze-secondary-data:/app/data"
|
||||||
|
@ -151,7 +151,7 @@ services:
|
|||||||
--pass-access-token=false
|
--pass-access-token=false
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.oauth2_proxy.rule=Host(`${HOST}`) && PathPrefix(`/oauth2`)"
|
- "traefik.http.routers.oauth2_proxy.rule=PathPrefix(`/oauth2`)"
|
||||||
- "traefik.http.services.oauth2_proxy.loadbalancer.server.port=4180"
|
- "traefik.http.services.oauth2_proxy.loadbalancer.server.port=4180"
|
||||||
- "traefik.http.routers.oauth2_proxy.tls=true"
|
- "traefik.http.routers.oauth2_proxy.tls=true"
|
||||||
environment:
|
environment:
|
||||||
|
@ -33,7 +33,7 @@ if [ "$ENABLE_DATASHIELD" == true ]; then
|
|||||||
echo "$sites" | docker_jq -n --args '[{
|
echo "$sites" | docker_jq -n --args '[{
|
||||||
"external": "'"$SITE_ID"':443",
|
"external": "'"$SITE_ID"':443",
|
||||||
"internal": "opal:8443",
|
"internal": "opal:8443",
|
||||||
"allowed": input | map("datashield-connect.\(.).'"$BROKER_ID"'")
|
"allowed": input | map("\(.).'"$BROKER_ID"'")
|
||||||
}]' >/tmp/bridgehead/opal-map/local.json
|
}]' >/tmp/bridgehead/opal-map/local.json
|
||||||
if [ "$USER" == "root" ]; then
|
if [ "$USER" == "root" ]; then
|
||||||
chown -R bridgehead:docker /tmp/bridgehead
|
chown -R bridgehead:docker /tmp/bridgehead
|
||||||
|
@ -10,5 +10,6 @@
|
|||||||
"essen",
|
"essen",
|
||||||
"dktk-datashield-test",
|
"dktk-datashield-test",
|
||||||
"dktk-test",
|
"dktk-test",
|
||||||
"mannheim"
|
"mannheim",
|
||||||
|
"central-ds-orchestrator"
|
||||||
]
|
]
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
if [ "$ENABLE_FHIR2SQL" == true ]; then
|
if [ "$ENABLE_FHIR2SQL" == true ]; then
|
||||||
log INFO "Dashboard setup detected -- will start Dashboard backend and FHIR2SQL service."
|
log INFO "Dashboard setup detected -- will start Dashboard backend and FHIR2SQL service."
|
||||||
OVERRIDE+=" -f ./$PROJECT/modules/fhir2sql-compose.yml"
|
OVERRIDE+=" -f ./$PROJECT/modules/fhir2sql-compose.yml"
|
||||||
DASHBOARD_DB_PASSWORD="$(echo \"This is a salt string to generate one consistent password for the Dashboard database. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
DASHBOARD_DB_PASSWORD="$(generate_simple_password 'fhir2sql')"
|
||||||
fi
|
fi
|
||||||
|
@ -19,10 +19,18 @@ services:
|
|||||||
- traefik-forward-auth
|
- traefik-forward-auth
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
|
# Router with Authentication
|
||||||
- "traefik.http.routers.id-manager.rule=PathPrefix(`/id-manager`)"
|
- "traefik.http.routers.id-manager.rule=PathPrefix(`/id-manager`)"
|
||||||
- "traefik.http.services.id-manager.loadbalancer.server.port=8080"
|
|
||||||
- "traefik.http.routers.id-manager.tls=true"
|
- "traefik.http.routers.id-manager.tls=true"
|
||||||
- "traefik.http.routers.id-manager.middlewares=traefik-forward-auth-idm"
|
- "traefik.http.routers.id-manager.middlewares=traefik-forward-auth-idm"
|
||||||
|
- "traefik.http.routers.id-manager.service=id-manager-service"
|
||||||
|
# Router without Authentication
|
||||||
|
- "traefik.http.routers.id-manager-compatibility.rule=PathPrefix(`/id-manager/paths/translator/getIds`)"
|
||||||
|
- "traefik.http.routers.id-manager-compatibility.tls=true"
|
||||||
|
- "traefik.http.routers.id-manager-compatibility.service=id-manager-service"
|
||||||
|
# Definition of Service
|
||||||
|
- "traefik.http.services.id-manager-service.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.services.id-manager-service.loadbalancer.server.scheme=http"
|
||||||
|
|
||||||
patientlist:
|
patientlist:
|
||||||
image: docker.verbis.dkfz.de/bridgehead/mainzelliste
|
image: docker.verbis.dkfz.de/bridgehead/mainzelliste
|
||||||
@ -57,7 +65,7 @@ services:
|
|||||||
- "/tmp/bridgehead/patientlist/:/docker-entrypoint-initdb.d/"
|
- "/tmp/bridgehead/patientlist/:/docker-entrypoint-initdb.d/"
|
||||||
|
|
||||||
traefik-forward-auth:
|
traefik-forward-auth:
|
||||||
image: docker.verbis.dkfz.de/cache/oauth2-proxy/oauth2-proxy:v7.6.0
|
image: docker.verbis.dkfz.de/cache/oauth2-proxy/oauth2-proxy:latest
|
||||||
environment:
|
environment:
|
||||||
- http_proxy=http://forward_proxy:3128
|
- http_proxy=http://forward_proxy:3128
|
||||||
- https_proxy=http://forward_proxy:3128
|
- https_proxy=http://forward_proxy:3128
|
||||||
@ -67,6 +75,7 @@ services:
|
|||||||
- OAUTH2_PROXY_CLIENT_ID=bridgehead-${SITE_ID}
|
- OAUTH2_PROXY_CLIENT_ID=bridgehead-${SITE_ID}
|
||||||
- OAUTH2_PROXY_CLIENT_SECRET=${IDMANAGER_AUTH_CLIENT_SECRET}
|
- OAUTH2_PROXY_CLIENT_SECRET=${IDMANAGER_AUTH_CLIENT_SECRET}
|
||||||
- OAUTH2_PROXY_COOKIE_SECRET=${IDMANAGER_AUTH_COOKIE_SECRET}
|
- OAUTH2_PROXY_COOKIE_SECRET=${IDMANAGER_AUTH_COOKIE_SECRET}
|
||||||
|
- OAUTH2_PROXY_COOKIE_NAME=_BRIDGEHEAD_oauth2_idm
|
||||||
- OAUTH2_PROXY_COOKIE_DOMAINS=.${HOST}
|
- OAUTH2_PROXY_COOKIE_DOMAINS=.${HOST}
|
||||||
- OAUTH2_PROXY_HTTP_ADDRESS=:4180
|
- OAUTH2_PROXY_HTTP_ADDRESS=:4180
|
||||||
- OAUTH2_PROXY_REVERSE_PROXY=true
|
- OAUTH2_PROXY_REVERSE_PROXY=true
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
function idManagementSetup() {
|
function idManagementSetup() {
|
||||||
if [ -n "$IDMANAGER_UPLOAD_APIKEY" ]; then
|
if [ -n "$IDMANAGER_UPLOAD_APIKEY" ]; then
|
||||||
log INFO "id-management setup detected -- will start id-management (mainzelliste & magicpl)."
|
log INFO "id-management setup detected -- will start id-management (mainzelliste & magicpl)."
|
||||||
OVERRIDE+=" -f ./$PROJECT/modules/id-management-compose.yml"
|
OVERRIDE+=" -f ./ccp/modules/id-management-compose.yml"
|
||||||
|
|
||||||
# Auto Generate local Passwords
|
# Auto Generate local Passwords
|
||||||
PATIENTLIST_POSTGRES_PASSWORD="$(echo \"id-management-module-db-password-salt\" | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
PATIENTLIST_POSTGRES_PASSWORD="$(echo \"id-management-module-db-password-salt\" | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
||||||
|
@ -7,7 +7,7 @@ function obds2fhirRestSetup() {
|
|||||||
log ERROR "Missing ID-Management Module! Fix this by setting up ID Management:"
|
log ERROR "Missing ID-Management Module! Fix this by setting up ID Management:"
|
||||||
PATIENTLIST_URL=" "
|
PATIENTLIST_URL=" "
|
||||||
fi
|
fi
|
||||||
OVERRIDE+=" -f ./$PROJECT/modules/obds2fhir-rest-compose.yml"
|
OVERRIDE+=" -f ./ccp/modules/obds2fhir-rest-compose.yml"
|
||||||
LOCAL_SALT="$(echo \"local-random-salt\" | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
LOCAL_SALT="$(echo \"local-random-salt\" | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
3
ccp/vars
3
ccp/vars
@ -18,8 +18,7 @@ OIDC_URL="https://login.verbis.dkfz.de"
|
|||||||
OIDC_ISSUER_URL="${OIDC_URL}/realms/${OIDC_REALM}"
|
OIDC_ISSUER_URL="${OIDC_URL}/realms/${OIDC_REALM}"
|
||||||
OIDC_GROUP_CLAIM="groups"
|
OIDC_GROUP_CLAIM="groups"
|
||||||
|
|
||||||
POSTGRES_TAG=15.6-alpine
|
source versions
|
||||||
|
|
||||||
for module in $PROJECT/modules/*.sh
|
for module in $PROJECT/modules/*.sh
|
||||||
do
|
do
|
||||||
log DEBUG "sourcing $module"
|
log DEBUG "sourcing $module"
|
||||||
|
66
dhki/docker-compose.yml
Normal file
66
dhki/docker-compose.yml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
blaze:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
|
container_name: bridgehead-dhki-blaze
|
||||||
|
environment:
|
||||||
|
BASE_URL: "http://bridgehead-dhki-blaze:8080"
|
||||||
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
|
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
||||||
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
|
volumes:
|
||||||
|
- "blaze-data:/app/data"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.blaze_dhki.rule=PathPrefix(`/dhki-localdatamanagement`)"
|
||||||
|
- "traefik.http.middlewares.dhki_b_strip.stripprefix.prefixes=/dhki-localdatamanagement"
|
||||||
|
- "traefik.http.services.blaze_dhki.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.routers.blaze_dhki.middlewares=dhki_b_strip,auth"
|
||||||
|
- "traefik.http.routers.blaze_dhki.tls=true"
|
||||||
|
|
||||||
|
focus:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/focus:${FOCUS_TAG}
|
||||||
|
container_name: bridgehead-focus
|
||||||
|
environment:
|
||||||
|
API_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
BEAM_APP_ID_LONG: focus.${PROXY_ID}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
BLAZE_URL: "http://bridgehead-dhki-blaze:8080/fhir/"
|
||||||
|
BEAM_PROXY_URL: http://beam-proxy:8081
|
||||||
|
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
||||||
|
EPSILON: 0.28
|
||||||
|
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
||||||
|
volumes:
|
||||||
|
- /srv/docker/bridgehead/dhki/queries_to_cache.conf:/queries_to_cache.conf
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
- "blaze"
|
||||||
|
|
||||||
|
beam-proxy:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
|
container_name: bridgehead-beam-proxy
|
||||||
|
environment:
|
||||||
|
BROKER_URL: ${BROKER_URL}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
APP_focus_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
PRIVKEY_FILE: /run/secrets/proxy.pem
|
||||||
|
ALL_PROXY: http://forward_proxy:3128
|
||||||
|
TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs
|
||||||
|
ROOTCERT_FILE: /conf/root.crt.pem
|
||||||
|
secrets:
|
||||||
|
- proxy.pem
|
||||||
|
depends_on:
|
||||||
|
- "forward_proxy"
|
||||||
|
volumes:
|
||||||
|
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
|
||||||
|
- /srv/docker/bridgehead/dhki/root.crt.pem:/conf/root.crt.pem:ro
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
blaze-data:
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
proxy.pem:
|
||||||
|
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem
|
2
dhki/queries_to_cache.conf
Normal file
2
dhki/queries_to_cache.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwpjb2Rlc3lzdGVtIFNhbXBsZU1hdGVyaWFsVHlwZTogJ2h0dHBzOi8vZmhpci5iYm1yaS5kZS9Db2RlU3lzdGVtL1NhbXBsZU1hdGVyaWFsVHlwZScKCmNvZGVzeXN0ZW0gbG9pbmM6ICdodHRwOi8vbG9pbmMub3JnJwoKY29udGV4dCBQYXRpZW50CgpES1RLX1NUUkFUX0dFTkRFUl9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0FHRV9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RFQ0VBU0VEX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfRElBR05PU0lTX1NUUkFUSUZJRVIKCkRIS0lfU1RSQVRfU1BFQ0lNRU5fU1RSQVRJRklFUgoKREtUS19TVFJBVF9QUk9DRURVUkVfU1RSQVRJRklFUgoKREhLSV9TVFJBVF9NRURJQ0FUSU9OX1NUUkFUSUZJRVIKCkRIS0lfU1RSQVRfRU5DT1VOVEVSX1NUUkFUSUZJRVIKREtUS19TVFJBVF9ERUZfSU5fSU5JVElBTF9QT1BVTEFUSU9OCnRydWU=
|
||||||
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwpjb2Rlc3lzdGVtIFNhbXBsZU1hdGVyaWFsVHlwZTogJ2h0dHBzOi8vZmhpci5iYm1yaS5kZS9Db2RlU3lzdGVtL1NhbXBsZU1hdGVyaWFsVHlwZScKCmNvZGVzeXN0ZW0gbG9pbmM6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtIGljZDEwOiAnaHR0cDovL2ZoaXIuZGUvQ29kZVN5c3RlbS9iZmFybS9pY2QtMTAtZ20nCmNvZGVzeXN0ZW0gbW9ycGg6ICd1cm46b2lkOjIuMTYuODQwLjEuMTEzODgzLjYuNDMuMScKCmNvbnRleHQgUGF0aWVudAoKREtUS19TVFJBVF9HRU5ERVJfU1RSQVRJRklFUgoKREtUS19TVFJBVF9BR0VfU1RSQVRJRklFUgoKREtUS19TVFJBVF9ERUNFQVNFRF9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RJQUdOT1NJU19TVFJBVElGSUVSCgpESEtJX1NUUkFUX1NQRUNJTUVOX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfUFJPQ0VEVVJFX1NUUkFUSUZJRVIKCkRIS0lfU1RSQVRfTUVESUNBVElPTl9TVFJBVElGSUVSCgpESEtJX1NUUkFUX0VOQ09VTlRFUl9TVFJBVElGSUVSCkRLVEtfU1RSQVRfREVGX0lOX0lOSVRJQUxfUE9QVUxBVElPTgooKChleGlzdHMgW0NvbmRpdGlvbjogQ29kZSAnQzM0LjknIGZyb20gaWNkMTBdKSBvcgooZXhpc3RzIFtDb25kaXRpb246IENvZGUgJ0MzNC44JyBmcm9tIGljZDEwXSkgb3IKKGV4aXN0cyBbQ29uZGl0aW9uOiBDb2RlICdDMzQuMCcgZnJvbSBpY2QxMF0pIG9yCihleGlzdHMgW0NvbmRpdGlvbjogQ29kZSAnQzM0LjInIGZyb20gaWNkMTBdKSBvcgooZXhpc3RzIFtDb25kaXRpb246IENvZGUgJ0MzNC4xJyBmcm9tIGljZDEwXSkgb3IKKGV4aXN0cyBbQ29uZGl0aW9uOiBDb2RlICdDMzQuMycgZnJvbSBpY2QxMF0pKSBhbmQKKChleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODE0MC8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MTQxLzMnKSBvcgooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzgxNDMvMycpIG9yCihleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODE0Ny8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MjUwLzMnKSBvcgooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzgyNTEvMycpIG9yCihleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODI1Mi8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MjUzLzMnKSBvcgooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzgyNTUvMycpIG9yCihleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODI2MC8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MzEwLzMnKSBvcgooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzgzMzMvMycpIG9yCihleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODQ3MC8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4NDgwLzMnKSBvcgooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzg0OTAvMycpIG9yCihleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODU1MC8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MDUyLzMnKSkp
|
20
dhki/root.crt.pem
Normal file
20
dhki/root.crt.pem
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDNTCCAh2gAwIBAgIUSWUPebUMNfJvPKMjdgX+WiH+OXgwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFjEUMBIGA1UEAxMLQnJva2VyLVJvb3QwHhcNMjQwMTA1MDg1NTM4WhcNMzQw
|
||||||
|
MTAyMDg1NjA4WjAWMRQwEgYDVQQDEwtCcm9rZXItUm9vdDCCASIwDQYJKoZIhvcN
|
||||||
|
AQEBBQADggEPADCCAQoCggEBAL/nvo9Bn1/6Z/K4BKoLM6/mVziM4cmXTVx4npVz
|
||||||
|
pnptwPPFU4rz47akRZ6ZMD5MO0bsyvaxG1nwVrW3aAGC42JIGTdZHKwMKrd35sxw
|
||||||
|
k3YlGJagGUs+bKHUCL55OcSmyDWlh/UhA8+eeJWjOt9u0nYXv+vi+N4JSHA0oC9D
|
||||||
|
bTF1v+7blrTQagf7PTPSF3pe22iXOjJYdOkZMWoMoNAjn6F958fkLNLY3csOZwvP
|
||||||
|
/3eyNNawyAEPWeIm33Zk630NS8YHggz6WCqwXvuaKb6910mRP8jgauaYsqgsOyDt
|
||||||
|
pbWuvk//aZWdGeN9RNsAA8eGppygiwm/m9eRC6I0shDwv6ECAwEAAaN7MHkwDgYD
|
||||||
|
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFn/dbW1J3ry
|
||||||
|
7TBzbKo3H4vJr2MiMB8GA1UdIwQYMBaAFFn/dbW1J3ry7TBzbKo3H4vJr2MiMBYG
|
||||||
|
A1UdEQQPMA2CC0Jyb2tlci1Sb290MA0GCSqGSIb3DQEBCwUAA4IBAQCa2V8B8aad
|
||||||
|
XNDS1EUIi9oMdvGvkolcdFwx9fI++qu9xSIaZs5GETHck3oYKZF0CFP5ESnKDn5w
|
||||||
|
enWgm5M0y+hVZppzB163WmET1efBXwrdyn8j4336NjX352h63JGWCaI2CfZ1qG1p
|
||||||
|
kf5W9CVXllSFaJe5r994ovgyHvK2ucWwe8l8iMJbQhH79oKi/9uJMCD6aUXnpg1K
|
||||||
|
nPHW1lsVx6foqYWijdBdtFU2i7LSH2OYo0nb1PgRnY/SABV63JHfJnqW9dZy4f7G
|
||||||
|
rpsvvrmFrKmEnCZH0n6qveY3Z5bMD94Yx0ebkCTYEqAw3pV65gwxrzBTpEg6dgF0
|
||||||
|
eG0eKFUS0REJ
|
||||||
|
-----END CERTIFICATE-----
|
19
dhki/vars
Normal file
19
dhki/vars
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
BROKER_ID=broker.hector.dkfz.de
|
||||||
|
BROKER_URL=https://${BROKER_ID}
|
||||||
|
PROXY_ID=${SITE_ID}.${BROKER_ID}
|
||||||
|
FOCUS_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
|
||||||
|
FOCUS_RETRY_COUNT=${FOCUS_RETRY_COUNT:-64}
|
||||||
|
SUPPORT_EMAIL=support-ccp@dkfz-heidelberg.de
|
||||||
|
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
||||||
|
|
||||||
|
BROKER_URL_FOR_PREREQ=$BROKER_URL
|
||||||
|
|
||||||
|
source versions
|
||||||
|
for module in ccp/modules/*.sh
|
||||||
|
do
|
||||||
|
log DEBUG "sourcing $module"
|
||||||
|
source $module
|
||||||
|
done
|
||||||
|
|
||||||
|
idManagementSetup
|
||||||
|
obds2fhirRestSetup
|
63
itcc/docker-compose.yml
Normal file
63
itcc/docker-compose.yml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
blaze:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
|
container_name: bridgehead-itcc-blaze
|
||||||
|
environment:
|
||||||
|
BASE_URL: "http://bridgehead-itcc-blaze:8080"
|
||||||
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
|
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
||||||
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
|
volumes:
|
||||||
|
- "blaze-data:/app/data"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.blaze_itcc.rule=PathPrefix(`/itcc-localdatamanagement`)"
|
||||||
|
- "traefik.http.middlewares.itcc_b_strip.stripprefix.prefixes=/itcc-localdatamanagement"
|
||||||
|
- "traefik.http.services.blaze_itcc.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.routers.blaze_itcc.middlewares=itcc_b_strip,auth"
|
||||||
|
- "traefik.http.routers.blaze_itcc.tls=true"
|
||||||
|
|
||||||
|
focus:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/focus:${FOCUS_TAG}
|
||||||
|
container_name: bridgehead-focus
|
||||||
|
environment:
|
||||||
|
API_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
BEAM_APP_ID_LONG: focus.${PROXY_ID}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
BLAZE_URL: "http://bridgehead-itcc-blaze:8080/fhir/"
|
||||||
|
BEAM_PROXY_URL: http://beam-proxy:8081
|
||||||
|
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
||||||
|
EPSILON: 0.28
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
- "blaze"
|
||||||
|
|
||||||
|
beam-proxy:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
|
container_name: bridgehead-beam-proxy
|
||||||
|
environment:
|
||||||
|
BROKER_URL: ${BROKER_URL}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
APP_focus_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
PRIVKEY_FILE: /run/secrets/proxy.pem
|
||||||
|
ALL_PROXY: http://forward_proxy:3128
|
||||||
|
TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs
|
||||||
|
ROOTCERT_FILE: /conf/root.crt.pem
|
||||||
|
secrets:
|
||||||
|
- proxy.pem
|
||||||
|
depends_on:
|
||||||
|
- "forward_proxy"
|
||||||
|
volumes:
|
||||||
|
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
|
||||||
|
- /srv/docker/bridgehead/itcc/root.crt.pem:/conf/root.crt.pem:ro
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
blaze-data:
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
proxy.pem:
|
||||||
|
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem
|
33
itcc/modules/lens-compose.yml
Normal file
33
itcc/modules/lens-compose.yml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
version: "3.7"
|
||||||
|
services:
|
||||||
|
landing:
|
||||||
|
container_name: lens_federated-search
|
||||||
|
image: docker.verbis.dkfz.de/ccp/lens:${SITE_ID}
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.landing.rule=PathPrefix(`/`)"
|
||||||
|
- "traefik.http.services.landing.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.landing.tls=true"
|
||||||
|
|
||||||
|
spot:
|
||||||
|
image: docker.verbis.dkfz.de/ccp-private/central-spot
|
||||||
|
environment:
|
||||||
|
BEAM_SECRET: "${FOCUS_BEAM_SECRET_SHORT}"
|
||||||
|
BEAM_URL: http://beam-proxy:8081
|
||||||
|
BEAM_PROXY_ID: ${SITE_ID}
|
||||||
|
BEAM_BROKER_ID: ${BROKER_ID}
|
||||||
|
BEAM_APP_ID: "focus"
|
||||||
|
PROJECT_METADATA: "dktk_supervisors"
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.services.spot.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolallowmethods=GET,OPTIONS,POST"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolalloworiginlist=https://${HOST}"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolallowcredentials=true"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolmaxage=-1"
|
||||||
|
- "traefik.http.routers.spot.rule=Host(`${HOST}`) && PathPrefix(`/backend`)"
|
||||||
|
- "traefik.http.middlewares.stripprefix_spot.stripprefix.prefixes=/backend"
|
||||||
|
- "traefik.http.routers.spot.tls=true"
|
||||||
|
- "traefik.http.routers.spot.middlewares=corsheaders2,stripprefix_spot"
|
5
itcc/modules/lens-setup.sh
Normal file
5
itcc/modules/lens-setup.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -n "$ENABLE_LENS" ];then
|
||||||
|
OVERRIDE+=" -f ./$PROJECT/modules/lens-compose.yml"
|
||||||
|
fi
|
20
itcc/root.crt.pem
Normal file
20
itcc/root.crt.pem
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDNTCCAh2gAwIBAgIUW34NEb7bl0+Ywx+I1VKtY5vpAOowDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFjEUMBIGA1UEAxMLQnJva2VyLVJvb3QwHhcNMjQwMTIyMTMzNzEzWhcNMzQw
|
||||||
|
MTE5MTMzNzQzWjAWMRQwEgYDVQQDEwtCcm9rZXItUm9vdDCCASIwDQYJKoZIhvcN
|
||||||
|
AQEBBQADggEPADCCAQoCggEBAL5UegLXTlq3XRRj8LyFs3aF0tpRPVoW9RXp5kFI
|
||||||
|
TnBvyO6qjNbMDT/xK+4iDtEX4QQUvsxAKxfXbe9i1jpdwjgH7JHaSGm2IjAiKLqO
|
||||||
|
OXQQtguWwfNmmp96Ql13ArLj458YH08xMO/w2NFWGwB/hfARa4z/T0afFuc/tKJf
|
||||||
|
XbGCG9xzJ9tmcG45QN8NChGhVvaTweNdVxGWlpHxmi0Mn8OM9CEuB7nPtTTiBuiu
|
||||||
|
pRC2zVVmNjVp4ktkAqL7IHOz+/F5nhiz6tOika9oD3376Xj055lPznLcTQn2+4d7
|
||||||
|
K7ZrBopCFxIQPjkgmYRLfPejbpdUjK1UVJw7hbWkqWqH7JMCAwEAAaN7MHkwDgYD
|
||||||
|
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGjvRcaIP4HM
|
||||||
|
poIguUAK9YL2n7fbMB8GA1UdIwQYMBaAFGjvRcaIP4HMpoIguUAK9YL2n7fbMBYG
|
||||||
|
A1UdEQQPMA2CC0Jyb2tlci1Sb290MA0GCSqGSIb3DQEBCwUAA4IBAQCbzycJSaDm
|
||||||
|
AXXNJqQ88djrKs5MDXS8RIjS/cu2ayuLaYDe+BzVmUXNA0Vt9nZGdaz63SLLcjpU
|
||||||
|
fNSxBfKbwmf7s30AK8Cnfj9q4W/BlBeVizUHQsg1+RQpDIdMrRQrwkXv8mfLw+w5
|
||||||
|
3oaXNW6W/8KpBp/H8TBZ6myl6jCbeR3T8EMXBwipMGop/1zkbF01i98Xpqmhx2+l
|
||||||
|
n+80ofPsSspOo5XmgCZym8CD/m/oFHmjcvOfpOCvDh4PZ+i37pmbSlCYoMpla3u/
|
||||||
|
7MJMP5lugfLBYNDN2p+V4KbHP/cApCDT5UWLOeAWjgiZQtHH5ilDeYqEc1oPjyJt
|
||||||
|
Rtup0MTxSJtN
|
||||||
|
-----END CERTIFICATE-----
|
15
itcc/vars
Normal file
15
itcc/vars
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
BROKER_ID=test-no-real-data.broker.samply.de
|
||||||
|
BROKER_URL=https://${BROKER_ID}
|
||||||
|
PROXY_ID=${SITE_ID}.${BROKER_ID}
|
||||||
|
FOCUS_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
|
||||||
|
FOCUS_RETRY_COUNT=${FOCUS_RETRY_COUNT:-64}
|
||||||
|
SUPPORT_EMAIL=arturo.macias@dkfz-heidelberg.de
|
||||||
|
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
||||||
|
BROKER_URL_FOR_PREREQ=$BROKER_URL
|
||||||
|
|
||||||
|
source versions
|
||||||
|
for module in $PROJECT/modules/*.sh
|
||||||
|
do
|
||||||
|
log DEBUG "sourcing $module"
|
||||||
|
source $module
|
||||||
|
done
|
67
kr/docker-compose.yml
Normal file
67
kr/docker-compose.yml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
landing:
|
||||||
|
deploy:
|
||||||
|
replicas: 0 #deactivate landing page
|
||||||
|
|
||||||
|
blaze:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/blaze:${BLAZE_TAG}
|
||||||
|
container_name: bridgehead-kr-blaze
|
||||||
|
environment:
|
||||||
|
BASE_URL: "http://bridgehead-kr-blaze:8080"
|
||||||
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
|
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
||||||
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
|
volumes:
|
||||||
|
- "blaze-data:/app/data"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.blaze_kr.rule=PathPrefix(`/kr-localdatamanagement`)"
|
||||||
|
- "traefik.http.middlewares.kr_b_strip.stripprefix.prefixes=/kr-localdatamanagement"
|
||||||
|
- "traefik.http.services.blaze_kr.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.routers.blaze_kr.middlewares=kr_b_strip,auth"
|
||||||
|
- "traefik.http.routers.blaze_kr.tls=true"
|
||||||
|
|
||||||
|
focus:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/focus:${FOCUS_TAG}
|
||||||
|
container_name: bridgehead-focus
|
||||||
|
environment:
|
||||||
|
API_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
BEAM_APP_ID_LONG: focus.${PROXY_ID}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
BLAZE_URL: "http://bridgehead-kr-blaze:8080/fhir/"
|
||||||
|
BEAM_PROXY_URL: http://beam-proxy:8081
|
||||||
|
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
||||||
|
EPSILON: 0.28
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
- "blaze"
|
||||||
|
|
||||||
|
beam-proxy:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
|
container_name: bridgehead-beam-proxy
|
||||||
|
environment:
|
||||||
|
BROKER_URL: ${BROKER_URL}
|
||||||
|
PROXY_ID: ${PROXY_ID}
|
||||||
|
APP_focus_KEY: ${FOCUS_BEAM_SECRET_SHORT}
|
||||||
|
PRIVKEY_FILE: /run/secrets/proxy.pem
|
||||||
|
ALL_PROXY: http://forward_proxy:3128
|
||||||
|
TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs
|
||||||
|
ROOTCERT_FILE: /conf/root.crt.pem
|
||||||
|
secrets:
|
||||||
|
- proxy.pem
|
||||||
|
depends_on:
|
||||||
|
- "forward_proxy"
|
||||||
|
volumes:
|
||||||
|
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
|
||||||
|
- /srv/docker/bridgehead/kr/root.crt.pem:/conf/root.crt.pem:ro
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
blaze-data:
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
proxy.pem:
|
||||||
|
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem
|
6
kr/modules/export-and-qb.curl-templates
Normal file
6
kr/modules/export-and-qb.curl-templates
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Full Excel Export
|
||||||
|
curl --location --request POST 'https://${HOST}/ccp-exporter/request?query=Patient&query-format=FHIR_PATH&template-id=ccp&output-format=EXCEL' \
|
||||||
|
--header 'x-api-key: ${EXPORT_API_KEY}'
|
||||||
|
|
||||||
|
# QB
|
||||||
|
curl --location --request POST 'https://${HOST}/ccp-reporter/generate?template-id=ccp'
|
67
kr/modules/exporter-compose.yml
Normal file
67
kr/modules/exporter-compose.yml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
exporter:
|
||||||
|
image: docker.verbis.dkfz.de/ccp/dktk-exporter:latest
|
||||||
|
container_name: bridgehead-ccp-exporter
|
||||||
|
environment:
|
||||||
|
JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC"
|
||||||
|
LOG_LEVEL: "INFO"
|
||||||
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}" # Set in exporter-setup.sh
|
||||||
|
CROSS_ORIGINS: "https://${HOST}"
|
||||||
|
EXPORTER_DB_USER: "exporter"
|
||||||
|
EXPORTER_DB_PASSWORD: "${EXPORTER_DB_PASSWORD}" # Set in exporter-setup.sh
|
||||||
|
EXPORTER_DB_URL: "jdbc:postgresql://exporter-db:5432/exporter"
|
||||||
|
HTTP_RELATIVE_PATH: "/ccp-exporter"
|
||||||
|
SITE: "${SITE_ID}"
|
||||||
|
HTTP_SERVLET_REQUEST_SCHEME: "https"
|
||||||
|
OPAL_PASSWORD: "${EXPORTER_OPAL_PASSWORD}"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.exporter_ccp.rule=PathPrefix(`/ccp-exporter`)"
|
||||||
|
- "traefik.http.services.exporter_ccp.loadbalancer.server.port=8092"
|
||||||
|
- "traefik.http.routers.exporter_ccp.tls=true"
|
||||||
|
- "traefik.http.middlewares.exporter_ccp_strip.stripprefix.prefixes=/ccp-exporter"
|
||||||
|
- "traefik.http.routers.exporter_ccp.middlewares=exporter_ccp_strip"
|
||||||
|
volumes:
|
||||||
|
- "/var/cache/bridgehead/ccp/exporter-files:/app/exporter-files/output"
|
||||||
|
|
||||||
|
exporter-db:
|
||||||
|
image: docker.verbis.dkfz.de/cache/postgres:${POSTGRES_TAG}
|
||||||
|
container_name: bridgehead-ccp-exporter-db
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: "exporter"
|
||||||
|
POSTGRES_PASSWORD: "${EXPORTER_DB_PASSWORD}" # Set in exporter-setup.sh
|
||||||
|
POSTGRES_DB: "exporter"
|
||||||
|
volumes:
|
||||||
|
# Consider removing this volume once we find a solution to save Lens-queries to be executed in the explorer.
|
||||||
|
- "/var/cache/bridgehead/ccp/exporter-db:/var/lib/postgresql/data"
|
||||||
|
|
||||||
|
reporter:
|
||||||
|
image: docker.verbis.dkfz.de/ccp/dktk-reporter:latest
|
||||||
|
container_name: bridgehead-ccp-reporter
|
||||||
|
environment:
|
||||||
|
JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC"
|
||||||
|
LOG_LEVEL: "INFO"
|
||||||
|
CROSS_ORIGINS: "https://${HOST}"
|
||||||
|
HTTP_RELATIVE_PATH: "/ccp-reporter"
|
||||||
|
SITE: "${SITE_ID}"
|
||||||
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}" # Set in exporter-setup.sh
|
||||||
|
EXPORTER_URL: "http://exporter:8092"
|
||||||
|
LOG_FHIR_VALIDATION: "false"
|
||||||
|
HTTP_SERVLET_REQUEST_SCHEME: "https"
|
||||||
|
|
||||||
|
# In this initial development state of the bridgehead, we are trying to have so many volumes as possible.
|
||||||
|
# However, in the first executions in the CCP sites, this volume seems to be very important. A report is
|
||||||
|
# a process that can take several hours, because it depends on the exporter.
|
||||||
|
# There is a risk that the bridgehead restarts, losing the already created export.
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- "/var/cache/bridgehead/ccp/reporter-files:/app/reports"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.reporter_ccp.rule=PathPrefix(`/ccp-reporter`)"
|
||||||
|
- "traefik.http.services.reporter_ccp.loadbalancer.server.port=8095"
|
||||||
|
- "traefik.http.routers.reporter_ccp.tls=true"
|
||||||
|
- "traefik.http.middlewares.reporter_ccp_strip.stripprefix.prefixes=/ccp-reporter"
|
||||||
|
- "traefik.http.routers.reporter_ccp.middlewares=reporter_ccp_strip"
|
8
kr/modules/exporter-setup.sh
Normal file
8
kr/modules/exporter-setup.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
if [ "$ENABLE_EXPORTER" == true ]; then
|
||||||
|
log INFO "Exporter setup detected -- will start Exporter service."
|
||||||
|
OVERRIDE+=" -f ./$PROJECT/modules/exporter-compose.yml"
|
||||||
|
EXPORTER_DB_PASSWORD="$(echo \"This is a salt string to generate one consistent password for the exporter. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
||||||
|
EXPORTER_API_KEY="$(echo \"This is a salt string to generate one consistent API KEY for the exporter. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 64)"
|
||||||
|
fi
|
35
kr/modules/lens-compose.yml
Normal file
35
kr/modules/lens-compose.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
version: "3.7"
|
||||||
|
services:
|
||||||
|
landing:
|
||||||
|
deploy:
|
||||||
|
replicas: 1 #reactivate if lens is in use
|
||||||
|
container_name: lens_federated-search
|
||||||
|
image: docker.verbis.dkfz.de/ccp/lens:${SITE_ID}
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.landing.rule=PathPrefix(`/`)"
|
||||||
|
- "traefik.http.services.landing.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.landing.tls=true"
|
||||||
|
|
||||||
|
spot:
|
||||||
|
image: docker.verbis.dkfz.de/ccp-private/central-spot
|
||||||
|
environment:
|
||||||
|
BEAM_SECRET: "${FOCUS_BEAM_SECRET_SHORT}"
|
||||||
|
BEAM_URL: http://beam-proxy:8081
|
||||||
|
BEAM_PROXY_ID: ${SITE_ID}
|
||||||
|
BEAM_BROKER_ID: ${BROKER_ID}
|
||||||
|
BEAM_APP_ID: "focus"
|
||||||
|
PROJECT_METADATA: "kr_supervisors"
|
||||||
|
depends_on:
|
||||||
|
- "beam-proxy"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.services.spot.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolallowmethods=GET,OPTIONS,POST"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolalloworiginlist=https://${HOST}"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolallowcredentials=true"
|
||||||
|
- "traefik.http.middlewares.corsheaders2.headers.accesscontrolmaxage=-1"
|
||||||
|
- "traefik.http.routers.spot.rule=Host(`${HOST}`) && PathPrefix(`/backend`)"
|
||||||
|
- "traefik.http.middlewares.stripprefix_spot.stripprefix.prefixes=/backend"
|
||||||
|
- "traefik.http.routers.spot.tls=true"
|
||||||
|
- "traefik.http.routers.spot.middlewares=corsheaders2,stripprefix_spot"
|
5
kr/modules/lens-setup.sh
Normal file
5
kr/modules/lens-setup.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -n "$ENABLE_LENS" ];then
|
||||||
|
OVERRIDE+=" -f ./$PROJECT/modules/lens-compose.yml"
|
||||||
|
fi
|
20
kr/modules/obds2fhir-rest-compose.yml
Normal file
20
kr/modules/obds2fhir-rest-compose.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
obds2fhir-rest:
|
||||||
|
container_name: bridgehead-obds2fhir-rest
|
||||||
|
image: docker.verbis.dkfz.de/ccp/obds2fhir-rest:main
|
||||||
|
environment:
|
||||||
|
IDTYPE: BK_${IDMANAGEMENT_FRIENDLY_ID}_L-ID
|
||||||
|
MAINZELLISTE_APIKEY: ${IDMANAGER_LOCAL_PATIENTLIST_APIKEY}
|
||||||
|
SALT: ${LOCAL_SALT}
|
||||||
|
KEEP_INTERNAL_ID: ${KEEP_INTERNAL_ID:-false}
|
||||||
|
MAINZELLISTE_URL: ${PATIENTLIST_URL:-http://patientlist:8080/patientlist}
|
||||||
|
restart: always
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.obds2fhir-rest.rule=PathPrefix(`/obds2fhir-rest`) || PathPrefix(`/adt2fhir-rest`)"
|
||||||
|
- "traefik.http.middlewares.obds2fhir-rest_strip.stripprefix.prefixes=/obds2fhir-rest,/adt2fhir-rest"
|
||||||
|
- "traefik.http.services.obds2fhir-rest.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.routers.obds2fhir-rest.tls=true"
|
||||||
|
- "traefik.http.routers.obds2fhir-rest.middlewares=obds2fhir-rest_strip,auth"
|
13
kr/modules/obds2fhir-rest-setup.sh
Normal file
13
kr/modules/obds2fhir-rest-setup.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function obds2fhirRestSetup() {
|
||||||
|
if [ -n "$ENABLE_OBDS2FHIR_REST" ]; then
|
||||||
|
log INFO "oBDS2FHIR-REST setup detected -- will start obds2fhir-rest module."
|
||||||
|
if [ ! -n "$IDMANAGER_UPLOAD_APIKEY" ]; then
|
||||||
|
log ERROR "Missing ID-Management Module! Fix this by setting up ID Management:"
|
||||||
|
PATIENTLIST_URL=" "
|
||||||
|
fi
|
||||||
|
OVERRIDE+=" -f ./$PROJECT/modules/obds2fhir-rest-compose.yml"
|
||||||
|
LOCAL_SALT="$(echo \"local-random-salt\" | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
||||||
|
fi
|
||||||
|
}
|
81
kr/modules/teiler-compose.yml
Normal file
81
kr/modules/teiler-compose.yml
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
teiler-orchestrator:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/teiler-orchestrator:latest
|
||||||
|
container_name: bridgehead-teiler-orchestrator
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.teiler_orchestrator_ccp.rule=PathPrefix(`/ccp-teiler`)"
|
||||||
|
- "traefik.http.services.teiler_orchestrator_ccp.loadbalancer.server.port=9000"
|
||||||
|
- "traefik.http.routers.teiler_orchestrator_ccp.tls=true"
|
||||||
|
- "traefik.http.middlewares.teiler_orchestrator_ccp_strip.stripprefix.prefixes=/ccp-teiler"
|
||||||
|
- "traefik.http.routers.teiler_orchestrator_ccp.middlewares=teiler_orchestrator_ccp_strip"
|
||||||
|
environment:
|
||||||
|
TEILER_BACKEND_URL: "https://${HOST}/ccp-teiler-backend"
|
||||||
|
TEILER_DASHBOARD_URL: "https://${HOST}/ccp-teiler-dashboard"
|
||||||
|
DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE_LOWER_CASE}"
|
||||||
|
HTTP_RELATIVE_PATH: "/ccp-teiler"
|
||||||
|
|
||||||
|
teiler-dashboard:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/teiler-dashboard:develop
|
||||||
|
container_name: bridgehead-teiler-dashboard
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.teiler_dashboard_ccp.rule=PathPrefix(`/ccp-teiler-dashboard`)"
|
||||||
|
- "traefik.http.services.teiler_dashboard_ccp.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.teiler_dashboard_ccp.tls=true"
|
||||||
|
- "traefik.http.middlewares.teiler_dashboard_ccp_strip.stripprefix.prefixes=/ccp-teiler-dashboard"
|
||||||
|
- "traefik.http.routers.teiler_dashboard_ccp.middlewares=teiler_dashboard_ccp_strip"
|
||||||
|
environment:
|
||||||
|
DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
|
||||||
|
TEILER_BACKEND_URL: "https://${HOST}/ccp-teiler-backend"
|
||||||
|
OIDC_URL: "${OIDC_URL}"
|
||||||
|
OIDC_REALM: "${OIDC_REALM}"
|
||||||
|
OIDC_CLIENT_ID: "${OIDC_PUBLIC_CLIENT_ID}"
|
||||||
|
OIDC_TOKEN_GROUP: "${OIDC_GROUP_CLAIM}"
|
||||||
|
TEILER_ADMIN_NAME: "${OPERATOR_FIRST_NAME} ${OPERATOR_LAST_NAME}"
|
||||||
|
TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}"
|
||||||
|
TEILER_ADMIN_PHONE: "${OPERATOR_PHONE}"
|
||||||
|
TEILER_PROJECT: "${PROJECT}"
|
||||||
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}"
|
||||||
|
TEILER_ORCHESTRATOR_URL: "https://${HOST}/ccp-teiler"
|
||||||
|
TEILER_DASHBOARD_HTTP_RELATIVE_PATH: "/ccp-teiler-dashboard"
|
||||||
|
TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/ccp-teiler"
|
||||||
|
TEILER_USER: "${OIDC_USER_GROUP}"
|
||||||
|
TEILER_ADMIN: "${OIDC_ADMIN_GROUP}"
|
||||||
|
REPORTER_DEFAULT_TEMPLATE_ID: "ccp-qb"
|
||||||
|
EXPORTER_DEFAULT_TEMPLATE_ID: "ccp"
|
||||||
|
|
||||||
|
|
||||||
|
teiler-backend:
|
||||||
|
image: docker.verbis.dkfz.de/ccp/dktk-teiler-backend:latest
|
||||||
|
container_name: bridgehead-teiler-backend
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.teiler_backend_ccp.rule=PathPrefix(`/ccp-teiler-backend`)"
|
||||||
|
- "traefik.http.services.teiler_backend_ccp.loadbalancer.server.port=8085"
|
||||||
|
- "traefik.http.routers.teiler_backend_ccp.tls=true"
|
||||||
|
- "traefik.http.middlewares.teiler_backend_ccp_strip.stripprefix.prefixes=/ccp-teiler-backend"
|
||||||
|
- "traefik.http.routers.teiler_backend_ccp.middlewares=teiler_backend_ccp_strip"
|
||||||
|
environment:
|
||||||
|
LOG_LEVEL: "INFO"
|
||||||
|
APPLICATION_PORT: "8085"
|
||||||
|
APPLICATION_ADDRESS: "${HOST}"
|
||||||
|
DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
|
||||||
|
CONFIG_ENV_VAR_PATH: "/run/secrets/ccp.conf"
|
||||||
|
TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/ccp-teiler"
|
||||||
|
TEILER_ORCHESTRATOR_URL: "https://${HOST}/ccp-teiler"
|
||||||
|
TEILER_DASHBOARD_DE_URL: "https://${HOST}/ccp-teiler-dashboard/de"
|
||||||
|
TEILER_DASHBOARD_EN_URL: "https://${HOST}/ccp-teiler-dashboard/en"
|
||||||
|
CENTRAX_URL: "${CENTRAXX_URL}"
|
||||||
|
HTTP_PROXY: "http://forward_proxy:3128"
|
||||||
|
ENABLE_MTBA: "${ENABLE_MTBA}"
|
||||||
|
ENABLE_DATASHIELD: "${ENABLE_DATASHIELD}"
|
||||||
|
secrets:
|
||||||
|
- ccp.conf
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
ccp.conf:
|
||||||
|
file: /etc/bridgehead/ccp.conf
|
9
kr/modules/teiler-setup.sh
Normal file
9
kr/modules/teiler-setup.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/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=DE
|
||||||
|
TEILER_DEFAULT_LANGUAGE_LOWER_CASE=${TEILER_DEFAULT_LANGUAGE,,}
|
||||||
|
add_public_oidc_redirect_url "/ccp-teiler/*"
|
||||||
|
fi
|
20
kr/root.crt.pem
Normal file
20
kr/root.crt.pem
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDNTCCAh2gAwIBAgIUW34NEb7bl0+Ywx+I1VKtY5vpAOowDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFjEUMBIGA1UEAxMLQnJva2VyLVJvb3QwHhcNMjQwMTIyMTMzNzEzWhcNMzQw
|
||||||
|
MTE5MTMzNzQzWjAWMRQwEgYDVQQDEwtCcm9rZXItUm9vdDCCASIwDQYJKoZIhvcN
|
||||||
|
AQEBBQADggEPADCCAQoCggEBAL5UegLXTlq3XRRj8LyFs3aF0tpRPVoW9RXp5kFI
|
||||||
|
TnBvyO6qjNbMDT/xK+4iDtEX4QQUvsxAKxfXbe9i1jpdwjgH7JHaSGm2IjAiKLqO
|
||||||
|
OXQQtguWwfNmmp96Ql13ArLj458YH08xMO/w2NFWGwB/hfARa4z/T0afFuc/tKJf
|
||||||
|
XbGCG9xzJ9tmcG45QN8NChGhVvaTweNdVxGWlpHxmi0Mn8OM9CEuB7nPtTTiBuiu
|
||||||
|
pRC2zVVmNjVp4ktkAqL7IHOz+/F5nhiz6tOika9oD3376Xj055lPznLcTQn2+4d7
|
||||||
|
K7ZrBopCFxIQPjkgmYRLfPejbpdUjK1UVJw7hbWkqWqH7JMCAwEAAaN7MHkwDgYD
|
||||||
|
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGjvRcaIP4HM
|
||||||
|
poIguUAK9YL2n7fbMB8GA1UdIwQYMBaAFGjvRcaIP4HMpoIguUAK9YL2n7fbMBYG
|
||||||
|
A1UdEQQPMA2CC0Jyb2tlci1Sb290MA0GCSqGSIb3DQEBCwUAA4IBAQCbzycJSaDm
|
||||||
|
AXXNJqQ88djrKs5MDXS8RIjS/cu2ayuLaYDe+BzVmUXNA0Vt9nZGdaz63SLLcjpU
|
||||||
|
fNSxBfKbwmf7s30AK8Cnfj9q4W/BlBeVizUHQsg1+RQpDIdMrRQrwkXv8mfLw+w5
|
||||||
|
3oaXNW6W/8KpBp/H8TBZ6myl6jCbeR3T8EMXBwipMGop/1zkbF01i98Xpqmhx2+l
|
||||||
|
n+80ofPsSspOo5XmgCZym8CD/m/oFHmjcvOfpOCvDh4PZ+i37pmbSlCYoMpla3u/
|
||||||
|
7MJMP5lugfLBYNDN2p+V4KbHP/cApCDT5UWLOeAWjgiZQtHH5ilDeYqEc1oPjyJt
|
||||||
|
Rtup0MTxSJtN
|
||||||
|
-----END CERTIFICATE-----
|
17
kr/vars
Normal file
17
kr/vars
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
BROKER_ID=test-no-real-data.broker.samply.de
|
||||||
|
BROKER_URL=https://${BROKER_ID}
|
||||||
|
PROXY_ID=${SITE_ID}.${BROKER_ID}
|
||||||
|
FOCUS_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
|
||||||
|
FOCUS_RETRY_COUNT=${FOCUS_RETRY_COUNT:-64}
|
||||||
|
SUPPORT_EMAIL=arturo.macias@dkfz-heidelberg.de
|
||||||
|
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
||||||
|
BROKER_URL_FOR_PREREQ=$BROKER_URL
|
||||||
|
|
||||||
|
source versions
|
||||||
|
for module in $PROJECT/modules/*.sh
|
||||||
|
do
|
||||||
|
log DEBUG "sourcing $module"
|
||||||
|
source $module
|
||||||
|
done
|
||||||
|
|
||||||
|
obds2fhirRestSetup
|
@ -54,7 +54,7 @@ checkOwner(){
|
|||||||
|
|
||||||
printUsage() {
|
printUsage() {
|
||||||
echo "Usage: bridgehead start|stop|logs|docker-logs|is-running|update|install|uninstall|adduser|enroll PROJECTNAME"
|
echo "Usage: bridgehead start|stop|logs|docker-logs|is-running|update|install|uninstall|adduser|enroll PROJECTNAME"
|
||||||
echo "PROJECTNAME should be one of ccp|bbmri"
|
echo "PROJECTNAME should be one of ccp|bbmri|cce|itcc|kr|dhki"
|
||||||
}
|
}
|
||||||
|
|
||||||
checkRequirements() {
|
checkRequirements() {
|
||||||
@ -170,9 +170,11 @@ optimizeBlazeMemoryUsage() {
|
|||||||
available_system_memory_chunks=$((BLAZE_MEMORY_CAP / 1000))
|
available_system_memory_chunks=$((BLAZE_MEMORY_CAP / 1000))
|
||||||
if [ $available_system_memory_chunks -eq 0 ]; then
|
if [ $available_system_memory_chunks -eq 0 ]; then
|
||||||
log WARN "Only ${BLAZE_MEMORY_CAP} system memory available for Blaze. If your Blaze stores more than 128000 fhir ressources it will run significally slower."
|
log WARN "Only ${BLAZE_MEMORY_CAP} system memory available for Blaze. If your Blaze stores more than 128000 fhir ressources it will run significally slower."
|
||||||
export BLAZE_RESOURCE_CACHE_CAP=128000;
|
export BLAZE_RESOURCE_CACHE_CAP=128000
|
||||||
|
export BLAZE_CQL_CACHE_CAP=32
|
||||||
else
|
else
|
||||||
export BLAZE_RESOURCE_CACHE_CAP=$((available_system_memory_chunks * 312500))
|
export BLAZE_RESOURCE_CACHE_CAP=$((available_system_memory_chunks * 312500))
|
||||||
|
export BLAZE_CQL_CACHE_CAP=$((($system_memory_in_mb/4)/16))
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,21 @@ case "$PROJECT" in
|
|||||||
bbmri)
|
bbmri)
|
||||||
site_configuration_repository_middle="git.verbis.dkfz.de/bbmri-bridgehead-configs/"
|
site_configuration_repository_middle="git.verbis.dkfz.de/bbmri-bridgehead-configs/"
|
||||||
;;
|
;;
|
||||||
|
cce)
|
||||||
|
site_configuration_repository_middle="git.verbis.dkfz.de/cce-sites/"
|
||||||
|
;;
|
||||||
|
itcc)
|
||||||
|
site_configuration_repository_middle="git.verbis.dkfz.de/itcc-sites/"
|
||||||
|
;;
|
||||||
|
dhki)
|
||||||
|
site_configuration_repository_middle="git.verbis.dkfz.de/dhki/"
|
||||||
|
;;
|
||||||
|
kr)
|
||||||
|
site_configuration_repository_middle="git.verbis.dkfz.de/krebsregister-sites/"
|
||||||
|
;;
|
||||||
|
dhki)
|
||||||
|
site_configuration_repository_middle="git.verbis.dkfz.de/dhki/"
|
||||||
|
;;
|
||||||
minimal)
|
minimal)
|
||||||
site_configuration_repository_middle="git.verbis.dkfz.de/minimal-bridgehead-configs/"
|
site_configuration_repository_middle="git.verbis.dkfz.de/minimal-bridgehead-configs/"
|
||||||
;;
|
;;
|
||||||
|
@ -3,14 +3,16 @@
|
|||||||
source lib/functions.sh
|
source lib/functions.sh
|
||||||
|
|
||||||
detectCompose
|
detectCompose
|
||||||
|
CONFIG_DIR="/etc/bridgehead/"
|
||||||
|
COMPONENT_DIR="/srv/docker/bridgehead/"
|
||||||
|
|
||||||
if ! id "bridgehead" &>/dev/null; then
|
if ! id "bridgehead" &>/dev/null; then
|
||||||
log ERROR "User bridgehead does not exist. Please run bridgehead install $PROJECT"
|
log ERROR "User bridgehead does not exist. Please run bridgehead install $PROJECT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
checkOwner /srv/docker/bridgehead bridgehead || exit 1
|
checkOwner "${CONFIG_DIR}" bridgehead || exit 1
|
||||||
checkOwner /etc/bridgehead bridgehead || exit 1
|
checkOwner "${COMPONENT_DIR}" bridgehead || exit 1
|
||||||
|
|
||||||
## Check if user is a su
|
## Check if user is a su
|
||||||
log INFO "Checking if all prerequisites are met ..."
|
log INFO "Checking if all prerequisites are met ..."
|
||||||
@ -32,31 +34,31 @@ fi
|
|||||||
log INFO "Checking configuration ..."
|
log INFO "Checking configuration ..."
|
||||||
|
|
||||||
## Download submodule
|
## Download submodule
|
||||||
if [ ! -d "/etc/bridgehead/" ]; then
|
if [ ! -d "${CONFIG_DIR}" ]; then
|
||||||
fail_and_report 1 "Please set up the config folder at /etc/bridgehead. Instruction are in the readme."
|
fail_and_report 1 "Please set up the config folder at ${CONFIG_DIR}. Instruction are in the readme."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: Check all required variables here in a generic loop
|
# TODO: Check all required variables here in a generic loop
|
||||||
|
|
||||||
#check if project env is present
|
#check if project env is present
|
||||||
if [ -d "/etc/bridgehead/${PROJECT}.conf" ]; then
|
if [ -d "${CONFIG_DIR}${PROJECT}.conf" ]; then
|
||||||
fail_and_report 1 "Project config not found. Please copy the template from ${PROJECT} and put it under /etc/bridgehead-config/${PROJECT}.conf."
|
fail_and_report 1 "Project config not found. Please copy the template from ${PROJECT} and put it under ${CONFIG_DIR}${PROJECT}.conf."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: Make sure you're in the right directory, or, even better, be independent from the working directory.
|
# TODO: Make sure you're in the right directory, or, even better, be independent from the working directory.
|
||||||
|
|
||||||
log INFO "Checking ssl cert for accessing bridgehead via https"
|
log INFO "Checking ssl cert for accessing bridgehead via https"
|
||||||
|
|
||||||
if [ ! -d "/etc/bridgehead/traefik-tls" ]; then
|
if [ ! -d "${CONFIG_DIR}traefik-tls" ]; then
|
||||||
log WARN "TLS certs for accessing bridgehead via https missing, we'll now create a self-signed one. Please consider getting an officially signed one (e.g. via Let's Encrypt ...) and put into /etc/bridgehead/traefik-tls"
|
log WARN "TLS certs for accessing bridgehead via https missing, we'll now create a self-signed one. Please consider getting an officially signed one (e.g. via Let's Encrypt ...) and put into /etc/bridgehead/traefik-tls"
|
||||||
mkdir -p /etc/bridgehead/traefik-tls
|
mkdir -p /etc/bridgehead/traefik-tls
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -e "/etc/bridgehead/traefik-tls/fullchain.pem" ]; then
|
if [ ! -e "${CONFIG_DIR}traefik-tls/fullchain.pem" ]; then
|
||||||
openssl req -x509 -newkey rsa:4096 -nodes -keyout /etc/bridgehead/traefik-tls/privkey.pem -out /etc/bridgehead/traefik-tls/fullchain.pem -days 3650 -subj "/CN=$HOST"
|
openssl req -x509 -newkey rsa:4096 -nodes -keyout /etc/bridgehead/traefik-tls/privkey.pem -out /etc/bridgehead/traefik-tls/fullchain.pem -days 3650 -subj "/CN=$HOST"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e /etc/bridgehead/vault.conf ]; then
|
if [ -e "${CONFIG_DIR}"vault.conf ]; then
|
||||||
if [ "$(stat -c "%a %U" /etc/bridgehead/vault.conf)" != "600 bridgehead" ]; then
|
if [ "$(stat -c "%a %U" /etc/bridgehead/vault.conf)" != "600 bridgehead" ]; then
|
||||||
fail_and_report 1 "/etc/bridgehead/vault.conf has wrong owner/permissions. To correct this issue, run chmod 600 /etc/bridgehead/vault.conf && chown bridgehead /etc/bridgehead/vault.conf."
|
fail_and_report 1 "/etc/bridgehead/vault.conf has wrong owner/permissions. To correct this issue, run chmod 600 /etc/bridgehead/vault.conf && chown bridgehead /etc/bridgehead/vault.conf."
|
||||||
fi
|
fi
|
||||||
@ -64,8 +66,8 @@ fi
|
|||||||
|
|
||||||
log INFO "Checking network access ($BROKER_URL_FOR_PREREQ) ..."
|
log INFO "Checking network access ($BROKER_URL_FOR_PREREQ) ..."
|
||||||
|
|
||||||
source /etc/bridgehead/${PROJECT}.conf
|
source "${CONFIG_DIR}${PROJECT}".conf
|
||||||
source ${PROJECT}/vars
|
source ${PROJECT}/vars vars
|
||||||
|
|
||||||
if [ "${PROJECT}" != "minimal" ]; then
|
if [ "${PROJECT}" != "minimal" ]; then
|
||||||
set +e
|
set +e
|
||||||
@ -92,10 +94,10 @@ if [ "${PROJECT}" != "minimal" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
checkPrivKey() {
|
checkPrivKey() {
|
||||||
if [ -e /etc/bridgehead/pki/${SITE_ID}.priv.pem ]; then
|
if [ -e "${CONFIG_DIR}pki/${SITE_ID}.priv.pem" ]; then
|
||||||
log INFO "Success - private key found."
|
log INFO "Success - private key found."
|
||||||
else
|
else
|
||||||
log ERROR "Unable to find private key at /etc/bridgehead/pki/${SITE_ID}.priv.pem. To fix, please run\n bridgehead enroll ${PROJECT}\nand follow the instructions."
|
log ERROR "Unable to find private key at ${CONFIG_DIR}pki/${SITE_ID}.priv.pem. To fix, please run\n bridgehead enroll ${PROJECT}\nand follow the instructions."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
@ -107,6 +109,11 @@ else
|
|||||||
checkPrivKey || exit 1
|
checkPrivKey || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
for dir in "${CONFIG_DIR}" "${COMPONENT_DIR}"; do
|
||||||
|
log INFO "Checking branch: $(cd $dir && echo "$dir $(git branch --show-current)")"
|
||||||
|
hc_send log "Checking branch: $(cd $dir && echo "$dir $(git branch --show-current)")"
|
||||||
|
done
|
||||||
|
|
||||||
log INFO "Success - all prerequisites are met!"
|
log INFO "Success - all prerequisites are met!"
|
||||||
hc_send log "Success - all prerequisites are met!"
|
hc_send log "Success - all prerequisites are met!"
|
||||||
|
|
||||||
|
@ -10,13 +10,13 @@ services:
|
|||||||
- --providers.docker=true
|
- --providers.docker=true
|
||||||
- --providers.docker.exposedbydefault=false
|
- --providers.docker.exposedbydefault=false
|
||||||
- --providers.file.directory=/configuration/
|
- --providers.file.directory=/configuration/
|
||||||
- --api.dashboard=true
|
- --api.dashboard=false
|
||||||
- --accesslog=true
|
- --accesslog=true
|
||||||
- --entrypoints.web.http.redirections.entrypoint.to=websecure
|
- --entrypoints.web.http.redirections.entrypoint.to=websecure
|
||||||
- --entrypoints.web.http.redirections.entrypoint.scheme=https
|
- --entrypoints.web.http.redirections.entrypoint.scheme=https
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.dashboard.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard`)"
|
- "traefik.http.routers.dashboard.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard/`)"
|
||||||
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
- "traefik.http.routers.dashboard.entrypoints=websecure"
|
||||||
- "traefik.http.routers.dashboard.service=api@internal"
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
- "traefik.http.routers.dashboard.tls=true"
|
- "traefik.http.routers.dashboard.tls=true"
|
||||||
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
dnpm-beam-proxy:
|
dnpm-beam-proxy:
|
||||||
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:develop
|
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:${BEAM_TAG}
|
||||||
container_name: bridgehead-dnpm-beam-proxy
|
container_name: bridgehead-dnpm-beam-proxy
|
||||||
environment:
|
environment:
|
||||||
BROKER_URL: ${DNPM_BROKER_URL}
|
BROKER_URL: ${DNPM_BROKER_URL}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
|
||||||
|
source versions
|
||||||
for module in $PROJECT/modules/*.sh
|
for module in $PROJECT/modules/*.sh
|
||||||
do
|
do
|
||||||
log DEBUG "sourcing $module"
|
log DEBUG "sourcing $module"
|
||||||
|
Reference in New Issue
Block a user