Compare commits

..

271 Commits

Author SHA1 Message Date
e5efd42861 fix: Disable landing page for now 2024-05-13 13:56:58 +00:00
f139965460 feat: Add root cert 2024-05-13 13:56:22 +00:00
0b42ff3e22 feat: leme setup 2024-05-13 11:47:00 +00:00
825f1a0b6c Added lemedart 2024-05-08 14:03:11 +02:00
714e46f082 Merge pull request #184 from samply/refactor/mainzelliste-return-ssl
Ensure Mainzelliste returns SSL in Responses
2024-04-29 08:33:00 +02:00
29c2b5ef69 refactor: Ensure Mainzelliste returns SSL in Responses
Before, the Mainzelliste would always use http instead of https then
referring to it self in responses
2024-04-26 11:29:38 +02:00
433edde75a Merge pull request #182 from samply/revert-177-maintenance/gbn
Revert "GBN maintenance mode"
2024-04-18 11:37:11 +02:00
fe3fc6204a Revert "GBN maintenance mode" 2024-04-18 11:01:04 +02:00
4b3b13b101 Merge pull request #177 from samply/maintenance/gbn
GBN maintenance mode
2024-04-17 20:47:35 +02:00
1afbf88a76 fix: use only bbmri broker 2024-04-16 09:23:42 +02:00
7d5f771181 Merge pull request #181 from samply/fix/secret-sync-args
fix: Generate public oidc client when there is no private client
2024-04-16 09:15:53 +02:00
f9a9baf13d fix: Generate public oidc client when there is no private client 2024-04-15 15:53:27 +02:00
d4259406a9 Merge pull request #180 from samply/fix/secret-sync
fix: Kill stale secret-sync instances
2024-04-15 13:18:38 +02:00
0745eab7b5 fix: Kill stale secret-sync instances 2024-04-15 13:14:46 +02:00
b404277083 Merge pull request #179 from samply/update/focus_0_4_4
update: dktk focus to 0.4.4
2024-04-15 11:02:31 +02:00
b767b3230f update: dktk focus to 0.4.4 2024-04-15 10:13:16 +02:00
dd653a7871 Merge pull request #178 from samply/PierreDelpy-patch-1
fix typo functions.sh
2024-04-15 09:09:47 +02:00
7418861e8c fix typo functions.sh 2024-04-15 09:08:56 +02:00
94b2c29bc7 GBN maintenance mode 2024-04-15 08:31:57 +02:00
ac3ff314ff Merge pull request #176 from samply/fix/bash-math
fix: Make math work on bash 4.2
2024-04-03 12:59:52 +02:00
2831fb9a22 fix: Make math work on bash 4.2 2024-04-02 14:36:23 +02:00
7934d912b8 Merge pull request #175 from samply/update/focus_0_4_2
Update focus to 0.4.2
2024-03-22 14:11:09 +01:00
70ad318b28 Update focus to 0.4.2 2024-03-22 13:59:42 +01:00
6da143f348 Merge pull request #164 from samply/feature/datashield
Exporter, Teiler, QB, DataSHIELD
2024-03-19 09:55:56 +01:00
4fac079aec Merge branch 'main' into feature/datashield 2024-03-19 09:52:40 +01:00
ec6f9302a1 Fix spelling of log WARN 2024-03-19 08:47:57 +00:00
896b24be9b Use bridgehead log functions in datashield setup 2024-03-19 08:45:50 +00:00
adf8e35ba9 Remove empty file (teiler-ui-compose.yml) 2024-03-18 19:22:10 +01:00
480bbe04e7 Changed: TEILER_DEFAULT_LANGUAGE 2024-03-18 16:47:40 +01:00
d8b9498ef9 Update minimal/docker-compose.yml
Co-authored-by: Jan <59206115+Threated@users.noreply.github.com>
2024-03-18 12:45:46 +01:00
3180d0fd76 Replace | openssl rsautl -sign with | sha1sum | openssl pkeyutl -sign 2024-03-18 12:44:34 +01:00
3a8df378a6 Update lib/functions.sh
Co-authored-by: Tobias Kussel <TKussel@users.noreply.github.com>
2024-03-18 12:36:09 +01:00
8cb33c2ddc Add warning if ENABLE_EXPORTER is not set or set to true 2024-03-18 12:18:19 +01:00
591d95e8db Remove empty line 2024-03-18 12:13:09 +01:00
349027e969 Rename oauth2_proxy docker service to oauth2-proxy 2024-03-18 12:12:16 +01:00
ff06782234 Remove todo 2024-03-18 12:04:04 +01:00
6969a7a3bc Remove unnecessary comment 2024-03-18 12:02:53 +01:00
8ea7da64b7 Merge pull request #165 from samply/fix/useCommonLanguage
Use always English Output of free command
2024-03-15 11:51:37 +01:00
6217e28590 fix: use always english output of free command 2024-03-15 11:48:25 +01:00
a87e9b9284 Merge pull request #154 from samply/refactor/blazePerformanceTuning
Optimize memory usage of Blaze
2024-03-15 09:55:34 +01:00
1f17fad366 fix: Dont change ownership of all files under /tmp/bridgehead and /var/cache/bridgehead 2024-03-14 14:09:21 +00:00
5a6322fcaa refactor: Move oauth2 proxy related things to datashield setup 2024-03-14 11:50:08 +00:00
f88dfb5654 Merge pull request #145 from samply/feature/datashield-central-keycloak
Remove local Keycloak Installation
2024-03-13 10:34:13 +01:00
1a233b81a4 Merge pull request #163 from samply/refactor/datashield
refactor: Move vars to their setup files
2024-03-13 10:13:10 +01:00
e1e523f1ac refactor: tune configuration of blaze according to system memory 2024-03-13 08:56:48 +01:00
7478d804df refactor: Move vars to their setup files 2024-03-11 10:34:05 +00:00
06033c8ea0 Merge pull request #162 from samply/update/focus_0_4_1
Updated ccp focus to 0.4.1
2024-03-08 16:26:41 +01:00
eeb17e7bfe feat: added optional resource cache cap 2024-03-08 13:33:30 +01:00
3223c22ff5 Merge pull request #161 from samply/fix/minimal-checks
Don't test clock skew and private key existance for minimal bridgeheads
2024-03-08 09:20:05 +01:00
ea6441fbcb Updated ccp focus to 0.4.1 2024-03-08 08:33:15 +01:00
b5c35211f6 Dont test clock skew and priv key for minimal bridgeheads 2024-03-05 14:58:06 +00:00
3777d4bf05 Add default value for BLAZE_MEMORY_CAP
Co-authored-by: Tobias Kussel <TKussel@users.noreply.github.com>
2024-03-05 10:35:16 +01:00
48e198fa0c Merge pull request #159 from samply/feat/dnpm-test-data-generation
Create env to control dnpm synthetic data generation
2024-02-29 08:18:13 +01:00
ad4430e480 Create env to control dnpm synthetic data generation 2024-02-28 10:11:03 +00:00
Jan
7245ddc720 Merge pull request #158 from samply/main
Fix focus version
2024-02-28 11:01:47 +01:00
443dcc6ec2 Merge pull request #157 from samply/fix/set-focus-version
fix: set focus version to 0.4.0
2024-02-28 10:56:00 +01:00
b2c933f5e5 fix: set focus version to 0.4.0 2024-02-28 10:52:57 +01:00
db9692795a fix: Fix if syntrax 2024-02-27 12:47:33 +01:00
74eb86f8af fix: Update permissions on update 2024-02-27 12:47:33 +01:00
fb4da54297 chore: Add mannheim to datashield sites 2024-02-27 12:47:33 +01:00
3e44dab9f2 chore: Remame datashield mappings to datashield sites 2024-02-27 12:47:33 +01:00
f72e7c7799 Changed: replace keycloak with oidc 2024-02-27 12:47:33 +01:00
19d0fefe94 Changed: master realm 2024-02-27 12:47:33 +01:00
9a1860ccf9 Removed: / from groups 2024-02-27 12:47:33 +01:00
8a197ce5c7 Add oauth2_proxy 2024-02-27 12:47:33 +01:00
29d2bc0440 Add Keycloak to MTBA 2024-02-27 12:47:33 +01:00
2eb56e66c8 Integrate central Keycloak in Teiler 2024-02-27 12:47:33 +01:00
ef8866b943 fix: Start oauth proxy after forward_proxy is ready 2024-02-27 12:47:33 +01:00
cea577bde5 Removed: login-compose 2024-02-27 12:47:33 +01:00
97a558dd46 Removed:Login-compose 2024-02-27 12:47:33 +01:00
1995997ac2 fix: Wait for forward proxy to start 2024-02-27 12:47:33 +01:00
64250d9d21 refactor: Use beam proxy directly as proxy 2024-02-27 12:47:33 +01:00
f3fa1ce712 fix: secret sync account for minimal override 2024-02-27 12:47:33 +01:00
b241feecdb fix: Pull oauth2 proxy from harbor 2024-02-27 12:47:33 +01:00
4a9427a1bd fix: Use forward proxy for secret sync 2024-02-27 12:47:33 +01:00
af3e5231d8 Added: Proxy to R-Studio oauth2-proxy 2024-02-27 12:47:32 +01:00
51e8888fe1 Use latest jq 2024-02-27 12:47:32 +01:00
32ffb33ab1 fix: Only give writeable dirs the docker role 2024-02-27 12:47:32 +01:00
224c1472b2 fix: Correctly set file permissions 2024-02-27 12:47:32 +01:00
01d3a38e18 refactor: Use jq from docker 2024-02-27 12:47:32 +01:00
92a1f4bb59 Add dsCCPhos 2024-02-27 12:47:32 +01:00
4e3cd68922 Only sync secrets on startup 2024-02-27 12:47:32 +01:00
c60c9fc4b4 fix: Use strong pw for opal 2024-02-27 12:47:32 +01:00
f0a05b12ad fix: Generate stable passwords 2024-02-27 12:47:32 +01:00
935c45b74d Added: volume for opal metadata db (III) 2024-02-27 12:47:32 +01:00
01efc6f9b9 Added: volume for opal metadata db (II) 2024-02-27 12:47:32 +01:00
e54475f704 Added: volume for opal metadata db 2024-02-27 12:47:32 +01:00
2f04e51f96 Add test sites 2024-02-27 12:47:32 +01:00
d62f5a404b Add central token manager beam id 2024-02-27 12:47:32 +01:00
977ad139f8 Added: allowed-groups 2024-02-27 12:47:32 +01:00
643e9e67a6 Added: Enable MTBA and Enable DataSHIELD to Teiler Backend 2024-02-27 12:47:32 +01:00
37f100dc01 Default values for MTBA 2024-02-27 12:47:32 +01:00
0793ea9fc6 Use develop version of mtba 2024-02-27 12:47:32 +01:00
44d7b34834 Use last version of mtba 2024-02-27 12:47:32 +01:00
f6dac7038f Only users of group DataSHIELD can use R-Studio 2024-02-27 12:47:32 +01:00
8e5ddc493c teiler-orchestrator and teiler-dashboard latest 2024-02-27 12:47:32 +01:00
Jan
fa141f8e86 fix: undo permission changes on startup 2024-02-27 12:47:31 +01:00
Jan
2a024e751d fix: only change permissions on related files 2024-02-27 12:47:31 +01:00
d3da426610 fix: opal ssl cert 2024-02-27 12:47:31 +01:00
b34f4f2a0f fix: chown syntax 2024-02-27 12:47:31 +01:00
1edcdce5c6 fix: beam connect site renaming 2024-02-27 12:47:31 +01:00
b73ddc883c fix: Change permissions on new bridgehead dirs 2024-02-27 12:47:31 +01:00
9f31e950a5 fix: generate the right beam connect mappings 2024-02-27 12:47:31 +01:00
371097377a feat: Add token-manager to beam 2024-02-27 12:47:31 +01:00
0a2dbb4b2d fix: Restrict rstudio network access 2024-02-27 12:47:31 +01:00
148e87341f move OAUTH2_SECRET 2024-02-27 12:47:31 +01:00
28a612f218 add default template-ids of exporter and reporter 2024-02-27 12:47:31 +01:00
e411883d18 mtba develop 2024-02-27 12:47:31 +01:00
0b2e64a2d5 add /oauth2/callback and /mtba to Keycloak private client 2024-02-27 12:47:31 +01:00
25ac4d2590 mtba latest 2024-02-27 12:47:31 +01:00
f9b26b6958 Use develop branch for mtba 2024-02-27 12:47:27 +01:00
5d4d0405ab fix: public client generation 2024-02-27 12:47:14 +01:00
b44a208e08 Better redirect url handeling 2024-02-27 12:47:13 +01:00
0cd4ededc7 Add oauth2_proxy 2024-02-27 12:47:13 +01:00
f6965859fe Add comment about PASSWORD and DISABLE_AUTH in R-Studio 2024-02-27 12:47:13 +01:00
ae965fddb3 Add proxy to R-Studio for loading R packages 2024-02-27 12:47:13 +01:00
903ef0df9b Add Keycloak to MTBA 2024-02-27 12:47:13 +01:00
e32f484c31 Add keycloak configuration 2024-02-27 12:47:13 +01:00
8486abedd4 Add R-Studio Admin Password 2024-02-27 12:47:13 +01:00
163650f592 Add generate_password function 2024-02-27 12:47:13 +01:00
9ebbf2ed9b Bugfix: Export /var/cache/bridgehead/secrets as environment variables 2024-02-27 12:47:13 +01:00
131b52f57b Account for ip address host values 2024-02-27 12:47:13 +01:00
043e12b985 Remove port handeling when generating redirect url 2024-02-27 12:47:13 +01:00
bb076c5d5a Add function generate_redirect_urls 2024-02-27 12:47:13 +01:00
3c8ec73ac3 Update oidc provider to new url 2024-02-27 12:47:13 +01:00
0015365d1b Generate addtional redirect url 2024-02-27 12:47:13 +01:00
dc3d5496e1 Integrate central Keycloak in Teiler 2024-02-27 12:47:13 +01:00
93a91326a2 Make sure path exists 2024-02-27 12:47:13 +01:00
4115319956 Setup hostname earlier 2024-02-27 12:47:13 +01:00
f854ab58ce Update to new secret-sync semantics 2024-02-27 12:47:13 +01:00
cec3dfe4cd Add secret sync to the bridgehead 2024-02-27 12:47:13 +01:00
3d136959e7 Bugfix: Add version in every docker compose file 2024-02-27 12:47:13 +01:00
8e171b71de Remove unnecessary version of docker-compose.override files 2024-02-27 12:47:13 +01:00
d3edb5e143 Bugfix: Add version in every docker compose file 2024-02-27 12:47:13 +01:00
b87d746a20 Remove unnecessary version of docker-compose.override files 2024-02-27 12:47:09 +01:00
afb63306a8 Remove unnecessary version of docker-compose.override files 2024-02-27 12:46:36 +01:00
90ee8d63f7 Externalize postgres version 2024-02-27 12:44:33 +01:00
8d4f487806 MTBA 1.0.0 2024-02-27 12:44:33 +01:00
a2c242583e Remove nngmSetup in vars 2024-02-27 12:44:33 +01:00
178867cde7 Prevent creation of volumes 2024-02-27 12:44:33 +01:00
77240ff92f Use Bridgehead's internal http proxy 2024-02-27 12:44:33 +01:00
876c4efa41 Make Opal use proxy server 2024-02-27 12:44:33 +01:00
058d1c83e6 Use newest version of beam-connect 2024-02-27 12:44:33 +01:00
ec6407414b Update export template script: FHIR_QUERY to FHIR_PATH 2024-02-27 12:44:33 +01:00
89c90d3aa0 /var/cache for mtba 2024-02-27 12:44:32 +01:00
0039efa353 Add docu about login in teiler 2024-02-27 12:44:32 +01:00
c1020c569a Bugfix: datashield local.json as array 2024-02-27 12:44:32 +01:00
2237562e6e Prevent anonymous volume creation 2024-02-27 12:44:32 +01:00
c8fc35576e Bugfix: Exporter and Reporter /var/cache volumes 2024-02-27 12:44:32 +01:00
3dfc4cf57d Postgres 15.4 in datashield, exporter and login 2024-02-27 12:44:32 +01:00
3a6520a668 Update ccp/modules/mtba.md
Co-authored-by: Martin Lablans <6804500+lablans@users.noreply.github.com>
2024-02-27 12:44:32 +01:00
dcddbf2235 Bugfix: Add version of docker-compose 2024-02-27 12:44:26 +01:00
e2f31b6eeb Make sure copy works and the correct owner is set 2024-02-27 12:43:34 +01:00
452946aa04 Add all sites 2024-02-27 12:43:34 +01:00
5c7da0d40d Auto generate mappings 2024-02-27 12:43:34 +01:00
77145277de Add ccp to /var/cache/bridgehead/* volumes 2024-02-27 12:43:34 +01:00
9cdcf2afb8 Rewrite comments 2024-02-27 12:43:34 +01:00
13a74e5dab Move exporter db to /var/cache/bridgehead 2024-02-27 12:43:34 +01:00
c33726d385 Exporter cache 2024-02-27 12:43:34 +01:00
f38d9f8c19 Rework commented sections 2024-02-27 12:43:34 +01:00
b5ca5ea4a7 Autogenerate maps for Opal's beam-connect. To be completed by @Threated with a map-generator in the script. 2024-02-27 12:43:34 +01:00
862e452f3c Cache opal in /var/cache/bridgehead 2024-02-27 12:43:34 +01:00
4aa8f0f3ba Bugfix: Add version in every docker compose file 2024-02-27 12:43:33 +01:00
ccf0b91f17 #!/bin/bash -e 2024-02-27 12:43:33 +01:00
720783249d Bugfix: LDM_AUTH instead of LDM_PASSWORD 2024-02-27 12:43:33 +01:00
2b3eabe95c Rename Teiler Backend, Teiler Dashboard and Teiler Orchestrator 2024-02-27 12:43:33 +01:00
14aece46f7 Add site to exporter and reporter 2024-02-27 12:43:33 +01:00
ff1f7904ad Add forward proxy to teiler-core 2024-02-27 12:43:33 +01:00
8d38adc91e Bugfix: mtba labels 2024-02-27 12:43:33 +01:00
cfc3c7c90e Bugfix: exporter 2024-02-27 12:43:33 +01:00
963144cc31 Disable datashield 2024-02-27 12:43:33 +01:00
765613b87f Bugfix: MTBA path prefix 2024-02-27 12:43:32 +01:00
2b61775652 Enable datashield 2024-02-27 12:43:32 +01:00
4b0b17424f Comment Keycloak volume 2024-02-27 12:43:32 +01:00
f26a8f7a71 Fix comment in login-compose.yml 2024-02-27 12:43:32 +01:00
973b5828f6 Remove old comment of exporter-setup.sh 2024-02-27 12:43:32 +01:00
839e7a4518 Comment on datashield volume 2024-02-27 12:43:32 +01:00
6cfb42dc9b Comment on export and report volumes 2024-02-27 12:43:32 +01:00
5d8bec53c0 Bugfix: JAVA_OPTS for exporter 2024-02-27 12:43:32 +01:00
c52975f204 Add mtba module documentation 2024-02-27 12:43:32 +01:00
957fa64ce9 Add teiler-ui module documentation 2024-02-27 12:43:32 +01:00
b4805af0a1 Add some docs about beam-connect 2024-02-27 12:43:31 +01:00
e3b8a7369b Add login module documentation 2024-02-27 12:43:31 +01:00
adeaf433dc Add Exporter module documentation 2024-02-27 12:43:31 +01:00
846e9c23a7 Add DataSHIELD module documentation 2024-02-27 12:43:31 +01:00
bb7451d8c3 Add JAVA_OPTS to reporter and exporter 2024-02-27 12:43:31 +01:00
26165232f0 Enable Login, Teiler and Exporter 2024-02-27 12:43:31 +01:00
7ed24f667d Export and QB Curl templates 2024-02-27 12:43:31 +01:00
d97ac56126 Generate exporter api key automatically 2024-02-27 12:43:31 +01:00
e7f6c0b1a0 Add default language to ccp 2024-02-27 12:43:31 +01:00
c4c4f743d2 Remove updater cron of teiler-core 2024-02-27 12:43:31 +01:00
be9adcbfa2 Remove clean temp files configuration of exporter 2024-02-27 12:43:30 +01:00
10a362c237 Add explanation why is the volume of exporter-db currently so important for us. 2024-02-27 12:43:30 +01:00
75c86b79e8 Add Teiler Admin to Keycloak 2024-02-27 12:43:30 +01:00
a6443a6857 Remove IS_DKTK_SITE 2024-02-27 12:43:30 +01:00
f3745b973a User default user rstudio in rstudio 2024-02-27 12:43:30 +01:00
50d28d293f Generate DATASHIELD_CONNECT_SECRET automatically 2024-02-27 12:43:30 +01:00
44415369cc Update ccp/modules/datashield-compose.yml 2024-02-27 12:43:30 +01:00
9b8331ed28 Update ccp/modules/datashield-compose.yml 2024-02-27 12:43:30 +01:00
73d969e374 Use LDM_PASSWORD for all admin passwords 2024-02-27 12:43:30 +01:00
840096d1d5 Enable only if true 2024-02-27 12:43:29 +01:00
43c45f0628 Remove todo in rstudio 2024-02-27 12:43:29 +01:00
e182e2fbe6 Remove unnecessary version of docker-compose.override files 2024-02-27 12:43:23 +01:00
c8bafb2461 R-Server rock-base:6.3 2024-02-27 12:42:38 +01:00
0866cacc5a User postgres if docker.verbis.dkfz.de 2024-02-27 12:42:38 +01:00
a1e76a61b8 Remove ports of beam-connect in datashield-compose.yml 2024-02-27 12:42:38 +01:00
09aa33c912 Generate passwords only if modules are enabled 2024-02-27 12:42:38 +01:00
36ac8d41c8 Add http scheme to exporter 2024-02-27 12:42:37 +01:00
c003999721 Migrate to new app key syntax 2024-02-27 12:42:37 +01:00
50360d3f41 update new broker 2024-02-27 12:42:37 +01:00
5148e3382d Add parameter LOG_FHIR_VALIDATION to exporter 2024-02-27 12:42:37 +01:00
2d7d1d73b3 Add reporter 2024-02-27 12:42:37 +01:00
20c65336e6 Switch to no-auth branch of beam-connect 2024-02-27 12:42:37 +01:00
276f886546 secrets are readonly by default 2024-02-27 12:42:37 +01:00
bc239c0b02 change to dockerhub image 2024-02-27 12:42:37 +01:00
6438fc5f4e Change beam-connect version and load opal cert 2024-02-27 12:42:37 +01:00
f2f48869af Change cert permission and location 2024-02-27 12:42:36 +01:00
e9e1ce5a65 ccp.conf in teiler-core as secret 2024-02-27 12:42:36 +01:00
687dbba383 Add opal certificate 2024-02-27 12:42:36 +01:00
5e376b17ad Remove unnecessary volumes 2024-02-27 12:42:36 +01:00
04cf5128b0 Remove mongo db 2024-02-27 12:42:36 +01:00
43ab59563c Add Opal Password in Exporter 2024-02-27 12:42:36 +01:00
996f53a164 expose beam connect ports 2024-02-27 12:42:36 +01:00
b5ce188842 Fix beam connect app id 2024-02-27 12:42:36 +01:00
325ae1d574 beam connect and move beam-connect config 2024-02-27 12:42:36 +01:00
68782d1c32 Experiment 2024-02-27 12:42:35 +01:00
bedc2ca6d0 Add beam connect to docekr-compose 2024-02-27 12:42:35 +01:00
dfde7c18ff Experiment 2024-02-27 12:42:35 +01:00
0b1e0474d7 Add DataSHIELD 2024-02-27 12:42:35 +01:00
72255e6211 Bugfix: cross origins of exporter 2024-02-27 12:42:35 +01:00
32de51eefb Merge id-management-setup with main 2024-02-27 12:42:35 +01:00
0cfe1d3617 Change salt string for exporter and login 2024-02-27 12:42:35 +01:00
fe07c63f36 Adapt teiler-ui to traefik 2024-02-27 12:42:35 +01:00
3a91259a8a Add keycloak teiler app to teiler-ui 2024-02-27 12:42:35 +01:00
4bbd2a15fe Change volume names for teiler components 2024-02-27 12:42:35 +01:00
0a17bbc81f Add stripprefix to teiler-ui 2024-02-27 12:42:35 +01:00
c794508880 Add stripprefix to teiler-core 2024-02-27 12:42:34 +01:00
3e0bf38018 Add forward strategy to teiler-core 2024-02-27 12:42:34 +01:00
e2d109558d Add forward strategy to teiler-core 2024-02-27 12:42:34 +01:00
9299a201a6 Deactivate traffik for mtba 2024-02-27 12:42:34 +01:00
c9b1975c9e Tidy teiler and mtba volumes 2024-02-27 12:42:34 +01:00
17f52a7907 Add Teiler Core 2024-02-27 12:42:34 +01:00
4d1a9bb701 Add Endpoint for Teiler 2024-02-27 12:42:34 +01:00
efc04cea4f Update Teiler Core config 2024-02-27 12:42:34 +01:00
8fe03a6cd2 Add original Keycloak config 2024-02-27 12:42:34 +01:00
c66dac9881 update keykloak config 2024-02-27 12:42:33 +01:00
38c7f3c24a beautiful config 2024-02-27 12:42:33 +01:00
49be101165 Rename teiler to exporter (bugfix) 2024-02-27 12:42:33 +01:00
6626f860a2 Rename teiler to exporter 2024-02-27 12:42:33 +01:00
eb17d8c159 Configure login extern URLs 2024-02-27 12:42:33 +01:00
6340acdbe8 Bugfix: services in teiler-ui-compose.yml 2024-02-27 12:42:32 +01:00
c916a357dc Change images of dktk-teiler and dktk-keycloak 2024-02-27 12:42:32 +01:00
20e2b2a0ed Add nngm and exliquid modules 2024-02-27 12:42:32 +01:00
2e6edb6179 Add Teiler UI and Teiler module 2024-02-27 12:42:32 +01:00
c58096aa27 Merge pull request #155 from samply/fix/dnpm-no-proxy
Add DNPM_NO_PROXY configuration option
2024-02-23 11:37:47 +01:00
b5ef856f12 refactor: calculate memory using free
Co-authored-by: Tobias Kussel <TKussel@users.noreply.github.com>
2024-02-23 08:27:06 +01:00
5470fd726a Merge pull request #156 from samply/fix/dnpm-beam-connect-trusted-certs
mount and process trusted certs in dnpm-beam-connect
2024-02-22 19:25:02 +01:00
3f6e3a2bb4 mount and process trusted certs in dnpm-beam-connect 2024-02-22 15:41:11 +00:00
9937002d06 Add DNPM_NO_PROXY configuration option 2024-02-21 15:04:00 +00:00
a1d0e93106 Merge pull request #153 from samply/dnpm-not-in-bbmri
Remove DNPM code from BBMRI
2024-02-20 16:46:47 +01:00
7d07c0623d refactor: optimize memory usage of blaze 2024-02-20 15:27:00 +01:00
f367a406bb Remove DNPM code from BBMRI 2024-02-20 10:47:42 +01:00
8854670f4d Merge pull request #152 from samply/feature/dnpm-echo
Add dnpm echo to dnpm-compose
2024-02-20 10:36:26 +01:00
aac31945a3 Add dnpm echo to dnpm-compose 2024-02-19 08:50:15 +00:00
60b2bddf15 Merge pull request #146 from samply/fix/updates
Fix image updates for image names with vars
2024-02-14 16:37:28 +01:00
d8da5da7eb Merge pull request #150 from samply/feature/bridgehead-logs
Add `bridgehead logs` command
2024-02-14 16:25:41 +01:00
16fc40f8ae feat: Add bridgehead logs command 2024-02-14 14:43:17 +00:00
001b84a774 Revert "Merge pull request #147 from samply/fix/set-focus-version-to-main"
This reverts commit 6550c0cdab, reversing
changes made to 40d991d94e.
2024-02-12 08:55:29 +00:00
ed0bd483dd Use backwards compatible compose config version 2024-02-12 08:54:15 +00:00
5516ad7641 Add project 2024-02-12 08:54:15 +00:00
d44ff4055f fix(updates): Use docker compose config to list images 2024-02-12 08:54:15 +00:00
40 changed files with 325 additions and 407 deletions

View File

@ -8,8 +8,9 @@ services:
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: "-Xmx4g" JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
LOG_LEVEL: "debug" DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
ENFORCE_REFERENTIAL_INTEGRITY: "false" ENFORCE_REFERENTIAL_INTEGRITY: "false"
volumes: volumes:
- "blaze-data:/app/data" - "blaze-data:/app/data"

View File

@ -1,53 +0,0 @@
version: "3.7"
services:
dnpm-beam-proxy:
image: docker.verbis.dkfz.de/cache/samply/beam-proxy:develop
container_name: bridgehead-dnpm-beam-proxy
environment:
BROKER_URL: ${DNPM_BROKER_URL}
PROXY_ID: ${DNPM_PROXY_ID}
APP_dnpm-connect_KEY: ${DNPM_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/ccp/root.crt.pem:/conf/root.crt.pem:ro
dnpm-beam-connect:
depends_on: [ dnpm-beam-proxy ]
image: docker.verbis.dkfz.de/cache/samply/beam-connect:develop
container_name: bridgehead-dnpm-beam-connect
environment:
PROXY_URL: http://dnpm-beam-proxy:8081
PROXY_APIKEY: ${DNPM_BEAM_SECRET_SHORT}
APP_ID: dnpm-connect.${DNPM_PROXY_ID}
DISCOVERY_URL: "./conf/central_targets.json"
LOCAL_TARGETS_FILE: "./conf/connect_targets.json"
HTTP_PROXY: http://forward_proxy:3128
HTTPS_PROXY: http://forward_proxy:3128
NO_PROXY: dnpm-beam-proxy,dnpm-backend, host.docker.internal
RUST_LOG: ${RUST_LOG:-info}
NO_AUTH: "true"
extra_host:
- "host.docker.internal:host-gateway"
volumes:
- /etc/bridgehead/dnpm/local_targets.json:/conf/connect_targets.json:ro
- /etc/bridgehead/dnpm/central_targets.json:/conf/central_targets.json:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.dnpm-connect.rule=PathPrefix(`/dnpm-connect`)"
- "traefik.http.middlewares.dnpm-connect-strip.stripprefix.prefixes=/dnpm-connect"
- "traefik.http.routers.dnpm-connect.middlewares=dnpm-connect-strip"
- "traefik.http.services.dnpm-connect.loadbalancer.server.port=8062"
- "traefik.http.routers.dnpm-connect.tls=true"
secrets:
proxy.pem:
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem

View File

@ -1,33 +0,0 @@
version: "3.7"
services:
dnpm-backend:
image: ghcr.io/kohlbacherlab/bwhc-backend:1.0-snapshot-broker-connector
container_name: bridgehead-dnpm-backend
environment:
- ZPM_SITE=${ZPM_SITE}
volumes:
- /etc/bridgehead/dnpm:/bwhc_config:ro
- ${DNPM_DATA_DIR}:/bwhc_data
labels:
- "traefik.enable=true"
- "traefik.http.routers.bwhc-backend.rule=PathPrefix(`/bwhc`)"
- "traefik.http.services.bwhc-backend.loadbalancer.server.port=9000"
- "traefik.http.routers.bwhc-backend.tls=true"
dnpm-frontend:
image: ghcr.io/kohlbacherlab/bwhc-frontend:2209
container_name: bridgehead-dnpm-frontend
links:
- dnpm-backend
environment:
- NUXT_HOST=0.0.0.0
- NUXT_PORT=8080
- BACKEND_PROTOCOL=https
- BACKEND_HOSTNAME=$HOST
- BACKEND_PORT=443
labels:
- "traefik.enable=true"
- "traefik.http.routers.bwhc-frontend.rule=PathPrefix(`/`)"
- "traefik.http.services.bwhc-frontend.loadbalancer.server.port=8080"
- "traefik.http.routers.bwhc-frontend.tls=true"

View File

@ -1,27 +0,0 @@
#!/bin/bash
if [ -n "${ENABLE_DNPM_NODE}" ]; then
log INFO "DNPM setup detected (BwHC Node) -- will start BwHC node."
OVERRIDE+=" -f ./$PROJECT/modules/dnpm-node-compose.yml"
# Set variables required for BwHC Node. ZPM_SITE is assumed to be set in /etc/bridgehead/<project>.conf
DNPM_APPLICATION_SECRET="$(echo \"This is a salt string to generate one consistent password for DNPM. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
if [ -z "${ZPM_SITE+x}" ]; then
log ERROR "Mandatory variable ZPM_SITE not defined!"
exit 1
fi
if [ -z "${DNPM_DATA_DIR+x}" ]; then
log ERROR "Mandatory variable DNPM_DATA_DIR not defined!"
exit 1
fi
if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then
echo "Override of landing page url already in place"
else
echo "Adding override of landing page url"
if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then
echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
else
echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
fi
fi
fi

View File

@ -1,12 +0,0 @@
#!/bin/bash
if [ -n "${ENABLE_DNPM}" ]; then
log INFO "DNPM setup detected (Beam.Connect) -- will start Beam and Beam.Connect for DNPM."
OVERRIDE+=" -f ./$PROJECT/modules/dnpm-compose.yml"
# Set variables required for Beam-Connect
DNPM_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
DNPM_BROKER_ID="broker.ccp-it.dktk.dkfz.de"
DNPM_BROKER_URL="https://${DNPM_BROKER_ID}"
DNPM_PROXY_ID="${SITE_ID}.${DNPM_BROKER_ID}"
fi

View File

@ -28,6 +28,9 @@ fi
case "$PROJECT" in case "$PROJECT" in
ccp) ccp)
#nothing extra to do #nothing extra to do
;;
leme)
#nothing extra to do
;; ;;
bbmri) bbmri)
#nothing extra to do #nothing extra to do
@ -41,7 +44,6 @@ case "$PROJECT" in
;; ;;
esac esac
# TODO: Please add proper documentation for variable priorities (1. secrets, 2. vars, 3. PROJECT.local.conf, 4. PROJECT.conf, 5. ???
loadVars() { loadVars() {
# Load variables from /etc/bridgehead and /srv/docker/bridgehead # Load variables from /etc/bridgehead and /srv/docker/bridgehead
set -a set -a
@ -52,6 +54,7 @@ loadVars() {
fi fi
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
[ -e ./$PROJECT/vars ] && source ./$PROJECT/vars [ -e ./$PROJECT/vars ] && source ./$PROJECT/vars
set +a set +a
@ -90,12 +93,14 @@ case "$ACTION" in
loadVars loadVars
hc_send log "Bridgehead $PROJECT startup: Checking requirements ..." hc_send log "Bridgehead $PROJECT startup: Checking requirements ..."
checkRequirements checkRequirements
sync_secrets sync_secrets
hc_send log "Bridgehead $PROJECT startup: Requirements checked out. Now starting bridgehead ..." hc_send log "Bridgehead $PROJECT startup: Requirements checked out. Now starting bridgehead ..."
exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE up --abort-on-container-exit exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE up --abort-on-container-exit
;; ;;
stop) stop)
loadVars loadVars
# Kill stale secret-sync instances if present
docker kill $(docker ps -q --filter ancestor=docker.verbis.dkfz.de/cache/samply/secret-sync-local) 2>/dev/null || true
# HACK: This is temporarily to properly shut down false bridgehead instances (bridgehead-ccp instead ccp) # HACK: This is temporarily to properly shut down false bridgehead instances (bridgehead-ccp instead ccp)
$COMPOSE -p bridgehead-$PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE down $COMPOSE -p bridgehead-$PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE down
exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE down exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE down
@ -104,6 +109,11 @@ case "$ACTION" in
bk_is_running bk_is_running
exit $? exit $?
;; ;;
logs)
loadVars
shift 2
exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE logs -f $@
;;
update) update)
loadVars loadVars
exec ./lib/update-bridgehead.sh $PROJECT exec ./lib/update-bridgehead.sh $PROJECT

View File

@ -6,7 +6,9 @@ services:
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: "-Xmx4g" 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" ENFORCE_REFERENTIAL_INTEGRITY: "false"
volumes: volumes:
- "blaze-data:/app/data" - "blaze-data:/app/data"
@ -19,7 +21,7 @@ services:
- "traefik.http.routers.blaze_ccp.tls=true" - "traefik.http.routers.blaze_ccp.tls=true"
focus: focus:
image: docker.verbis.dkfz.de/cache/samply/focus:main image: docker.verbis.dkfz.de/cache/samply/focus:0.4.4
container_name: bridgehead-focus container_name: bridgehead-focus
environment: environment:
API_KEY: ${FOCUS_BEAM_SECRET_SHORT} API_KEY: ${FOCUS_BEAM_SECRET_SHORT}
@ -52,12 +54,6 @@ services:
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro - /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
- /srv/docker/bridgehead/ccp/root.crt.pem:/conf/root.crt.pem:ro - /srv/docker/bridgehead/ccp/root.crt.pem:/conf/root.crt.pem:ro
traefik:
labels:
- "traefik.http.middlewares.oidcAuth.forwardAuth.address=http://oauth2_proxy:4180/"
- "traefik.http.middlewares.oidcAuth.forwardAuth.trustForwardHeader=true"
- "traefik.http.middlewares.oidcAuth.forwardAuth.authResponseHeaders=X-Auth-Request-Access-Token,Authorization"
volumes: volumes:
blaze-data: blaze-data:

View File

@ -1,53 +0,0 @@
version: '3.7'
services:
cbioportal:
# image: docker.verbis.dkfz.de/ccp/dktk-cbioportal:latest
image: dktk-cbioportal
container_name: bridgehead-cbioportal
environment:
DB_PASSWORD: ${CBIOPORTAL_DB_PASSWORD}
HTTP_RELATIVE_PATH: "/cbioportal"
UPLOAD_HTTP_RELATIVE_PATH: "/cbioportal-upload"
depends_on:
- cbioportal-database
- cbioportal-session
labels:
- "traefik.enable=true"
- "traefik.http.routers.cbioportal.rule=PathPrefix(`/cbioportal`)"
- "traefik.http.routers.cbioportal.service=cbioportal"
- "traefik.http.services.cbioportal.loadbalancer.server.port=8080"
- "traefik.http.routers.cbioportal.tls=true"
- "traefik.http.routers.cbioportal-upload.rule=PathPrefix(`/cbioportal-upload`)"
- "traefik.http.routers.cbioportal-upload.service=cbioportal-upload"
- "traefik.http.routers.cbioportal-upload.tls=true"
- "traefik.http.services.cbioportal-upload.loadbalancer.server.port=8001"
cbioportal-database:
image: docker.verbis.dkfz.de/ccp/dktk-cbioportal-database:latest
container_name: bridgehead-cbioportal-database
environment:
MYSQL_DATABASE: cbioportal
MYSQL_USER: cbio_user
MYSQL_PASSWORD: ${CBIOPORTAL_DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${CBIOPORTAL_DB_ROOT_PASSWORD}
volumes:
- /var/cache/bridgehead/ccp/cbioportal_db_data:/var/lib/mysql
cbioportal-session:
image: cbioportal/session-service:0.6.1
container_name: bridgehead-cbioportal-session
environment:
SERVER_PORT: 5000
JAVA_OPTS: -Dspring.data.mongodb.uri=mongodb://cbioportal-session-database:27017/session-service
depends_on:
- cbioportal-session-database
cbioportal-session-database:
image: mongo:4.2
container_name: bridgehead-cbioportal-session-database
environment:
MONGO_INITDB_DATABASE: session_service
volumes:
- /var/cache/bridgehead/ccp/cbioportal_session_db_data:/data/db

View File

@ -1,8 +0,0 @@
#!/bin/bash -e
if [ "$ENABLE_CBIOPORTAL" == true ]; then
log INFO "cBioPortal setup detected -- will start cBioPortal service."
OVERRIDE+=" -f ./$PROJECT/modules/cbioportal-compose.yml"
CBIOPORTAL_DB_PASSWORD="$(echo \"This is a salt string to generate one consistent password for the cbioportal database. It is not required to be secret.\" | openssl rsautl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
CBIOPORTAL_DB_ROOT_PASSWORD="$(echo \"This is a salt string to generate one consistent root password for the cbioportal database. It is not required to be secret.\" | openssl rsautl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 64)"
fi

View File

@ -1,10 +0,0 @@
# CBioPortal Data uploader
## Usage
We have integrated an API that allows you to upload data directly to cbioportal without the need to have cbioportal installed in your system.
## Tech stack
We used Flask to add this feature

View File

@ -44,11 +44,11 @@ services:
APP_CONTEXT_PATH: "/opal" APP_CONTEXT_PATH: "/opal"
OPAL_PRIVATE_KEY: "/run/secrets/opal-key.pem" OPAL_PRIVATE_KEY: "/run/secrets/opal-key.pem"
OPAL_CERTIFICATE: "/run/secrets/opal-cert.pem" OPAL_CERTIFICATE: "/run/secrets/opal-cert.pem"
KEYCLOAK_URL: "${KEYCLOAK_URL}" OIDC_URL: "${OIDC_URL}"
KEYCLOAK_REALM: "${KEYCLOAK_REALM}" OIDC_REALM: "${OIDC_REALM}"
KEYCLOAK_CLIENT_ID: "${KEYCLOAK_PRIVATE_CLIENT_ID}" OIDC_CLIENT_ID: "${OIDC_PRIVATE_CLIENT_ID}"
KEYCLOAK_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}" OIDC_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}"
KEYCLOAK_ADMIN_GROUP: "${KEYCLOAK_ADMIN_GROUP}" OIDC_ADMIN_GROUP: "${OIDC_ADMIN_GROUP}"
TOKEN_MANAGER_PASSWORD: "${TOKEN_MANAGER_OPAL_PASSWORD}" TOKEN_MANAGER_PASSWORD: "${TOKEN_MANAGER_OPAL_PASSWORD}"
EXPORTER_PASSWORD: "${EXPORTER_OPAL_PASSWORD}" EXPORTER_PASSWORD: "${EXPORTER_OPAL_PASSWORD}"
BEAM_APP_ID: token-manager.${PROXY_ID} BEAM_APP_ID: token-manager.${PROXY_ID}
@ -62,7 +62,7 @@ services:
opal-db: opal-db:
container_name: bridgehead-opal-db container_name: bridgehead-opal-db
image: docker.verbis.dkfz.de/cache/postgres:15.4-alpine image: docker.verbis.dkfz.de/cache/postgres:${POSTGRES_TAG}
environment: environment:
POSTGRES_PASSWORD: "${OPAL_DB_PASSWORD}" # Set in datashield-setup.sh POSTGRES_PASSWORD: "${OPAL_DB_PASSWORD}" # Set in datashield-setup.sh
POSTGRES_USER: "opal" POSTGRES_USER: "opal"
@ -96,8 +96,12 @@ services:
networks: networks:
- default - default
- rstudio - rstudio
traefik: traefik:
labels:
- "traefik.http.middlewares.oidcAuth.forwardAuth.address=http://oauth2-proxy:4180/"
- "traefik.http.middlewares.oidcAuth.forwardAuth.trustForwardHeader=true"
- "traefik.http.middlewares.oidcAuth.forwardAuth.authResponseHeaders=X-Auth-Request-Access-Token,Authorization"
networks: networks:
- default - default
- rstudio - rstudio
@ -111,15 +115,15 @@ services:
APP_datashield-connect_KEY: ${DATASHIELD_CONNECT_SECRET} APP_datashield-connect_KEY: ${DATASHIELD_CONNECT_SECRET}
APP_token-manager_KEY: ${TOKEN_MANAGER_SECRET} APP_token-manager_KEY: ${TOKEN_MANAGER_SECRET}
# TODO: Allow users of group /DataSHIELD and KEYCLOAK_USER_GROUP at the same time: # TODO: Allow users of group /DataSHIELD and OIDC_USER_GROUP at the same time:
# Maybe a solution would be (https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/): # Maybe a solution would be (https://oauth2-proxy.github.io/oauth2-proxy/configuration/oauth_provider):
# --allowed-groups=/DataSHIELD,KEYCLOAK_USER_GROUP # --allowed-groups=/DataSHIELD,OIDC_USER_GROUP
oauth2_proxy: oauth2-proxy:
image: quay.io/oauth2-proxy/oauth2-proxy image: docker.verbis.dkfz.de/cache/oauth2-proxy/oauth2-proxy:latest
container_name: bridgehead_oauth2_proxy container_name: bridgehead-oauth2proxy
command: >- command: >-
--allowed-group=/DataSHIELD --allowed-group=DataSHIELD
--oidc-groups-claim=${KEYCLOAK_GROUP_CLAIM} --oidc-groups-claim=${OIDC_GROUP_CLAIM}
--auth-logging=true --auth-logging=true
--whitelist-domain=${HOST} --whitelist-domain=${HOST}
--http-address="0.0.0.0:4180" --http-address="0.0.0.0:4180"
@ -134,10 +138,10 @@ services:
#OIDC settings #OIDC settings
--provider="keycloak-oidc" --provider="keycloak-oidc"
--provider-display-name="VerbIS Login" --provider-display-name="VerbIS Login"
--client-id="${KEYCLOAK_PRIVATE_CLIENT_ID}" --client-id="${OIDC_PRIVATE_CLIENT_ID}"
--client-secret="${OIDC_CLIENT_SECRET}" --client-secret="${OIDC_CLIENT_SECRET}"
--redirect-url="https://${HOST}${OAUTH2_CALLBACK}" --redirect-url="https://${HOST}${OAUTH2_CALLBACK}"
--oidc-issuer-url="${KEYCLOAK_ISSUER_URL}" --oidc-issuer-url="${OIDC_ISSUER_URL}"
--scope="openid email profile" --scope="openid email profile"
--code-challenge-method="S256" --code-challenge-method="S256"
--skip-provider-button=true --skip-provider-button=true
@ -150,6 +154,12 @@ services:
- "traefik.http.routers.oauth2_proxy.rule=Host(`${HOST}`) && PathPrefix(`/oauth2`, `/oauth2/callback`)" - "traefik.http.routers.oauth2_proxy.rule=Host(`${HOST}`) && PathPrefix(`/oauth2`, `/oauth2/callback`)"
- "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:
http_proxy: "http://forward_proxy:3128"
https_proxy: "http://forward_proxy:3128"
depends_on:
forward_proxy:
condition: service_healthy
secrets: secrets:
opal-cert.pem: opal-cert.pem:

View File

@ -1,6 +1,14 @@
#!/bin/bash -e #!/bin/bash -e
if [ "$ENABLE_DATASHIELD" == true ]; then if [ "$ENABLE_DATASHIELD" == true ]; then
# HACK: This only works because exporter-setup.sh and teiler-setup.sh are sourced after datashield-setup.sh
if [ -z "${ENABLE_EXPORTER}" ] || [ "${ENABLE_EXPORTER}" != "true" ]; then
log WARN "The ENABLE_EXPORTER variable is either not set or not set to 'true'."
fi
OAUTH2_CALLBACK=/oauth2/callback
OAUTH2_PROXY_SECRET="$(echo \"This is a salt string to generate one consistent encryption key for the oauth2_proxy. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 32)"
add_private_oidc_redirect_url "${OAUTH2_CALLBACK}"
log INFO "DataSHIELD setup detected -- will start DataSHIELD services." log INFO "DataSHIELD setup detected -- will start DataSHIELD services."
OVERRIDE+=" -f ./$PROJECT/modules/datashield-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/datashield-compose.yml"
EXPORTER_OPAL_PASSWORD="$(generate_password \"exporter in Opal\")" EXPORTER_OPAL_PASSWORD="$(generate_password \"exporter in Opal\")"
@ -12,22 +20,25 @@ if [ "$ENABLE_DATASHIELD" == true ]; then
TOKEN_MANAGER_SECRET="$(echo \"Token Manager\" | generate_simple_password)" TOKEN_MANAGER_SECRET="$(echo \"Token Manager\" | generate_simple_password)"
if [ ! -e /tmp/bridgehead/opal-cert.pem ]; then if [ ! -e /tmp/bridgehead/opal-cert.pem ]; then
mkdir -p /tmp/bridgehead/ mkdir -p /tmp/bridgehead/
chown -R bridgehead:docker /tmp/bridgehead/
openssl req -x509 -newkey rsa:4096 -nodes -keyout /tmp/bridgehead/opal-key.pem -out /tmp/bridgehead/opal-cert.pem -days 3650 -subj "/CN=opal/C=DE" openssl req -x509 -newkey rsa:4096 -nodes -keyout /tmp/bridgehead/opal-key.pem -out /tmp/bridgehead/opal-cert.pem -days 3650 -subj "/CN=opal/C=DE"
chmod g+r /tmp/bridgehead/opal-key.pem
fi fi
mkdir -p /tmp/bridgehead/opal-map mkdir -p /tmp/bridgehead/opal-map
jq -n '{"sites": input | map({ sites="$(cat ./$PROJECT/modules/datashield-sites.json)"
echo "$sites" | docker_jq -n --args '{"sites": input | map({
"name": ., "name": .,
"id": ., "id": .,
"virtualhost": "\(.):443", "virtualhost": "\(.):443",
"beamconnect": "datashield-connect.\(.).'"$BROKER_ID"'" "beamconnect": "datashield-connect.\(.).'"$BROKER_ID"'"
})}' ./$PROJECT/modules/datashield-mappings.json > /tmp/bridgehead/opal-map/central.json })}' $sites >/tmp/bridgehead/opal-map/central.json
jq -n '[{ 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("datashield-connect.\(.).'"$BROKER_ID"'")
}]' ./$PROJECT/modules/datashield-mappings.json > /tmp/bridgehead/opal-map/local.json }]' >/tmp/bridgehead/opal-map/local.json
chown -R bridgehead:docker /tmp/bridgehead/ if [ "$USER" == "root" ]; then
chown -R bridgehead:docker /tmp/bridgehead
chmod g+wr /tmp/bridgehead/opal-map/*
chmod g+r /tmp/bridgehead/opal-key.pem
fi
add_private_oidc_redirect_url "/opal/*" add_private_oidc_redirect_url "/opal/*"
fi fi

View File

@ -9,5 +9,6 @@
"frankfurt", "frankfurt",
"essen", "essen",
"dktk-datashield-test", "dktk-datashield-test",
"dktk-test" "dktk-test",
"mannheim"
] ]

View File

@ -16,12 +16,14 @@ services:
LOCAL_TARGETS_FILE: "./conf/connect_targets.json" LOCAL_TARGETS_FILE: "./conf/connect_targets.json"
HTTP_PROXY: "http://forward_proxy:3128" HTTP_PROXY: "http://forward_proxy:3128"
HTTPS_PROXY: "http://forward_proxy:3128" HTTPS_PROXY: "http://forward_proxy:3128"
NO_PROXY: beam-proxy,dnpm-backend,host.docker.internal NO_PROXY: beam-proxy,dnpm-backend,host.docker.internal${DNPM_ADDITIONAL_NO_PROXY}
RUST_LOG: ${RUST_LOG:-info} RUST_LOG: ${RUST_LOG:-info}
NO_AUTH: "true" NO_AUTH: "true"
TLS_CA_CERTIFICATES_DIR: ./conf/trusted-ca-certs
extra_hosts: extra_hosts:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
volumes: volumes:
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
- /etc/bridgehead/dnpm/local_targets.json:/conf/connect_targets.json:ro - /etc/bridgehead/dnpm/local_targets.json:/conf/connect_targets.json:ro
- /etc/bridgehead/dnpm/central_targets.json:/conf/central_targets.json:ro - /etc/bridgehead/dnpm/central_targets.json:/conf/central_targets.json:ro
labels: labels:
@ -31,3 +33,7 @@ services:
- "traefik.http.routers.dnpm-connect.middlewares=dnpm-connect-strip" - "traefik.http.routers.dnpm-connect.middlewares=dnpm-connect-strip"
- "traefik.http.services.dnpm-connect.loadbalancer.server.port=8062" - "traefik.http.services.dnpm-connect.loadbalancer.server.port=8062"
- "traefik.http.routers.dnpm-connect.tls=true" - "traefik.http.routers.dnpm-connect.tls=true"
dnpm-echo:
image: docker.verbis.dkfz.de/cache/samply/bridgehead-echo:latest
container_name: bridgehead-dnpm-echo

View File

@ -6,6 +6,7 @@ services:
container_name: bridgehead-dnpm-backend container_name: bridgehead-dnpm-backend
environment: environment:
- ZPM_SITE=${ZPM_SITE} - ZPM_SITE=${ZPM_SITE}
- N_RANDOM_FILES=${DNPM_SYNTH_NUM}
volumes: volumes:
- /etc/bridgehead/dnpm:/bwhc_config:ro - /etc/bridgehead/dnpm:/bwhc_config:ro
- ${DNPM_DATA_DIR}:/bwhc_data - ${DNPM_DATA_DIR}:/bwhc_data

View File

@ -14,14 +14,15 @@ if [ -n "${ENABLE_DNPM_NODE}" ]; then
log ERROR "Mandatory variable DNPM_DATA_DIR not defined!" log ERROR "Mandatory variable DNPM_DATA_DIR not defined!"
exit 1 exit 1
fi fi
if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then DNPM_SYNTH_NUM=${DNPM_SYNTH_NUM:-0}
echo "Override of landing page url already in place" if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then
else echo "Override of landing page url already in place"
echo "Adding override of landing page url" else
if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then echo "Adding override of landing page url"
echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then
else echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml else
fi echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
fi fi
fi
fi fi

View File

@ -6,4 +6,10 @@ if [ -n "${ENABLE_DNPM}" ]; then
# Set variables required for Beam-Connect # Set variables required for Beam-Connect
DNPM_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)" DNPM_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
# If the DNPM_NO_PROXY variable is set, prefix it with a comma (as it gets added to a comma separated list)
if [ -n "${DNPM_NO_PROXY}" ]; then
DNPM_ADDITIONAL_NO_PROXY=",${DNPM_NO_PROXY}"
else
DNPM_ADDITIONAL_NO_PROXY=""
fi
fi fi

View File

@ -27,7 +27,7 @@ services:
- "/var/cache/bridgehead/ccp/exporter-files:/app/exporter-files/output" - "/var/cache/bridgehead/ccp/exporter-files:/app/exporter-files/output"
exporter-db: exporter-db:
image: docker.verbis.dkfz.de/cache/postgres:15.4-alpine image: docker.verbis.dkfz.de/cache/postgres:${POSTGRES_TAG}
container_name: bridgehead-ccp-exporter-db container_name: bridgehead-ccp-exporter-db
environment: environment:
POSTGRES_USER: "exporter" POSTGRES_USER: "exporter"

View File

@ -3,6 +3,6 @@
if [ "$ENABLE_EXPORTER" == true ]; then if [ "$ENABLE_EXPORTER" == true ]; then
log INFO "Exporter setup detected -- will start Exporter service." log INFO "Exporter setup detected -- will start Exporter service."
OVERRIDE+=" -f ./$PROJECT/modules/exporter-compose.yml" 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.\" | openssl rsautl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)" 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.\" | openssl rsautl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 64)" 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 fi

View File

@ -29,6 +29,7 @@ services:
container_name: bridgehead-patientlist container_name: bridgehead-patientlist
environment: environment:
- TOMCAT_REVERSEPROXY_FQDN=${HOST} - TOMCAT_REVERSEPROXY_FQDN=${HOST}
- TOMCAT_REVERSEPROXY_SSL=true
- ML_SITE=${IDMANAGEMENT_FRIENDLY_ID} - ML_SITE=${IDMANAGEMENT_FRIENDLY_ID}
- ML_DB_PASS=${PATIENTLIST_POSTGRES_PASSWORD} - ML_DB_PASS=${PATIENTLIST_POSTGRES_PASSWORD}
- ML_API_KEY=${IDMANAGER_LOCAL_PATIENTLIST_APIKEY} - ML_API_KEY=${IDMANAGER_LOCAL_PATIENTLIST_APIKEY}
@ -44,7 +45,7 @@ services:
- patientlist-db - patientlist-db
patientlist-db: patientlist-db:
image: docker.verbis.dkfz.de/cache/postgres:15.6-alpine image: docker.verbis.dkfz.de/cache/postgres:${POSTGRES_TAG}
container_name: bridgehead-patientlist-db container_name: bridgehead-patientlist-db
environment: environment:
POSTGRES_USER: "mainzelliste" POSTGRES_USER: "mainzelliste"

View File

@ -1,47 +0,0 @@
version: "3.7"
services:
login-db:
image: docker.verbis.dkfz.de/cache/postgres:15.4-alpine
container_name: bridgehead-login-db
environment:
POSTGRES_USER: "keycloak"
POSTGRES_PASSWORD: "${KEYCLOAK_DB_PASSWORD}" # Set in login-setup.sh
POSTGRES_DB: "keycloak"
tmpfs:
- /var/lib/postgresql/data
# Consider removing this comment once we have collected experience in production.
# volumes:
# - "bridgehead-login-db:/var/lib/postgresql/data"
login:
image: docker.verbis.dkfz.de/ccp/dktk-keycloak:latest
container_name: bridgehead-login
environment:
KEYCLOAK_ADMIN: "admin"
KEYCLOAK_ADMIN_PASSWORD: "${LDM_AUTH}"
TEILER_ADMIN: "${PROJECT}"
TEILER_ADMIN_PASSWORD: "${LDM_AUTH}"
TEILER_ADMIN_FIRST_NAME: "${OPERATOR_FIRST_NAME}"
TEILER_ADMIN_LAST_NAME: "${OPERATOR_LAST_NAME}"
TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}"
KC_DB_PASSWORD: "${KEYCLOAK_DB_PASSWORD}" # Set in login-setup.sh
KC_HOSTNAME_URL: "https://${HOST}/login"
KC_HOSTNAME_STRICT: "false"
KC_PROXY_ADDRESS_FORWARDING: "true"
TEILER_ORCHESTRATOR_EXTERN_URL: "https://${HOST}/ccp-teiler"
command:
- start-dev --import-realm --proxy edge --http-relative-path=/login
labels:
- "traefik.enable=true"
- "traefik.http.routers.login.rule=PathPrefix(`/login`)"
- "traefik.http.services.login.loadbalancer.server.port=8080"
- "traefik.http.routers.login.tls=true"
depends_on:
- login-db
# Consider removing this comment once we have collected experience in production.
#volumes:
# bridgehead-login-db:
# name: "bridgehead-login-db"

View File

@ -1,7 +0,0 @@
#!/bin/bash -e
if [ "$ENABLE_LOGIN" == true ]; then
log INFO "Login setup detected -- will start Login services."
OVERRIDE+=" -f ./$PROJECT/modules/login-compose.yml"
KEYCLOAK_DB_PASSWORD="$(generate_password \"local Keycloak\")"
fi

View File

@ -1,13 +0,0 @@
# Login
The login component is a local Keycloak instance. In the future will be replaced by the central keycloak instance
or maybe can be used to add local identity providers to the bridgehead or just to simplify the configuration of
the central keycloak instance for the integration of every new bridgehead.
The basic configuration of our Keycloak instance is contained in a small json file.
### Teiler User
Currently, the local keycloak is used by the teiler. There is a basic admin user in the basic configuration of keycloak.
The user can be configured with the environment variables TEILER_ADMIN_XXX.
## Login-DB
Keycloak requires a local database for its configuration. However, as we use an initial json configuration file, if no
local identity provider is configured nor any local user, theoretically we don't need a volume for the login.

View File

@ -2,7 +2,6 @@ version: "3.7"
services: services:
mtba: mtba:
#image: docker.verbis.dkfz.de/cache/samply/mtba:latest
image: docker.verbis.dkfz.de/cache/samply/mtba:develop image: docker.verbis.dkfz.de/cache/samply/mtba:develop
container_name: bridgehead-mtba container_name: bridgehead-mtba
environment: environment:
@ -21,11 +20,11 @@ services:
FILE_END_OF_LINE: ${MTBA_FILE_END_OF_LINE:-LF} FILE_END_OF_LINE: ${MTBA_FILE_END_OF_LINE:-LF}
CSV_DELIMITER: ${MTBA_CSV_DELIMITER:-TAB} CSV_DELIMITER: ${MTBA_CSV_DELIMITER:-TAB}
HTTP_RELATIVE_PATH: "/mtba" HTTP_RELATIVE_PATH: "/mtba"
KEYCLOAK_ADMIN_GROUP: "${KEYCLOAK_ADMIN_GROUP}" OIDC_ADMIN_GROUP: "${OIDC_ADMIN_GROUP}"
KEYCLOAK_CLIENT_ID: "${KEYCLOAK_PRIVATE_CLIENT_ID}" OIDC_CLIENT_ID: "${OIDC_PRIVATE_CLIENT_ID}"
KEYCLOAK_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}" OIDC_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}"
KEYCLOAK_REALM: "${KEYCLOAK_REALM}" OIDC_REALM: "${OIDC_REALM}"
KEYCLOAK_URL: "${KEYCLOAK_URL}" OIDC_URL: "${OIDC_URL}"
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"

View File

@ -15,11 +15,11 @@ services:
environment: environment:
TEILER_BACKEND_URL: "https://${HOST}/ccp-teiler-backend" TEILER_BACKEND_URL: "https://${HOST}/ccp-teiler-backend"
TEILER_DASHBOARD_URL: "https://${HOST}/ccp-teiler-dashboard" TEILER_DASHBOARD_URL: "https://${HOST}/ccp-teiler-dashboard"
DEFAULT_LANGUAGE: "${DEFAULT_LANGUAGE_LOWER_CASE}" DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE_LOWER_CASE}"
HTTP_RELATIVE_PATH: "/ccp-teiler" HTTP_RELATIVE_PATH: "/ccp-teiler"
teiler-dashboard: teiler-dashboard:
image: docker.verbis.dkfz.de/cache/samply/teiler-dashboard:latest image: docker.verbis.dkfz.de/cache/samply/teiler-dashboard:develop
container_name: bridgehead-teiler-dashboard container_name: bridgehead-teiler-dashboard
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
@ -29,12 +29,12 @@ services:
- "traefik.http.middlewares.teiler_dashboard_ccp_strip.stripprefix.prefixes=/ccp-teiler-dashboard" - "traefik.http.middlewares.teiler_dashboard_ccp_strip.stripprefix.prefixes=/ccp-teiler-dashboard"
- "traefik.http.routers.teiler_dashboard_ccp.middlewares=teiler_dashboard_ccp_strip" - "traefik.http.routers.teiler_dashboard_ccp.middlewares=teiler_dashboard_ccp_strip"
environment: environment:
DEFAULT_LANGUAGE: "${DEFAULT_LANGUAGE}" DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
TEILER_BACKEND_URL: "https://${HOST}/ccp-teiler-backend" TEILER_BACKEND_URL: "https://${HOST}/ccp-teiler-backend"
KEYCLOAK_URL: "${KEYCLOAK_URL}" OIDC_URL: "${OIDC_URL}"
KEYCLOAK_REALM: "${KEYCLOAK_REALM}" OIDC_REALM: "${OIDC_REALM}"
KEYCLOAK_CLIENT_ID: "${KEYCLOAK_PUBLIC_CLIENT_ID}" OIDC_CLIENT_ID: "${OIDC_PUBLIC_CLIENT_ID}"
KEYCLOAK_TOKEN_GROUP: "${KEYCLOAK_GROUP_CLAIM}" OIDC_TOKEN_GROUP: "${OIDC_GROUP_CLAIM}"
TEILER_ADMIN_NAME: "${OPERATOR_FIRST_NAME} ${OPERATOR_LAST_NAME}" TEILER_ADMIN_NAME: "${OPERATOR_FIRST_NAME} ${OPERATOR_LAST_NAME}"
TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}" TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}"
TEILER_ADMIN_PHONE: "${OPERATOR_PHONE}" TEILER_ADMIN_PHONE: "${OPERATOR_PHONE}"
@ -43,15 +43,14 @@ services:
TEILER_ORCHESTRATOR_URL: "https://${HOST}/ccp-teiler" TEILER_ORCHESTRATOR_URL: "https://${HOST}/ccp-teiler"
TEILER_DASHBOARD_HTTP_RELATIVE_PATH: "/ccp-teiler-dashboard" TEILER_DASHBOARD_HTTP_RELATIVE_PATH: "/ccp-teiler-dashboard"
TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/ccp-teiler" TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/ccp-teiler"
TEILER_USER: "${KEYCLOAK_USER_GROUP}" TEILER_USER: "${OIDC_USER_GROUP}"
TEILER_ADMIN: "${KEYCLOAK_ADMIN_GROUP}" TEILER_ADMIN: "${OIDC_ADMIN_GROUP}"
REPORTER_DEFAULT_TEMPLATE_ID: "ccp-qb" REPORTER_DEFAULT_TEMPLATE_ID: "ccp-qb"
EXPORTER_DEFAULT_TEMPLATE_ID: "ccp" EXPORTER_DEFAULT_TEMPLATE_ID: "ccp"
teiler-backend: teiler-backend:
# image: docker.verbis.dkfz.de/ccp/dktk-teiler-backend:latest image: docker.verbis.dkfz.de/ccp/dktk-teiler-backend:latest
image: dktk-teiler-backend
container_name: bridgehead-teiler-backend container_name: bridgehead-teiler-backend
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
@ -64,7 +63,7 @@ services:
LOG_LEVEL: "INFO" LOG_LEVEL: "INFO"
APPLICATION_PORT: "8085" APPLICATION_PORT: "8085"
APPLICATION_ADDRESS: "${HOST}" APPLICATION_ADDRESS: "${HOST}"
DEFAULT_LANGUAGE: "${DEFAULT_LANGUAGE}" DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
CONFIG_ENV_VAR_PATH: "/run/secrets/ccp.conf" CONFIG_ENV_VAR_PATH: "/run/secrets/ccp.conf"
TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/ccp-teiler" TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/ccp-teiler"
TEILER_ORCHESTRATOR_URL: "https://${HOST}/ccp-teiler" TEILER_ORCHESTRATOR_URL: "https://${HOST}/ccp-teiler"

View File

@ -3,5 +3,7 @@
if [ "$ENABLE_TEILER" == true ];then if [ "$ENABLE_TEILER" == true ];then
log INFO "Teiler setup detected -- will start Teiler services." log INFO "Teiler setup detected -- will start Teiler services."
OVERRIDE+=" -f ./$PROJECT/modules/teiler-compose.yml" 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/*" add_public_oidc_redirect_url "/ccp-teiler/*"
fi fi

View File

@ -7,25 +7,18 @@ SUPPORT_EMAIL=support-ccp@dkfz-heidelberg.de
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
BROKER_URL_FOR_PREREQ=$BROKER_URL BROKER_URL_FOR_PREREQ=$BROKER_URL
DEFAULT_LANGUAGE=DE
DEFAULT_LANGUAGE_LOWER_CASE=${DEFAULT_LANGUAGE,,}
ENABLE_EXPORTER=true
ENABLE_TEILER=true
#ENABLE_DATASHIELD=true
KEYCLOAK_USER_GROUP="DKTK_CCP_$(capitalize_first_letter ${SITE_ID})" OIDC_USER_GROUP="DKTK_CCP_$(capitalize_first_letter ${SITE_ID})"
KEYCLOAK_ADMIN_GROUP="DKTK_CCP_$(capitalize_first_letter ${SITE_ID})_Verwalter" OIDC_ADMIN_GROUP="DKTK_CCP_$(capitalize_first_letter ${SITE_ID})_Verwalter"
KEYCLOAK_PRIVATE_CLIENT_ID=${SITE_ID}-private OIDC_PRIVATE_CLIENT_ID=${SITE_ID}-private
KEYCLOAK_PUBLIC_CLIENT_ID=${SITE_ID}-public OIDC_PUBLIC_CLIENT_ID=${SITE_ID}-public
# TODO: Change Keycloak Realm to productive. "test-realm-01" is only for testing # Use "test-realm-01" for testing
KEYCLOAK_REALM="${KEYCLOAK_REALM:-test-realm-01}" OIDC_REALM="${OIDC_REALM:-master}"
KEYCLOAK_URL="https://login.verbis.dkfz.de" OIDC_URL="https://login.verbis.dkfz.de"
KEYCLOAK_ISSUER_URL="${KEYCLOAK_URL}/realms/${KEYCLOAK_REALM}" OIDC_ISSUER_URL="${OIDC_URL}/realms/${OIDC_REALM}"
KEYCLOAK_GROUP_CLAIM="groups" OIDC_GROUP_CLAIM="groups"
OAUTH2_CALLBACK=/oauth2/callback
OAUTH2_PROXY_SECRET="$(echo \"This is a salt string to generate one consistent encryption key for the oauth2_proxy. It is not required to be secret.\" | openssl rsautl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 32)"
add_private_oidc_redirect_url "${OAUTH2_CALLBACK}" POSTGRES_TAG=15.6-alpine
for module in $PROJECT/modules/*.sh for module in $PROJECT/modules/*.sh
do do

62
leme/docker-compose.yml Normal file
View File

@ -0,0 +1,62 @@
services:
blaze:
image: docker.verbis.dkfz.de/cache/samply/blaze:latest
container_name: bridgehead-leme-blaze
environment:
BASE_URL: "http://bridgehead-leme-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_leme.rule=PathPrefix(`/leme-localdatamanagement`)"
- "traefik.http.middlewares.leme_b_strip.stripprefix.prefixes=/leme-localdatamanagement"
- "traefik.http.services.blaze_leme.loadbalancer.server.port=8080"
- "traefik.http.routers.blaze_leme.middlewares=leme_b_strip,auth"
- "traefik.http.routers.blaze_leme.tls=true"
focus:
image: docker.verbis.dkfz.de/cache/samply/focus:0.4.4
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-leme-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:develop
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/leme/root.crt.pem:/conf/root.crt.pem:ro
volumes:
blaze-data:
secrets:
proxy.pem:
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem

20
leme/root.crt.pem Normal file
View File

@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDNTCCAh2gAwIBAgIUHtDdZ+L/Z1YmwlrHJRelJFLAGh0wDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAxMLQnJva2VyLVJvb3QwHhcNMjQwNTEzMTExMTQyWhcNMzQw
NTExMTExMjExWjAWMRQwEgYDVQQDEwtCcm9rZXItUm9vdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMLGngURLDDleDC/jGUSU12z9nfJBFrHItWQkcQk
uZPOhCB55mD18aMtLmpXcHQ4MZdDOCHjA7n3gZa04PvueuLht57z3Uyk+M9C1Oor
9KpnJWLogWtVJ9iaLrIGGS+lwttpglISg+7nZIszrCVaq2/mLe/Il47D7EifmA8L
T+/gNd470tvAWaFn3pmeNJ2CHZ0ld+6CSOweerfPHq44DrZeCO8nRl/+v/JTizLg
Fxjr2N38TohL4S8/QLIWtyQLZJbshuWAMwd7WtMXWqGPrIIDC8NiIQW8Yb1zjdoD
/Ghmw6yfr+/m02GpJTe4rVhYJT9WYZS6wUbRlK1WTuy8T2ECAwEAAaN7MHkwDgYD
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMdNeYJQr5e5
Cmh3NzSg/6eQF0IxMB8GA1UdIwQYMBaAFMdNeYJQr5e5Cmh3NzSg/6eQF0IxMBYG
A1UdEQQPMA2CC0Jyb2tlci1Sb290MA0GCSqGSIb3DQEBCwUAA4IBAQBl3iQUJYKz
E82f1SMyd9EHx4xs5fwVAKpndDkPBo4QbRHCeSfEnkxJHtluaDXJF0MaWMbvNps1
99afOVjZCDa5UQUqneyBTbY1tHr3gyYV/doe4FIHA799D2dKlyxu6sPNzRZJGppT
gaueKzc3jKINER1LcdOaPmSogNGNezCwOsAkmwuPQMrzMT8JPlLEGh0vfG4B994w
ECxyC3PicjXvq5UOCwYiGSwawqTznLUb3FO6SFYS1mNv2inVaNfLzkuCkdIyyqeU
dc/h6tuDSC+CKAy+/qoDNzG9KD+mI8kVyhhIrQ++vQ9bbRtWr5aQzaq+fyDJNXx3
IQvYUuSR8Nab
-----END CERTIFICATE-----

14
leme/vars Normal file
View File

@ -0,0 +1,14 @@
BROKER_ID=broker-test.health-innovation-lab.eu
BROKER_URL=http://${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=32
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
BROKER_URL_FOR_PREREQ=$BROKER_URL
# for module in $PROJECT/modules/*.sh
# do
# log DEBUG "sourcing $module"
# source $module
# done

View File

@ -53,7 +53,7 @@ checkOwner(){
} }
printUsage() { printUsage() {
echo "Usage: bridgehead start|stop|is-running|update|install|uninstall|adduser|enroll PROJECTNAME" echo "Usage: bridgehead start|stop|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"
} }
@ -155,6 +155,28 @@ setHostname() {
fi fi
} }
# This function optimizes the usage of memory through blaze, according to the official performance tuning guide:
# https://github.com/samply/blaze/blob/master/docs/tuning-guide.md
# Short summary of the adjustments made:
# - set blaze memory cap to a quarter of the system memory
# - set db block cache size to a quarter of the system memory
# - limit resource count allowed in blaze to 1,25M per 4GB available system memory
optimizeBlazeMemoryUsage() {
if [ -z "$BLAZE_MEMORY_CAP" ]; then
system_memory_in_mb=$(LC_ALL=C free -m | grep 'Mem:' | awk '{print $2}');
export BLAZE_MEMORY_CAP=$(($system_memory_in_mb/4));
fi
if [ -z "$BLAZE_RESOURCE_CACHE_CAP" ]; then
available_system_memory_chunks=$((BLAZE_MEMORY_CAP / 1000))
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."
export BLAZE_RESOURCE_CACHE_CAP=128000;
else
export BLAZE_RESOURCE_CACHE_CAP=$((available_system_memory_chunks * 312500))
fi
fi
}
# Takes 1) The Backup Directory Path 2) The name of the Service to be backuped # Takes 1) The Backup Directory Path 2) The name of the Service to be backuped
# Creates 3 Backups: 1) For the past seven days 2) For the current month and 3) for each calendar week # Creates 3 Backups: 1) For the past seven days 2) For the current month and 3) for each calendar week
createEncryptedPostgresBackup(){ createEncryptedPostgresBackup(){
@ -267,32 +289,32 @@ function sync_secrets() {
if [[ $OIDC_PRIVATE_REDIRECT_URLS != "" ]]; then if [[ $OIDC_PRIVATE_REDIRECT_URLS != "" ]]; then
secret_sync_args="OIDC:OIDC_CLIENT_SECRET:private;$OIDC_PRIVATE_REDIRECT_URLS" secret_sync_args="OIDC:OIDC_CLIENT_SECRET:private;$OIDC_PRIVATE_REDIRECT_URLS"
fi fi
if [[ $OIDC_PRIVATE_REDIRECT_URLS != "" ]]; then if [[ $OIDC_PUBLIC_REDIRECT_URLS != "" ]]; then
if [[ $secret_sync_args == "" ]]; then if [[ $secret_sync_args == "" ]]; then
secret_sync_args="OIDC:OIDC_PUBLIC:public;$OIDC_PUBLIC_REDIRECT_URLS" secret_sync_args="OIDC:OIDC_PUBLIC:public;$OIDC_PUBLIC_REDIRECT_URLS"
else else
secret_sync_args+="${delimiter}OIDC:OIDC_PUBLIC:public;$OIDC_PUBLIC_REDIRECT_URLS" secret_sync_args+="${delimiter}OIDC:OIDC_PUBLIC:public;$OIDC_PUBLIC_REDIRECT_URLS"
fi fi
fi fi
if [[ $secret_sync_args == "" ]]; then if [[ $secret_sync_args == "" ]]; then
return return
fi fi
mkdir -p /var/cache/bridgehead/secrets/ mkdir -p /var/cache/bridgehead/secrets/ || fail_and_report 1 "Failed to create '/var/cache/bridgehead/secrets/'. Please run sudo './bridgehead install $PROJECT' again."
touch /var/cache/bridgehead/secrets/oidc touch /var/cache/bridgehead/secrets/oidc
chown -R bridgehead:docker /var/cache/bridgehead/secrets
# The oidc provider will need to be switched based on the project at some point I guess
docker run --rm \ docker run --rm \
-v /var/cache/bridgehead/secrets/oidc:/usr/local/cache \ -v /var/cache/bridgehead/secrets/oidc:/usr/local/cache \
-v $PRIVATEKEYFILENAME:/run/secrets/privkey.pem:ro \ -v $PRIVATEKEYFILENAME:/run/secrets/privkey.pem:ro \
-v /srv/docker/bridgehead/$PROJECT/root.crt.pem:/run/secrets/root.crt.pem:ro \ -v /srv/docker/bridgehead/$PROJECT/root.crt.pem:/run/secrets/root.crt.pem:ro \
-v /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro \ -v /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro \
-e TLS_CA_CERTIFICATES_DIR=/conf/trusted-ca-certs \ -e TLS_CA_CERTIFICATES_DIR=/conf/trusted-ca-certs \
-e HTTPS_PROXY=$HTTPS_PROXY_FULL_URL \ -e NO_PROXY=localhost,127.0.0.1 \
-e ALL_PROXY=$HTTPS_PROXY_FULL_URL \
-e PROXY_ID=$PROXY_ID \ -e PROXY_ID=$PROXY_ID \
-e BROKER_URL=$BROKER_URL \ -e BROKER_URL=$BROKER_URL \
-e OIDC_PROVIDER=secret-sync-central.oidc-client-enrollment.$BROKER_ID \ -e OIDC_PROVIDER=secret-sync-central.oidc-client-enrollment.$BROKER_ID \
-e SECRET_DEFINITIONS=$secret_sync_args \ -e SECRET_DEFINITIONS=$secret_sync_args \
docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest
set -a # Export variables as environment variables set -a # Export variables as environment variables
source /var/cache/bridgehead/secrets/* source /var/cache/bridgehead/secrets/*
set +a # Export variables in the regular way set +a # Export variables in the regular way
@ -334,7 +356,7 @@ generate_password(){
local random_special=${special:$n:1} local random_special=${special:$n:1}
local combined_text="This is a salt string to generate one consistent password for ${seed_text}. It is not required to be secret." local combined_text="This is a salt string to generate one consistent password for ${seed_text}. It is not required to be secret."
local main_password=$(echo "${combined_text}" | openssl rsautl -sign -inkey "/etc/bridgehead/pki/${SITE_ID}.priv.pem" 2> /dev/null | base64 | head -c 26 | sed 's/\//A/g') local main_password=$(echo "${combined_text}" | sha1sum | openssl pkeyutl -sign -inkey "/etc/bridgehead/pki/${SITE_ID}.priv.pem" 2> /dev/null | base64 | head -c 26 | sed 's/\//A/g')
echo "${main_password}${random_digit}${random_upper}${random_lower}${random_special}" echo "${main_password}${random_digit}${random_upper}${random_lower}${random_special}"
} }
@ -343,5 +365,9 @@ generate_password(){
generate_simple_password(){ generate_simple_password(){
local seed_text="$1" local seed_text="$1"
local combined_text="This is a salt string to generate one consistent password for ${seed_text}. It is not required to be secret." local combined_text="This is a salt string to generate one consistent password for ${seed_text}. It is not required to be secret."
echo "${combined_text}" | openssl rsautl -sign -inkey "/etc/bridgehead/pki/${SITE_ID}.priv.pem" 2> /dev/null | base64 | head -c 26 | sed 's/[+\/]/A/g' echo "${combined_text}" | sha1sum | openssl pkeyutl -sign -inkey "/etc/bridgehead/pki/${SITE_ID}.priv.pem" 2> /dev/null | base64 | head -c 26 | sed 's/[+\/]/A/g'
}
docker_jq() {
docker run --rm -i docker.verbis.dkfz.de/cache/jqlang/jq:latest "$@"
} }

View File

@ -49,6 +49,9 @@ case "$PROJECT" in
ccp) ccp)
site_configuration_repository_middle="git.verbis.dkfz.de/bridgehead-configurations/bridgehead-config-" site_configuration_repository_middle="git.verbis.dkfz.de/bridgehead-configurations/bridgehead-config-"
;; ;;
leme)
site_configuration_repository_middle="git.verbis.dkfz.de/bridgehead-configurations/bridgehead-config-"
;;
bbmri) bbmri)
site_configuration_repository_middle="git.verbis.dkfz.de/bbmri-bridgehead-configs/" site_configuration_repository_middle="git.verbis.dkfz.de/bbmri-bridgehead-configs/"
;; ;;
@ -89,6 +92,9 @@ elif [[ "$DEV_MODE" == "DEV" ]]; then
fi fi
chown -R bridgehead /etc/bridgehead /srv/docker/bridgehead chown -R bridgehead /etc/bridgehead /srv/docker/bridgehead
mkdir -p /tmp/bridgehead /var/cache/bridgehead
chown -R bridgehead:docker /tmp/bridgehead /var/cache/bridgehead
chmod -R g+wr /var/cache/bridgehead /tmp/bridgehead
log INFO "System preparation is completed and configuration is present." log INFO "System preparation is completed and configuration is present."

View File

@ -67,29 +67,30 @@ log INFO "Checking network access ($BROKER_URL_FOR_PREREQ) ..."
source /etc/bridgehead/${PROJECT}.conf source /etc/bridgehead/${PROJECT}.conf
source ${PROJECT}/vars source ${PROJECT}/vars
set +e if [ "${PROJECT}" != "minimal" ]; then
SERVERTIME="$(https_proxy=$HTTPS_PROXY_FULL_URL curl -m 5 -s -I $BROKER_URL_FOR_PREREQ 2>&1 | grep -i -e '^Date: ' | sed -e 's/^Date: //i')" set +e
RET=$? SERVERTIME="$(https_proxy=$HTTPS_PROXY_FULL_URL curl -m 5 -s -I $BROKER_URL_FOR_PREREQ 2>&1 | grep -i -e '^Date: ' | sed -e 's/^Date: //i')"
set -e RET=$?
if [ $RET -ne 0 ]; then set -e
log WARN "Unable to connect to Samply.Beam broker at $BROKER_URL_FOR_PREREQ. Please check your proxy settings.\nThe currently configured proxy was \"$HTTPS_PROXY_URL\". This error is normal when using proxy authentication." if [ $RET -ne 0 ]; then
log WARN "Unable to check clock skew due to previous error." log WARN "Unable to connect to Samply.Beam broker at $BROKER_URL_FOR_PREREQ. Please check your proxy settings.\nThe currently configured proxy was \"$HTTPS_PROXY_URL\". This error is normal when using proxy authentication."
else log WARN "Unable to check clock skew due to previous error."
log INFO "Checking clock skew ..." else
log INFO "Checking clock skew ..."
SERVERTIME_AS_TIMESTAMP=$(date --date="$SERVERTIME" +%s) SERVERTIME_AS_TIMESTAMP=$(date --date="$SERVERTIME" +%s)
MYTIME=$(date +%s) MYTIME=$(date +%s)
SKEW=$(($SERVERTIME_AS_TIMESTAMP - $MYTIME)) SKEW=$(($SERVERTIME_AS_TIMESTAMP - $MYTIME))
SKEW=$(echo $SKEW | awk -F- '{print $NF}') SKEW=$(echo $SKEW | awk -F- '{print $NF}')
SYNCTEXT="For example, consider entering a correct NTP server (e.g. your institution's Active Directory Domain Controller in /etc/systemd/timesyncd.conf (option NTP=) and restart systemd-timesyncd." SYNCTEXT="For example, consider entering a correct NTP server (e.g. your institution's Active Directory Domain Controller in /etc/systemd/timesyncd.conf (option NTP=) and restart systemd-timesyncd."
if [ $SKEW -ge 300 ]; then if [ $SKEW -ge 300 ]; then
report_error 5 "Your clock is not synchronized (${SKEW}s off). This will cause Samply.Beam's certificate will fail. Please setup time synchronization. $SYNCTEXT" report_error 5 "Your clock is not synchronized (${SKEW}s off). This will cause Samply.Beam's certificate will fail. Please setup time synchronization. $SYNCTEXT"
exit 1 exit 1
elif [ $SKEW -ge 60 ]; then elif [ $SKEW -ge 60 ]; then
log WARN "Your clock is more than a minute off (${SKEW}s). Consider syncing to a time server. $SYNCTEXT" log WARN "Your clock is more than a minute off (${SKEW}s). Consider syncing to a time server. $SYNCTEXT"
fi fi
fi
fi fi
checkPrivKey() { checkPrivKey() {
if [ -e /etc/bridgehead/pki/${SITE_ID}.priv.pem ]; then if [ -e /etc/bridgehead/pki/${SITE_ID}.priv.pem ]; then
log INFO "Success - private key found." log INFO "Success - private key found."
@ -100,7 +101,7 @@ checkPrivKey() {
return 0 return 0
} }
if [[ "$@" =~ "noprivkey" ]]; then if [[ "$@" =~ "noprivkey" || "${PROJECT}" != "minimal" ]]; then
log INFO "Skipping check for private key for now." log INFO "Skipping check for private key for now."
else else
checkPrivKey || exit 1 checkPrivKey || exit 1

View File

@ -86,7 +86,7 @@ done
# Check docker updates # Check docker updates
log "INFO" "Checking for updates to running docker images ..." log "INFO" "Checking for updates to running docker images ..."
docker_updated="false" docker_updated="false"
for IMAGE in $(cat $PROJECT/docker-compose.yml ${OVERRIDE//-f/} minimal/docker-compose.yml | grep -v "^#" | grep "image:" | sed -e 's_^.*image: \(.*\).*$_\1_g; s_\"__g'); do for IMAGE in $($COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE config | grep "image:" | sed -e 's_^.*image: \(.*\).*$_\1_g; s_\"__g'); do
log "INFO" "Checking for Updates of Image: $IMAGE" log "INFO" "Checking for Updates of Image: $IMAGE"
if docker pull $IMAGE | grep "Downloaded newer image"; then if docker pull $IMAGE | grep "Downloaded newer image"; then
CHANGE="Image $IMAGE updated." CHANGE="Image $IMAGE updated."

View File

@ -42,18 +42,19 @@ services:
- /var/spool/squid - /var/spool/squid
volumes: volumes:
- /etc/bridgehead/trusted-ca-certs:/docker/custom-certs/:ro - /etc/bridgehead/trusted-ca-certs:/docker/custom-certs/:ro
healthcheck:
# Wait 1s before marking this service healthy. Required for the oauth2-proxy to talk to the OIDC provider on startup which will fail if the forward proxy is not started yet.
test: ["CMD", "sleep", "1"]
landing: # landing:
container_name: bridgehead-landingpage # container_name: bridgehead-landingpage
image: docker.verbis.dkfz.de/cache/samply/bridgehead-landingpage:main # image: docker.verbis.dkfz.de/cache/samply/bridgehead-landingpage:main
labels: # labels:
- "traefik.enable=true" # - "traefik.enable=true"
- "traefik.http.routers.landing.rule=PathPrefix(`/`)" # - "traefik.http.routers.landing.rule=PathPrefix(`/`)"
- "traefik.http.services.landing.loadbalancer.server.port=80" # - "traefik.http.services.landing.loadbalancer.server.port=80"
- "traefik.http.routers.landing.tls=true" # - "traefik.http.routers.landing.tls=true"
environment: # environment:
HOST: ${HOST} # HOST: ${HOST}
PROJECT: ${PROJECT} # PROJECT: ${PROJECT}
SITE_NAME: ${SITE_NAME} # SITE_NAME: ${SITE_NAME}

View File

@ -32,12 +32,14 @@ services:
LOCAL_TARGETS_FILE: "./conf/connect_targets.json" LOCAL_TARGETS_FILE: "./conf/connect_targets.json"
HTTP_PROXY: http://forward_proxy:3128 HTTP_PROXY: http://forward_proxy:3128
HTTPS_PROXY: http://forward_proxy:3128 HTTPS_PROXY: http://forward_proxy:3128
NO_PROXY: dnpm-beam-proxy,dnpm-backend, host.docker.internal NO_PROXY: dnpm-beam-proxy,dnpm-backend, host.docker.internal${DNPM_ADDITIONAL_NO_PROXY}
RUST_LOG: ${RUST_LOG:-info} RUST_LOG: ${RUST_LOG:-info}
NO_AUTH: "true" NO_AUTH: "true"
TLS_CA_CERTIFICATES_DIR: ./conf/trusted-ca-certs
extra_hosts: extra_hosts:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
volumes: volumes:
- /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro
- /etc/bridgehead/dnpm/local_targets.json:/conf/connect_targets.json:ro - /etc/bridgehead/dnpm/local_targets.json:/conf/connect_targets.json:ro
- /etc/bridgehead/dnpm/central_targets.json:/conf/central_targets.json:ro - /etc/bridgehead/dnpm/central_targets.json:/conf/central_targets.json:ro
labels: labels:
@ -48,6 +50,10 @@ services:
- "traefik.http.services.dnpm-connect.loadbalancer.server.port=8062" - "traefik.http.services.dnpm-connect.loadbalancer.server.port=8062"
- "traefik.http.routers.dnpm-connect.tls=true" - "traefik.http.routers.dnpm-connect.tls=true"
dnpm-echo:
image: docker.verbis.dkfz.de/cache/samply/bridgehead-echo:latest
container_name: bridgehead-dnpm-echo
secrets: secrets:
proxy.pem: proxy.pem:
file: /etc/bridgehead/pki/${SITE_ID}.priv.pem file: /etc/bridgehead/pki/${SITE_ID}.priv.pem

View File

@ -6,6 +6,7 @@ services:
container_name: bridgehead-dnpm-backend container_name: bridgehead-dnpm-backend
environment: environment:
- ZPM_SITE=${ZPM_SITE} - ZPM_SITE=${ZPM_SITE}
- N_RANDOM_FILES=${DNPM_SYNTH_NUM}
volumes: volumes:
- /etc/bridgehead/dnpm:/bwhc_config:ro - /etc/bridgehead/dnpm:/bwhc_config:ro
- ${DNPM_DATA_DIR}:/bwhc_data - ${DNPM_DATA_DIR}:/bwhc_data

View File

@ -14,14 +14,15 @@ if [ -n "${ENABLE_DNPM_NODE}" ]; then
log ERROR "Mandatory variable DNPM_DATA_DIR not defined!" log ERROR "Mandatory variable DNPM_DATA_DIR not defined!"
exit 1 exit 1
fi fi
if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then DNPM_SYNTH_NUM=${DNPM_SYNTH_NUM:-0}
echo "Override of landing page url already in place" if grep -q 'traefik.http.routers.landing.rule=PathPrefix(`/landing`)' /srv/docker/bridgehead/minimal/docker-compose.override.yml 2>/dev/null; then
else echo "Override of landing page url already in place"
echo "Adding override of landing page url" else
if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then echo "Adding override of landing page url"
echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml if [ -f /srv/docker/bridgehead/minimal/docker-compose.override.yml ]; then
else echo -e ' landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml else
fi echo -e 'version: "3.7"\nservices:\n landing:\n labels:\n - "traefik.http.routers.landing.rule=PathPrefix(`/landing`)"' >> /srv/docker/bridgehead/minimal/docker-compose.override.yml
fi fi
fi
fi fi

View File

@ -13,4 +13,10 @@ if [ -n "${ENABLE_DNPM}" ]; then
log DEBUG "No Broker for clock check set; using $DNPM_BROKER_URL" log DEBUG "No Broker for clock check set; using $DNPM_BROKER_URL"
fi fi
DNPM_PROXY_ID="${SITE_ID}.${DNPM_BROKER_ID}" DNPM_PROXY_ID="${SITE_ID}.${DNPM_BROKER_ID}"
# If the DNPM_NO_PROXY variable is set, prefix it with a comma (as it gets added to a comma separated list)
if [ -n "${DNPM_NO_PROXY}" ]; then
DNPM_ADDITIONAL_NO_PROXY=",${DNPM_NO_PROXY}"
else
DNPM_ADDITIONAL_NO_PROXY=""
fi
fi fi