Compare commits

...

74 Commits

Author SHA1 Message Date
28c38ed569 Provided a more general relation between resource count & disk space 2023-12-08 10:37:08 +01:00
16211cfedf Added Blaze performance info to README 2023-12-05 13:05:10 +01:00
0b90cdb769 Merge pull request #137 from samply/mtba-hotfix-image
set mtba image to latest
2023-11-30 15:00:02 +01:00
9bf1b42003 set mtba image to latest 2023-11-30 14:58:54 +01:00
7b96864e63 Merge pull request #136 from samply/bugfix/mtba-1.0.0
Bugfix: MTBA 1.0.0
2023-11-30 13:57:58 +01:00
2ba9645ab4 Bugfix: MTBA 1.0.0 2023-11-30 12:29:58 +01:00
6457b21ac6 Merge pull request #130 from samply/documentation/data_load
Information about loading data into the Bridgehead's FHIR store
2023-11-21 11:10:52 +01:00
7ce501548a Merge pull request #134 from samply/feature/ccp-obfuscation
Enable obfuscation for ccp queries
2023-11-17 13:50:34 +01:00
545c6175f5 Replaced reference to "bbmri" with more generic "project". 2023-11-08 09:55:21 +01:00
096225a77d Incorporated Patrick's comments for PR 130 2023-11-06 09:28:43 +01:00
6bf34b7732 Enable obfuscation for ccp queries 2023-11-02 07:34:56 +00:00
dc0d42ca07 Merge pull request #133 from samply/fix/auth_proxy_usage
fix: adjusted the forwarding of env vars to forward proxy
2023-10-26 11:41:06 +02:00
90248b331f fix: adjusted the forwarding of env vars to forward proxy 2023-10-25 15:22:08 +02:00
e693a8f0e6 Merge pull request #132 from samply/fix/proxy-git-update
git requires http proxy config even vor https connections
2023-10-25 11:10:09 +02:00
d16eb6c94d git requires http proxy config even vor https connections 2023-10-25 08:47:02 +00:00
b52d49b4ef Merge pull request #127 from samply/fix/proxy_usage
Added proxy user + pw detection
2023-10-24 19:15:13 +02:00
699d8d6398 fix: git call 2023-10-24 10:42:36 +02:00
7e7d184e8b Merge pull request #131 from samply/feature/adt2fhir-rest
Feature/adt2fhir rest
2023-10-24 09:45:08 +02:00
392afb6410 Fix code 2023-10-24 07:23:24 +00:00
f855a19865 Fix sed (?) 2023-10-24 07:12:18 +00:00
bbfc607104 Always define new vars 2023-10-24 07:07:06 +00:00
f008b18760 Redo proxy, set HTTPS_PROXY_HOST and HTTPS_PROXY_PORT 2023-10-24 07:01:22 +00:00
0555786435 fix bash logic 2023-10-24 07:42:27 +02:00
262b9bd62e add adt2fhir-rest service 2023-10-24 07:30:17 +02:00
e0990d99cb Comment out HTTP proxy parsing 2023-10-23 11:06:59 +00:00
9fc8564e4e Fixed git proxy check 2023-10-20 16:47:15 +02:00
74817a21da Rewrote proxy detection logic to deal with all combinations of no/authenticated/unauthenticated proxy servers 2023-10-20 15:59:24 +02:00
87cc0acecc Corrected Link to Docker Daemon Proxy Configuration (#129) 2023-10-20 14:18:56 +02:00
93026d2d89 Change tag for bridgehead-landingpage 2023-10-20 13:58:46 +02:00
d9794a1eea Information about loading data into the Bridgehead's FHIR store
Added this information because many sites have asked about it.
2023-10-20 10:21:52 +02:00
68cd62b981 reaf: var naming for proxy usage in our bridgehead scripts 2023-10-10 10:43:22 +02:00
85446b0a3e Added SECURE_PROXY if the https and http proxy are the same 2023-10-09 09:43:30 +02:00
4bdad68da5 Added proxy user + pw detection 2023-10-05 09:43:57 +02:00
3dadeef786 Merge pull request #125 from samply/urls
readme: Provide URL list for forward proxies
2023-09-27 10:06:48 +02:00
5ca11d1bf5 Update README.md 2023-09-27 10:06:28 +02:00
997c4df5c0 Merge pull request #126 from samply/fix/docker-cache
use docker cache for beam-enroll and vaultfetcher
2023-09-27 09:42:14 +02:00
3c0a994237 use docker cache for beam-enroll and vaultfetcher 2023-09-27 09:22:11 +02:00
377b003207 Refactor, add BBMRI-ERIC gitlab 2023-09-27 09:12:48 +02:00
0c75ac2810 Add healthchecks
Co-authored-by: Torben Brenner <76154651+torbrenner@users.noreply.github.com>
2023-09-27 08:48:45 +02:00
d21c6d7835 Move git/docker proxy config 2023-09-26 13:42:14 +02:00
de10c8508e readme: URL list 2023-09-26 13:25:26 +02:00
b07731442b Merge pull request #121 from samply/chown-message
Fix error messages about wrong permissions
2023-09-25 10:23:50 +02:00
52f6193fde Merge pull request #123 from samply/correct-broker-url
Use GBN Broker for timesync if ERIC is disabled
2023-09-22 09:37:35 +02:00
a4ce7f4eb6 Fix subsitution 2023-09-22 07:35:05 +00:00
49b5cb976a Use GBN Broker for timesync if ERIC is disabled 2023-09-22 07:25:04 +00:00
Jan
50ef08ca6d Merge pull request #122 from samply/check-curl
Check if curl is installed
2023-09-22 08:22:52 +02:00
c354c450f3 Check if curl is installed 2023-09-21 16:23:22 +00:00
6bb0471a64 Merge pull request #120 from samply/maintenance/updatePostgres
Update Postgres from 15.1 to 15.4
2023-09-19 11:34:45 +02:00
2b0cdc0345 Fix error messages about wrong permissions 2023-09-19 11:33:19 +02:00
850a8eb973 chore: update postgres from 15.1 to 15.4 2023-09-18 15:06:00 +02:00
6b1ea4c74e Update gbn-setup.sh 2023-09-04 15:54:22 +02:00
8c8ebb9298 Added gbn broker url and e-mail 2023-09-04 15:30:44 +02:00
0536023ceb Merge pull request #117 from samply/feature/bbmri_de
Added broker.bbmri.de root cert
2023-09-04 14:44:38 +02:00
3a3a9d09a9 Added broker.bbmri.de root cert 2023-09-04 14:30:52 +02:00
c1f2131438 Merge pull request #116 from samply/main_missing_section
Changed section title in TOC
2023-09-01 14:13:10 +02:00
60e0db00a7 Changed section title in TOC 2023-09-01 14:02:46 +02:00
191be47252 Merge pull request #106 from samply/main_tls_docu
Added advice for finding PEM files
2023-08-30 11:55:56 +02:00
42300e923f Corrected URL 2023-08-30 11:53:06 +02:00
6b025a8f6a Merge branch 'main' into main_tls_docu 2023-08-30 11:52:13 +02:00
4ab1ff2008 Merge pull request #115 from samply/main_zdenkas_directory_documentation
Zdenkas updates for Directory and Collection usage
2023-08-30 11:28:59 +02:00
dddbf0efd0 Zdenkas updates for Directory and Collection usage
This updates documentatin only.
2023-08-29 10:41:25 +02:00
f4ff6f418a Merge pull request #113 from samply/main_documentation_git_docker_proxy
Added info about git and Docker proxy to documenation.
2023-08-29 10:24:05 +02:00
53c9580a46 Merge pull request #114 from samply/fix/dnpm-connect-env
Fix dnpm connect env, from bool to string
2023-08-29 07:47:14 +02:00
169ce2436f fix dnpm connect env, from bool to string 2023-08-28 17:21:52 +00:00
66deff38a2 Corrected Docker link 2023-08-28 10:24:18 +02:00
eeba6bce39 Added info about git and Docker proxy to documenation. 2023-08-28 10:15:19 +02:00
09b02fe4b6 Merge pull request #112 from samply/fix/dnpm-connect-tag
Use beam-connect:develop for DNPM
2023-08-24 19:23:50 +02:00
bba8a03f9f Use beam-connect:develop for DNPM 2023-08-24 12:22:43 +00:00
Jan
86239a80e7 Merge pull request #107 from samply/feature/testable-bridgehead
Dont require beam enroll to run interactively
2023-08-22 10:22:21 +02:00
6cfa745385 Remove -it from docker run 2023-08-17 11:21:20 +00:00
cfb1bed7b4 Adapt to changes in main 2023-08-17 11:20:38 +00:00
ff942ac735 Merge pull request #109 from samply/dktk-migration
Move DKTK-migration to Main
2023-08-16 09:48:12 +02:00
705fbeaf97 Added advice for finding PEM files 2023-08-14 13:18:42 +02:00
3a4c7b2ece dont require beam enroll to run interactively 2023-07-26 12:26:37 +00:00
22 changed files with 219 additions and 58 deletions

112
README.md
View File

@ -21,7 +21,8 @@ This repository is the starting point for any information and tools you will nee
- [HTTPS Access](#https-access) - [HTTPS Access](#https-access)
- [TLS terminating proxies](#tls-terminating-proxies) - [TLS terminating proxies](#tls-terminating-proxies)
- [File structure](#file-structure) - [File structure](#file-structure)
- [BBMRI-ERIC Directory](#bbmri-eric-directory) - [BBMRI-ERIC Directory entry needed](#bbmri-eric-directory-entry-needed)
- [Loading data](#loading-data)
4. [Things you should know](#things-you-should-know) 4. [Things you should know](#things-you-should-know)
- [Auto-Updates](#auto-updates) - [Auto-Updates](#auto-updates)
- [Auto-Backups](#auto-backups) - [Auto-Backups](#auto-backups)
@ -51,22 +52,41 @@ Ensure the following software (or newer) is installed:
- docker >= 20.10.1 - docker >= 20.10.1
- docker-compose >= 2.xx (`docker-compose` and `docker compose` are both supported). - docker-compose >= 2.xx (`docker-compose` and `docker compose` are both supported).
- systemd - systemd
- curl
We recommend to install Docker(-compose) from its official sources as described on the [Docker website](https://docs.docker.com). We recommend to install Docker(-compose) from its official sources as described on the [Docker website](https://docs.docker.com).
Note for Ubuntu: Please note that snap versions of Docker are not supported. > 📝 Note for Ubuntu: Snap versions of Docker are not supported.
### Network ### Network
A running Bridgehead requires an outgoing HTTPS proxy to communicate with the central components. A Bridgehead communicates to all central components via outgoing HTTPS connections.
Additionally, your site might use its own proxy. You should discuss this with your local systems administration. If a proxy is being used, you will need to note down the URL of the proxy. If it is a secure proxy, then you will also need to make a note of its username and password. This information will be used later on during the installation process. Your site might require an outgoing proxy (i.e. HTTPS forward proxy) to connect to external servers; you should discuss this with your local systems administration. In that case, you will need to note down the URL of the proxy. If the proxy requires authentication, you will also need to make a note of its username and password. This information will be used later on during the installation process. TLS terminating proxies are also supported, see [here](#tls-terminating-proxies). Apart from the Bridgehead itself, you may also need to configure the proxy server in [git](https://gist.github.com/evantoli/f8c23a37eb3558ab8765) and [docker](https://docs.docker.com/network/proxy/).
Note that git and Docker may also need to be configured to use this proxy. This is a job for your systems administrators. The following URLs need to be accessible (prefix with `https://`):
* To fetch code and configuration from git repositories
* github.com
* git.verbis.dkfz.de
* To fetch docker images
* docker.verbis.dkfz.de
* Official Docker, Inc. URLs (subject to change, see [official list](https://docs.docker.com/desktop/all))
* hub.docker.com
* registry-1.docker.io
* production.cloudflare.docker.com
* To report bridgeheads operational status
* healthchecks.verbis.dkfz.de
* only for DKTK/CCP
* broker.ccp-it.dktk.dkfz.de
* only for BBMRI-ERIC
* broker.bbmri.samply.de
* gitlab.bbmri-eric.eu
* only for German Biobank Node
* broker.bbmri.de
If there is a site firewall, this needs to be configured so that outgoing calls to the following URLs are allowed: *.dkfz.de, github.com, docker.io, *.docker.io, *.samply.de. > 📝 This URL list is subject to change. Instead of the individual names, we highly recommend whitelisting wildcard domains: *.dkfz.de, github.com, *.docker.com, *.docker.io, *.samply.de, *.bbmri.de.
Note for Ubuntu: Please note that the uncomplicated firewall (ufw) is known to conflict with Docker [here](https://github.com/chaifeng/ufw-docker). > 📝 Ubuntu's pre-installed uncomplicated firewall (ufw) is known to conflict with Docker, more info [here](https://github.com/chaifeng/ufw-docker).
## Deployment ## Deployment
@ -99,7 +119,7 @@ Mention:
We will set the repository up for you. We will then send you: We will set the repository up for you. We will then send you:
- A Repository Short Name (RSN). Beware: this is distinct from your site name. - A Repository Short Name (RSN). Beware: this is distinct from your site name.
- Repository URL containing the acces token eg. https://BH_Dummy:dummy_token@git.verbis.dkfz.de/bbmri-bridgehead-configs/dummy.git - Repository URL containing the acces token eg. https://BH_Dummy:dummy_token@git.verbis.dkfz.de/<project>-bridgehead-configs/dummy.git
During the installation, your Bridgehead will download your site's configuration from GitLab and you can review the details provided to us by email. During the installation, your Bridgehead will download your site's configuration from GitLab and you can review the details provided to us by email.
@ -235,6 +255,21 @@ Even within your internal network, the Bridgehead enforces HTTPS for all service
All of the Bridgehead's outgoing connections are secured by transport encryption (TLS) and a Bridgehead will refuse to connect if certificate verification fails. If your local forward proxy server performs TLS termination, please place its CA certificate in `/etc/bridgehead/trusted-ca-certs` as a `.pem` file, e.g. `/etc/bridgehead/trusted-ca-certs/mylocalca.pem`. Then, all Bridgehead components will pick up this certificate and trust it for outgoing connections. All of the Bridgehead's outgoing connections are secured by transport encryption (TLS) and a Bridgehead will refuse to connect if certificate verification fails. If your local forward proxy server performs TLS termination, please place its CA certificate in `/etc/bridgehead/trusted-ca-certs` as a `.pem` file, e.g. `/etc/bridgehead/trusted-ca-certs/mylocalca.pem`. Then, all Bridgehead components will pick up this certificate and trust it for outgoing connections.
To find the certificate file, first run the following:
```
curl -v https://broker.bbmri.samply.de/v1/health
```
In the output, look out for the line:
```
successfully set certificate verify locations:
```
Here a file will be mentioned, perhaps in the directory /etc/ssl/certs. The exact location will depend on your operating system. This is the file that you need to copy.
### File structure ### File structure
- `/srv/docker/bridgehead` contains this git repository with the shell scripts and *project-specific configuration*. In here, all files are identical for all sites. You should not make any changes here. - `/srv/docker/bridgehead` contains this git repository with the shell scripts and *project-specific configuration*. In here, all files are identical for all sites. You should not make any changes here.
@ -247,28 +282,29 @@ All of the Bridgehead's outgoing connections are secured by transport encryption
Your Bridgehead's actual data is not stored in the above directories, but in named docker volumes, see `docker volume ls` and `docker volume inspect <volume_name>`. Your Bridgehead's actual data is not stored in the above directories, but in named docker volumes, see `docker volume ls` and `docker volume inspect <volume_name>`.
### BBMRI-ERIC Directory ### BBMRI-ERIC Directory entry needed
If you run a biobank, you should register with the [Directory](https://directory.bbmri-eric.eu), a BBMRI-ERIC project that catalogs biobanks. If you run a biobank, you should be listed together with your collections with in the [Directory](https://directory.bbmri-eric.eu), a BBMRI-ERIC project that catalogs biobanks.
To do this, contact the BBMRI-ERIC national node for the country where your biobank is based, see [the list of nodes](http://www.bbmri-eric.eu/national-nodes/). To do this, contact the BBMRI-ERIC national node for the country where your biobank is based, see [the list of nodes](http://www.bbmri-eric.eu/national-nodes/).
Once you have registered, **you should choose one of your sample collections as a default collection for your biobank**. This is the collection that will be automatically used to label any samples that have not been assigned a collection ID in your ETL process. Make a note of this ID, you will need it later on in the installation process. Once you have added your biobank to the Directory you got persistent identifier (PID) for your biobank and unique identifiers (IDs) for your collections. The collection IDs are necessary for the biospecimens assigning to the collections and later in the data flows between BBMRI-ERIC tools. In case you cannot distribute all your biospecimens within collections via assigning the collection IDs, **you should choose one of your sample collections as a default collection for your biobank**. This collection will be automatically used to label any samples that have not been assigned a collection ID in your ETL process. Make a note of this default collection ID, you will need it later on in the installation process.
The Bridgehead's **Directory Sync** is an optional feature that keeps the Directory up to date with your local data, e.g. number of samples. Conversely, it also updates the local FHIR store with the latest contact details etc. from the Directory. You must explicitly set your country specific directory url, username and password to enable this feature. ### Directory sync tool
The Bridgehead's **Directory Sync** is an optional feature that keeps the Directory up to date with your local data, e.g. number of samples. Conversely, it also updates the local FHIR store with the latest contact details etc. from the Directory. You must explicitly set your country specific directory URL, username and password to enable this feature.
Full details can be found in [directory_sync_service](https://github.com/samply/directory_sync_service). Full details can be found in [directory_sync_service](https://github.com/samply/directory_sync_service).
To enable it, you will need to set these variables to the ```bbmri.conf``` file of your GitLab repository. Here is an example config: To enable it, you will need to set these variables to the ```bbmri.conf``` file of your GitLab repository. Here is an example config:
``` ```
### Directory sync service
DS_DIRECTORY_URL=https://directory.bbmri-eric.eu DS_DIRECTORY_URL=https://directory.bbmri-eric.eu
DS_DIRECTORY_USER_NAME=your_directory_username DS_DIRECTORY_USER_NAME=your_directory_username
DS_DIRECTORY_USER_PASS=qwdnqwswdvqHBVGFR9887 DS_DIRECTORY_USER_PASS=qwdnqwswdvqHBVGFR9887
DS_TIMER_CRON="0 22 * * *" DS_TIMER_CRON="0 22 * * *"
``` ```
You must contact the Directory for your national node to find the URL, and to register as a user. You must contact the Directory team for your national node to find the URL, and to register as a user.
Additionally, you should choose when you want Directory sync to run. In the example above, this is set to happen at 10 pm every evening. You can modify this to suit your requirements. The timer specification should follow the [cron](https://crontab.guru) convention. Additionally, you should choose when you want Directory sync to run. In the example above, this is set to happen at 10 pm every evening. You can modify this to suit your requirements. The timer specification should follow the [cron](https://crontab.guru) convention.
@ -276,6 +312,32 @@ Once you edited the gitlab config, the bridgehead will autoupdate the config wit
There will be a delay before the effects of Directory sync become visible. First, you will need to wait until the time you have specified in ```TIMER_CRON```. Second, the information will then be synchronized from your national node with the central European Directory. This can take up to 24 hours. There will be a delay before the effects of Directory sync become visible. First, you will need to wait until the time you have specified in ```TIMER_CRON```. Second, the information will then be synchronized from your national node with the central European Directory. This can take up to 24 hours.
### Loading data
The data accessed by the federated search is held in the Bridgehead in a FHIR store (we use Blaze).
You can load data into this store by using its FHIR API:
```
https://<Name of your server>/bbmri-localdatamanagement/fhir
```
The name of your server will generally be the full name of the VM that the Bridgehead runs on. You can alternatively supply an IP address.
The FHIR API uses basic auth. You can find the credentials in `/etc/bridgehead/<project>.local.conf`.
Note that if you don't have a DNS certificate for the Bridgehead, you will need to allow an insecure connection. E.g. with curl, use the `-k` flag.
The storage space on your hard drive will depend on the number of FHIR resources that you intend to generate. This will be the sum of the number of patients/subjects, the number of samples, the number of conditions/diseases and the number of observations. As a general rule of thumb, you can assume that each resource will consume about 2 kilobytes of disk space.
For more information on Blaze performance, please refer to [import performance](https://github.com/samply/blaze/blob/master/docs/performance/import.md).
#### ETL for BBMRI and GBA
Normally, you will need to build your own ETL to feed the Bridgehead. However, there is one case where a short cut might be available:
- If you are using CentraXX as a BIMS and you have a FHIR-Export License, then you can employ standard mapping scripts that access the CentraXX-internal data structures and map the data onto the BBMRI FHIR profile. It may be necessary to adjust a few parameters, but this is nonetheless significantly easier than writing your own ETL.
You can find the profiles for generating FHIR in [Simplifier](https://simplifier.net/bbmri.de/~resources?category=Profile).
## Things you should know ## Things you should know
### Auto-Updates ### Auto-Updates
@ -319,8 +381,28 @@ Installation under WSL ought to work, but we have not tested this.
### Docker Daemon Proxy Configuration ### Docker Daemon Proxy Configuration
Docker has a background daemon, responsible for downloading images and starting them. Sometimes, proxy configuration from your system won't carry over and it will fail to download images. In that case, configure the proxy for this daemon as described in the [official documentation](https://docs.docker.com). Docker has a background daemon, responsible for downloading images and starting them. Sometimes, proxy configuration from your system won't carry over and it will fail to download images. In that case, you'll need to configure the proxy inside the system unit of docker by creating the file `/etc/systemd/system/docker.service.d/proxy.conf` with the following content:
``` ini
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:3128"
Environment="HTTPS_PROXY=https://proxy.example.com:3128"
Environment="NO_PROXY=localhost,127.0.0.1,some-local-docker-registry.example.com,.corp"
```
After saving the configuration file, you'll need to reload the system daemon for the changes to take effect:
``` shell
sudo systemctl daemon-reload
```
and restart the docker daemon:
``` shell
sudo systemctl restart docker
```
For more information, please consult the [official documentation](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy).
### Monitoring ### Monitoring

View File

@ -22,7 +22,7 @@ services:
dnpm-beam-connect: dnpm-beam-connect:
depends_on: [ dnpm-beam-proxy ] depends_on: [ dnpm-beam-proxy ]
image: docker.verbis.dkfz.de/cache/samply/beam-connect:dnpm image: docker.verbis.dkfz.de/cache/samply/beam-connect:develop
container_name: bridgehead-dnpm-beam-connect container_name: bridgehead-dnpm-beam-connect
environment: environment:
PROXY_URL: http://dnpm-beam-proxy:8081 PROXY_URL: http://dnpm-beam-proxy:8081
@ -34,6 +34,7 @@ services:
HTTPS_PROXY: http://forward_proxy:3128 HTTPS_PROXY: http://forward_proxy:3128
NO_PROXY: dnpm-beam-proxy,dnpm-backend NO_PROXY: dnpm-beam-proxy,dnpm-backend
RUST_LOG: ${RUST_LOG:-info} RUST_LOG: ${RUST_LOG:-info}
NO_AUTH: "true"
volumes: volumes:
- /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

View File

@ -5,9 +5,9 @@ if [ "${ENABLE_GBN}" == "true" ]; then
OVERRIDE+=" -f ./$PROJECT/modules/gbn-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/gbn-compose.yml"
# Set required variables # Set required variables
GBN_BROKER_ID='#TODO#' GBN_BROKER_ID=broker.bbmri.de
GBN_BROKER_URL=https://${GBN_BROKER_ID} GBN_BROKER_URL=https://${GBN_BROKER_ID}
GBN_PROXY_ID=${SITE_ID}.${GBN_BROKER_ID} GBN_PROXY_ID=${SITE_ID}.${GBN_BROKER_ID}
GBN_FOCUS_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)" GBN_FOCUS_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
GBN_SUPPORT_EMAIL=todo@verbis.dkfz.de GBN_SUPPORT_EMAIL=feedback@germanbiobanknode.de
fi fi

View File

@ -1 +1,20 @@
#TODO# -----BEGIN CERTIFICATE-----
MIIDNTCCAh2gAwIBAgIUckVOQQWZBTC0pWhn1X3lPxAWricwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAxMLQnJva2VyLVJvb3QwHhcNMjMwOTA0MDkwMTQ0WhcNMzMw
OTAxMDkwMjEzWjAWMRQwEgYDVQQDEwtCcm9rZXItUm9vdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAOOD+CVvteBmu1hKV1QlfbHmiLCnuf6F+9k+1u/b
6as6k7BURn8KZAxVLWSIwC6x2C7n9CHN9Jieb4DWpS0XmXQVUEpT1/yiLGBdxp2x
nrbzm7caOunsWsPlGOcXPJKJpzAhcg58RDzXZ+2+shulSmsgPNlWBaLhNL5wj0sQ
MzbwGVlGIJg18Ye/9WgQkO2ZcnTGb5cRsChKs4H43ZC34ZSSk7wqWg6P3e2xFam1
YKXBOZzhwHoI4AxUQ+gd6upz5dqcwbaNZm10VP8fMac2dMLw9cOCS0ueDCS4viLd
A69yds19AndBPMZhoEY1UHafjJ1uITRJQpaaB4vNliX+1rECAwEAAaN7MHkwDgYD
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFC74YIorSwWD
/s5ozz3xvqUMDJ3qMB8GA1UdIwQYMBaAFC74YIorSwWD/s5ozz3xvqUMDJ3qMBYG
A1UdEQQPMA2CC0Jyb2tlci1Sb290MA0GCSqGSIb3DQEBCwUAA4IBAQCzcIccBzYr
sHCGTGsSyLGBYsuI5yl+hvFOitYTha/mC+XBxq2R6By2WzbfSZtyZkUtC/+FqdCY
VtMSjbDVXtBgsabfqODBobHmPyOEmNUX4IGcyn06rdM+rHQRah98lF+PhiPPO42F
9Wj8dkq4/Gf+Yarq31ZbY0sed2sEPZ/bV26Og8Ft9qip5gKwklyakAiCnDIq+QBd
ltvng3g08AQM0o5KIphP2/WU0UoSk1YPVMjRxuLiFg8xvr2EdCQQ9oA7xbhrmAXe
242HVW/7KokjmowyWTQlIUGnuGdCOtTl8h74eHTID0YWO68hHkA0J5Ox2j4dZxvw
HRFTxAR1gGKX
-----END CERTIFICATE-----

View File

@ -14,7 +14,7 @@ do
done done
SUPPORT_EMAIL=$ERIC_SUPPORT_EMAIL SUPPORT_EMAIL=$ERIC_SUPPORT_EMAIL
BROKER_URL_FOR_PREREQ=$ERIC_BROKER_URL BROKER_URL_FOR_PREREQ="${ERIC_BROKER_URL:-$GBN_BROKER_URL}"
if [ -n "$GBN_SUPPORT_EMAIL" ]; then if [ -n "$GBN_SUPPORT_EMAIL" ]; then
SUPPORT_EMAIL=$GBN_SUPPORT_EMAIL SUPPORT_EMAIL=$GBN_SUPPORT_EMAIL

View File

@ -65,6 +65,7 @@ loadVars() {
fi fi
detectCompose detectCompose
setHostname setHostname
setupProxy
} }
case "$ACTION" in case "$ACTION" in

View File

@ -28,7 +28,7 @@ services:
BLAZE_URL: "http://bridgehead-ccp-blaze:8080/fhir/" BLAZE_URL: "http://bridgehead-ccp-blaze:8080/fhir/"
BEAM_PROXY_URL: http://beam-proxy:8081 BEAM_PROXY_URL: http://beam-proxy:8081
RETRY_COUNT: ${FOCUS_RETRY_COUNT} RETRY_COUNT: ${FOCUS_RETRY_COUNT}
OBFUSCATE: "no" EPSILON: 0.28
depends_on: depends_on:
- "beam-proxy" - "beam-proxy"
- "blaze" - "blaze"

View File

@ -0,0 +1,18 @@
version: "3.7"
services:
adt2fhir-rest:
container_name: bridgehead-adt2fhir-rest
image: docker.verbis.dkfz.de/ccp/adt2fhir-rest:main
environment:
IDTYPE: BK_${IDMANAGEMENT_FRIENDLY_ID}_L-ID
MAINZELLISTE_APIKEY: ${IDMANAGER_LOCAL_PATIENTLIST_APIKEY}
SALT: ${LOCAL_SALT}
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.adt2fhir-rest.rule=PathPrefix(`/adt2fhir-rest`)"
- "traefik.http.middlewares.adt2fhir-rest_strip.stripprefix.prefixes=/adt2fhir-rest"
- "traefik.http.services.adt2fhir-rest.loadbalancer.server.port=8080"
- "traefik.http.routers.adt2fhir-rest.tls=true"
- "traefik.http.routers.adt2fhir-rest.middlewares=adt2fhir-rest_strip,auth"

View File

@ -0,0 +1,13 @@
#!/bin/bash
function adt2fhirRestSetup() {
if [ -n "$ENABLE_ADT2FHIR_REST" ]; then
log INFO "ADT2FHIR-REST setup detected -- will start adt2fhir-rest API."
if [ ! -n "$IDMANAGER_LOCAL_PATIENTLIST_APIKEY" ]; then
log ERROR "Missing ID-Management Module! Fix this by setting up ID Management:"
exit 1;
fi
OVERRIDE+=" -f ./$PROJECT/modules/adt2fhir-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
}

View File

@ -6,7 +6,7 @@ services:
APP_dnpm-connect_KEY: ${DNPM_BEAM_SECRET_SHORT} APP_dnpm-connect_KEY: ${DNPM_BEAM_SECRET_SHORT}
dnpm-beam-connect: dnpm-beam-connect:
depends_on: [ beam-proxy ] depends_on: [ beam-proxy ]
image: docker.verbis.dkfz.de/cache/samply/beam-connect:dnpm image: docker.verbis.dkfz.de/cache/samply/beam-connect:develop
container_name: bridgehead-dnpm-beam-connect container_name: bridgehead-dnpm-beam-connect
environment: environment:
PROXY_URL: http://beam-proxy:8081 PROXY_URL: http://beam-proxy:8081
@ -18,6 +18,7 @@ services:
HTTPS_PROXY: "http://forward_proxy:3128" HTTPS_PROXY: "http://forward_proxy:3128"
NO_PROXY: beam-proxy,dnpm-backend NO_PROXY: beam-proxy,dnpm-backend
RUST_LOG: ${RUST_LOG:-info} RUST_LOG: ${RUST_LOG:-info}
NO_AUTH: "true"
volumes: volumes:
- /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

View File

@ -43,7 +43,7 @@ services:
- patientlist-db - patientlist-db
patientlist-db: patientlist-db:
image: docker.verbis.dkfz.de/cache/postgres:15.1-alpine image: docker.verbis.dkfz.de/cache/postgres:15.4-alpine
container_name: bridgehead-patientlist-db container_name: bridgehead-patientlist-db
environment: environment:
POSTGRES_USER: "mainzelliste" POSTGRES_USER: "mainzelliste"

View File

@ -39,6 +39,7 @@ function applySpecialCases() {
result="$1"; result="$1";
result="${result/Lmu/LMU}"; result="${result/Lmu/LMU}";
result="${result/Tum/TUM}"; result="${result/Tum/TUM}";
result="${result/Dktk Test/Teststandort}";
echo "$result"; echo "$result";
} }

View File

@ -2,7 +2,7 @@ version: "3.7"
services: services:
mtba: mtba:
image: docker.verbis.dkfz.de/cache/samply/mtba:develop image: docker.verbis.dkfz.de/cache/samply/mtba:latest
container_name: bridgehead-mtba container_name: bridgehead-mtba
environment: environment:
BLAZE_STORE_URL: http://blaze:8080 BLAZE_STORE_URL: http://blaze:8080

View File

@ -1,11 +1,10 @@
#!/bin/bash #!/bin/bash
function mtbaSetup() { function mtbaSetup() {
# TODO: Check if ID-Management Module is activated!
if [ -n "$ENABLE_MTBA" ];then if [ -n "$ENABLE_MTBA" ];then
log INFO "MTBA setup detected -- will start MTBA Service and CBioPortal." log INFO "MTBA setup detected -- will start MTBA Service and CBioPortal."
if [ ! -n "$IDMANAGER_UPLOAD_APIKEY" ]; then if [ ! -n "$IDMANAGER_UPLOAD_APIKEY" ]; then
log ERROR "Detected MTBA Module configuration but ID-Management Module seems not to be configured!" log ERROR "Missing ID-Management Module! Fix this by setting up ID Management:"
exit 1; exit 1;
fi fi
OVERRIDE+=" -f ./$PROJECT/modules/mtba-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/mtba-compose.yml"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
function nngmSetup() { if [ -n "$NNGM_CTS_APIKEY" ]; then
if [ -n "$NNGM_CTS_APIKEY" ]; then
log INFO "nNGM setup detected -- will start nNGM Connector." log INFO "nNGM setup detected -- will start nNGM Connector."
OVERRIDE+=" -f ./$PROJECT/modules/nngm-compose.yml" OVERRIDE+=" -f ./$PROJECT/modules/nngm-compose.yml"
fi fi
}

View File

@ -16,5 +16,5 @@ do
done done
idManagementSetup idManagementSetup
nngmSetup
mtbaSetup mtbaSetup
adt2fhirRestSetup

View File

@ -9,6 +9,33 @@ detectCompose() {
fi fi
} }
setupProxy() {
### Note: As the current data protection concepts do not allow communication via HTTP,
### we are not setting a proxy for HTTP requests.
local http="no"
local https="no"
if [ $HTTPS_PROXY_URL ]; then
local proto="$(echo $HTTPS_PROXY_URL | grep :// | sed -e 's,^\(.*://\).*,\1,g')"
local fqdn="$(echo ${HTTPS_PROXY_URL/$proto/})"
local hostport=$(echo $HTTPS_PROXY_URL | sed -e "s,$proto,,g" | cut -d/ -f1)
HTTPS_PROXY_HOST="$(echo $hostport | sed -e 's,:.*,,g')"
HTTPS_PROXY_PORT="$(echo $hostport | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')"
if [[ ! -z "$HTTPS_PROXY_USERNAME" && ! -z "$HTTPS_PROXY_PASSWORD" ]]; then
local proto="$(echo $HTTPS_PROXY_URL | grep :// | sed -e 's,^\(.*://\).*,\1,g')"
local fqdn="$(echo ${HTTPS_PROXY_URL/$proto/})"
HTTPS_PROXY_FULL_URL="$(echo $proto$HTTPS_PROXY_USERNAME:$HTTPS_PROXY_PASSWORD@$fqdn)"
https="authenticated"
else
HTTPS_PROXY_FULL_URL=$HTTPS_PROXY_URL
https="unauthenticated"
fi
fi
log INFO "Configuring proxy servers: $http http proxy (we're not supporting unencrypted comms), $https https proxy"
export HTTPS_PROXY_HOST HTTPS_PROXY_PORT HTTPS_PROXY_FULL_URL
}
exitIfNotRoot() { exitIfNotRoot() {
if [ "$EUID" -ne 0 ]; then if [ "$EUID" -ne 0 ]; then
log "ERROR" "Please run as root" log "ERROR" "Please run as root"
@ -49,7 +76,7 @@ fetchVarsFromVault() {
set +e set +e
PASS=$(BW_MASTERPASS="$BW_MASTERPASS" BW_CLIENTID="$BW_CLIENTID" BW_CLIENTSECRET="$BW_CLIENTSECRET" docker run --rm -e BW_MASTERPASS -e BW_CLIENTID -e BW_CLIENTSECRET -e http_proxy samply/bridgehead-vaultfetcher $@) PASS=$(BW_MASTERPASS="$BW_MASTERPASS" BW_CLIENTID="$BW_CLIENTID" BW_CLIENTSECRET="$BW_CLIENTSECRET" docker run --rm -e BW_MASTERPASS -e BW_CLIENTID -e BW_CLIENTSECRET -e http_proxy docker.verbis.dkfz.de/cache/samply/bridgehead-vaultfetcher:latest $@)
RET=$? RET=$?
if [ $RET -ne 0 ]; then if [ $RET -ne 0 ]; then
@ -188,7 +215,7 @@ function do_enroll_inner {
PARAMS+="--admin-email $SUPPORT_EMAIL" PARAMS+="--admin-email $SUPPORT_EMAIL"
fi fi
docker run --rm -ti -v /etc/bridgehead/pki:/etc/bridgehead/pki samply/beam-enroll:latest --output-file $PRIVATEKEYFILENAME --proxy-id $MANUAL_PROXY_ID $PARAMS docker run --rm -v /etc/bridgehead/pki:/etc/bridgehead/pki docker.verbis.dkfz.de/cache/samply/beam-enroll:latest --output-file $PRIVATEKEYFILENAME --proxy-id $MANUAL_PROXY_ID $PARAMS
chmod 600 $PRIVATEKEYFILENAME chmod 600 $PRIVATEKEYFILENAME
} }

View File

@ -47,8 +47,8 @@ function hc_send(){
if [ -n "$2" ]; then if [ -n "$2" ]; then
MSG="$2\n\nDocker stats:\n$UPTIME" MSG="$2\n\nDocker stats:\n$UPTIME"
echo -e "$MSG" | https_proxy=$HTTPS_PROXY_URL curl --max-time 5 -A "$USER_AGENT" -s -o /dev/null -X POST --data-binary @- "$HCURL"/"$1" || log WARN "Monitoring failed: Unable to send data to $HCURL/$1" echo -e "$MSG" | https_proxy=$HTTPS_PROXY_FULL_URL curl --max-time 5 -A "$USER_AGENT" -s -o /dev/null -X POST --data-binary @- "$HCURL"/"$1" || log WARN "Monitoring failed: Unable to send data to $HCURL/$1"
else else
https_proxy=$HTTPS_PROXY_URL curl --max-time 5 -A "$USER_AGENT" -s -o /dev/null "$HCURL"/"$1" || log WARN "Monitoring failed: Unable to send data to $HCURL/$1" https_proxy=$HTTPS_PROXY_FULL_URL curl --max-time 5 -A "$USER_AGENT" -s -o /dev/null "$HCURL"/"$1" || log WARN "Monitoring failed: Unable to send data to $HCURL/$1"
fi fi
} }

View File

@ -14,7 +14,7 @@ checkOwner /etc/bridgehead 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 ..."
prerequisites="git docker" prerequisites="git docker curl"
for prerequisite in $prerequisites; do for prerequisite in $prerequisites; do
$prerequisite --version 2>&1 $prerequisite --version 2>&1
is_available=$? is_available=$?
@ -68,7 +68,7 @@ source /etc/bridgehead/${PROJECT}.conf
source ${PROJECT}/vars source ${PROJECT}/vars
set +e set +e
SERVERTIME="$(https_proxy=$HTTPS_PROXY_URL curl -m 5 -s -I $BROKER_URL_FOR_PREREQ 2>&1 | grep -i -e '^Date: ' | sed -e 's/^Date: //i')" 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')"
RET=$? RET=$?
set -e set -e
if [ $RET -ne 0 ]; then if [ $RET -ne 0 ]; then

View File

@ -30,7 +30,7 @@ source $CONFFILE
assertVarsNotEmpty SITE_ID || fail_and_report 1 "Update failed: SITE_ID empty" assertVarsNotEmpty SITE_ID || fail_and_report 1 "Update failed: SITE_ID empty"
export SITE_ID export SITE_ID
checkOwner . bridgehead || fail_and_report 1 "Update failed: Wrong permissions in $(pwd)" checkOwner /srv/docker/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /srv/docker/bridgehead"
checkOwner /etc/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /etc/bridgehead" checkOwner /etc/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /etc/bridgehead"
CREDHELPER="/srv/docker/bridgehead/lib/gitpassword.sh" CREDHELPER="/srv/docker/bridgehead/lib/gitpassword.sh"
@ -50,12 +50,12 @@ for DIR in /etc/bridgehead $(pwd); do
git -C $DIR config credential.helper "$CREDHELPER" git -C $DIR config credential.helper "$CREDHELPER"
fi fi
old_git_hash="$(git -C $DIR rev-parse --verify HEAD)" old_git_hash="$(git -C $DIR rev-parse --verify HEAD)"
if [ -z "$HTTP_PROXY_URL" ]; then if [ -z "$HTTPS_PROXY_FULL_URL" ]; then
log "INFO" "Git is using no proxy!" log "INFO" "Git is using no proxy!"
OUT=$(retry 5 git -C $DIR fetch 2>&1 && retry 5 git -C $DIR pull 2>&1) OUT=$(retry 5 git -C $DIR fetch 2>&1 && retry 5 git -C $DIR pull 2>&1)
else else
log "INFO" "Git is using proxy ${HTTP_PROXY_URL} from ${CONFFILE}" log "INFO" "Git is using proxy ${HTTPS_PROXY_URL} from ${CONFFILE}"
OUT=$(retry 5 git -c http.proxy=$HTTP_PROXY_URL -c https.proxy=$HTTPS_PROXY_URL -C $DIR fetch 2>&1 && retry 5 git -c http.proxy=$HTTP_PROXY_URL -c https.proxy=$HTTPS_PROXY_URL -C $DIR pull 2>&1) OUT=$(retry 5 git -c http.proxy=$HTTPS_PROXY_FULL_URL -c https.proxy=$HTTPS_PROXY_FULL_URL -C $DIR fetch 2>&1 && retry 5 git -c http.proxy=$HTTPS_PROXY_FULL_URL -c https.proxy=$HTTPS_PROXY_FULL_URL -C $DIR pull 2>&1)
fi fi
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
report_error log "Unable to update git $DIR: $OUT" report_error log "Unable to update git $DIR: $OUT"
@ -116,7 +116,7 @@ if [ -n "${BACKUP_DIRECTORY}" ]; then
mkdir -p "$BACKUP_DIRECTORY" mkdir -p "$BACKUP_DIRECTORY"
chown -R "$BACKUP_DIRECTORY" bridgehead; chown -R "$BACKUP_DIRECTORY" bridgehead;
fi fi
checkOwner "$BACKUP_DIRECTORY" bridgehead || fail_and_report 1 "Automatic maintenance failed: Wrong permissions for backup directory $(pwd)" checkOwner "$BACKUP_DIRECTORY" bridgehead || fail_and_report 1 "Automatic maintenance failed: Wrong permissions for backup directory $BACKUP_DIRECTORY"
# Collect all container names that contain '-db' # Collect all container names that contain '-db'
BACKUP_SERVICES="$(docker ps --filter name=-db --format "{{.Names}}" | tr "\n" "\ ")" BACKUP_SERVICES="$(docker ps --filter name=-db --format "{{.Names}}" | tr "\n" "\ ")"
log INFO "Performing automatic maintenance: Creating Backups for $BACKUP_SERVICES"; log INFO "Performing automatic maintenance: Creating Backups for $BACKUP_SERVICES";

View File

@ -35,8 +35,8 @@ services:
image: docker.verbis.dkfz.de/cache/samply/bridgehead-forward-proxy:latest image: docker.verbis.dkfz.de/cache/samply/bridgehead-forward-proxy:latest
environment: environment:
HTTPS_PROXY: ${HTTPS_PROXY_URL} HTTPS_PROXY: ${HTTPS_PROXY_URL}
USERNAME: ${HTTPS_PROXY_USERNAME} HTTPS_PROXY_USERNAME: ${HTTPS_PROXY_USERNAME}
PASSWORD: ${HTTPS_PROXY_PASSWORD} HTTPS_PROXY_PASSWORD: ${HTTPS_PROXY_PASSWORD}
tmpfs: tmpfs:
- /var/log/squid - /var/log/squid
- /var/spool/squid - /var/spool/squid
@ -45,7 +45,7 @@ services:
landing: landing:
container_name: bridgehead-landingpage container_name: bridgehead-landingpage
image: docker.verbis.dkfz.de/cache/samply/bridgehead-landingpage:master 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(`/`)"

View File

@ -22,7 +22,7 @@ services:
dnpm-beam-connect: dnpm-beam-connect:
depends_on: [ dnpm-beam-proxy ] depends_on: [ dnpm-beam-proxy ]
image: docker.verbis.dkfz.de/cache/samply/beam-connect:dnpm image: docker.verbis.dkfz.de/cache/samply/beam-connect:develop
container_name: bridgehead-dnpm-beam-connect container_name: bridgehead-dnpm-beam-connect
environment: environment:
PROXY_URL: http://dnpm-beam-proxy:8081 PROXY_URL: http://dnpm-beam-proxy:8081
@ -34,6 +34,7 @@ services:
HTTPS_PROXY: http://forward_proxy:3128 HTTPS_PROXY: http://forward_proxy:3128
NO_PROXY: dnpm-beam-proxy,dnpm-backend NO_PROXY: dnpm-beam-proxy,dnpm-backend
RUST_LOG: ${RUST_LOG:-info} RUST_LOG: ${RUST_LOG:-info}
NO_AUTH: "true"
volumes: volumes:
- /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