diff --git a/.gitignore b/.gitignore index 1f96c152..0c9a9e8c 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ TODO docker-compose.override.yml *.priv.pem traefik.yaml + +project-manager.env diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 937c4ffb..3a1ca283 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -47,6 +47,28 @@ services: profiles: - "beam" + project-manager: + image: samply/project-manager:develop + ports: + - 8097:8097 + env_file: + - env/project-manager.env + volumes: + - "./templates:/templates" + - "./documents:/documents" + - "./public-documents:/public-documents" + profiles: + - "project-manager" + + project-manager-db: + image: postgres:alpine + environment: + POSTGRES_DB: dev + POSTGRES_USER: dev + POSTGRES_PASSWORD: dev + profiles: + - "project-manager" + secrets: proxy.pem: file: /etc/lens/pki/${LOCAL_BEAM_ID}.priv.pem diff --git a/docker-compose.yml b/docker-compose.yml index fc58d58c..934b266e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,6 @@ services: - --entrypoints.websecure.address=:443 - --providers.docker=true - --providers.docker.exposedbydefault=false - # - --providers.file.directory=/conf/ - --accesslog=true ports: - "80:80" @@ -65,7 +64,6 @@ services: ports: - "8055:8055" environment: - RUST_LOG: "debug,hyper=info" HTTP_PROXY: ${http_proxy} HTTPS_PROXY: ${https_proxy} NO_PROXY: beam-proxy, prism @@ -76,7 +74,7 @@ services: CATALOGUE_URL: "${CATALOGUE_URL}" BIND_ADDR: 0.0.0.0:8055 PRISM_URL: http://prism:8066 - # RUST_LOG: "info" + RUST_LOG: "info" LOG_FILE: /requests.log volumes: - ./requests.log:/requests.log @@ -132,29 +130,6 @@ services: - "traefik.http.middlewares.prism-stripprefix.stripprefix.prefixes=/prism" - "traefik.http.routers.prism.middlewares=corsheaders,traefik-forward-auth,prism-stripprefix" - project-manager: - image: samply/project-manager:develop - ports: - - 8097:8097 - # environment: - # OIDC_CLIENT_ID: ${PROJECT_MANAGER_OAUTH_CLIENT_ID} - # OIDC_CLIENT_SECRET: ${PROJECT_MANAGER_OAUTH_CLIENT_SECRET} - # OIDC_REALM: ${PROJECT_MANAGER_OAUTH_CLIENT_REALM} - # OIDC_URL: ${PROJECT_MANAGER_OAUTH_ISSUER_URL} - env_file: - - env/project-manager.env - volumes: - - "./templates:/templates" - - "./documents:/documents" - - "./public-documents:/public-documents" - - project-manager-db: - image: postgres:alpine - environment: - POSTGRES_DB: dev - POSTGRES_USER: dev - POSTGRES_PASSWORD: dev - secrets: proxy.pem: # TODO: Key in BBMRI was directly stored in lens directory! diff --git a/env/project-manager.env b/env/project-manager.env deleted file mode 100644 index d9e4f497..00000000 --- a/env/project-manager.env +++ /dev/null @@ -1,74 +0,0 @@ -export APPLICATION_FORM_FILENAME="antrag_template.pdf" -export BEAM_PROJECT_MANAGER_ID=app4.proxy2.broker -export BEAM_URL=http://localhost:8082 -export BK_ADMIN_GROUP_PREFIX="DKTK_CCP_" -export BK_ADMIN_GROUP_SUFFIX="_Verwalter" -export BK_USER_GROUP_PREFIX="DKTK_CCP_" -export BK_USER_GROUP_SUFFIX="" -export PROJECT_MANAGER_DB_PASSWORD="dev" -export PROJECT_MANAGER_DB_URL="jdbc:postgresql://project-manager-db:5432/dev" -export PROJECT_MANAGER_DB_USER="dev" - - - -export BRIDGEHEADS_CONFIG_DRESDEN_EXPLORERID="dresden" -export BRIDGEHEADS_CONFIG_DRESDEN_FOCUSID="focus.dresden.ccp-it.dktk.dkfz.de" -export BRIDGEHEADS_CONFIG_DRESDEN_FILEDISPATCHERBEAMID=app3.proxy1.broker -export BRIDGEHEADS_CONFIG_DRESDEN_HUMANREADABLE="Dresden" - -export BRIDGEHEADS_CONFIG_BERLIN_EXPLORERID="berlin" -export BRIDGEHEADS_CONFIG_BERLIN_FOCUSID="focus.berlin.ccp-it.dktk.dkfz.de" -export BRIDGEHEADS_CONFIG_BERLIN_FILEDISPATCHERBEAMID=app3.proxy1.broker -export BRIDGEHEADS_CONFIG_BERLIN_HUMANREADABLE="Berlin" - -export BRIDGEHEADS_CONFIG_DRESDEN_TOKENMANAGERID="app2.proxy1.broker" -export CHECK_EXPIRED_ACTIVE_PROJECTS_CRON_EXPRESSION="30 * * * * *" -export CODER_BASE_URL="https://dev.samply.de" -export CODER_BEAM_ID_SUFFIX=proxy1.broker -export CODER_CREATE_PATH="/organizations/{CODER_ORGANISATION_ID}/members/{CODER_MEMBER_ID}/workspaces" -export CODER_CRON_EXPRESSION=15 * * * * * -export CODER_DELETE_PATH="/workspaces/{CODER_WORKSPACE_ID}/builds" -export CODER_MEMBER_ID="778c50a3-3162-4f15-a207-f550486754d2" -export CODER_ORGANISATION_ID="c91cb5c7-a1f3-4786-b8d5-ae0c84085d22" -export CODER_SESSION_TOKEN="Gfsyb6wgo6-oHCrpgvjEcABxMZYhmMTBa" -export CODER_TEMPLATE_VERSION_ID="b9abe45a-501b-4208-b411-6c9d7bc5a085" -export CODER_TEST_FILE_BEAM_ID=app4.proxy1.broker -export DATASHIELD_TEMPLATES="opal-ccp" -export EMAIL_TEMPLATES_CONFIG=ewogICJ0ZW1wbGF0ZXMiOiB7CiAgICAiTkVXX1BST0pFQ1QiOiB7CiAgICAgICJzdWJqZWN0IjogIk5ldyBwcm9qZWN0IiwKICAgICAgImZpbGVzIjogewogICAgICAgICJQUk9KRUNUX01BTkFHRVJfQURNSU4iOiAicHJvamVjdC1tYW5hZ2VyLWFkbWluLW5ldy1wcm9qZWN0Lmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiTkVXX1BST0pFQ1RfQUNDRVBURUQiOiB7CiAgICAgICJzdWJqZWN0IjogIlByb2plY3QgYWNjZXB0ZWQiLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIkNSRUFUT1IiOiAiY3JlYXRvci1uZXctcHJvamVjdC1hY2NlcHRlZC5odG1sIiwKICAgICAgICAiQlJJREdFSEVBRF9BRE1JTiI6ICJicmlkZ2VoZWFkLWFkbWluLW5ldy1wcm9qZWN0LWFjY2VwdGVkLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiTkVXX1ZPVFVNIjogewogICAgICAic3ViamVjdCI6ICJOZXcgdm90dW0gZm9yIHByb2plY3QiLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIlBST0pFQ1RfTUFOQUdFUl9BRE1JTiI6ICJwcm9qZWN0LW1hbmFnZXItYWRtaW4tbmV3LXZvdHVtLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiSU5WSVRBVElPTiI6IHsKICAgICAgInN1YmplY3QiOiAiQWNjZXNzIHRvIERhdGFTSElFTEQiLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIkRFVkVMT1BFUiI6ICJkZXZlbG9wZXItaW52aXRhdGlvbi5odG1sIiwKICAgICAgICAiUElMT1QiOiAicGlsb3QtaW52aXRhdGlvbi5odG1sIiwKICAgICAgICAiRklOQUwiOiAiZmluYWwtZXhlY3V0aW9uLXVzZXItaW52aXRhdGlvbi5odG1sIgogICAgICB9CiAgICB9LAogICAgIlBST0pFQ1RfQlJJREdFSEVBRF9BQ0NFUFRFRCI6IHsKICAgICAgInN1YmplY3QiOiAiUHJvamVjdCBhY2NlcHRlZCBpbiBicmlkZ2VoZWFkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJQUk9KRUNUX01BTkFHRVJfQURNSU4iOiAicHJvamVjdC1tYW5hZ2VyLWFkbWluLXByb2plY3QtYnJpZGdlaGVhZC1hY2NlcHRlZC5odG1sIgogICAgICB9CiAgICB9LAogICAgIlBST0pFQ1RfQlJJREdFSEVBRF9SRUpFQ1RFRCI6IHsKICAgICAgInN1YmplY3QiOiAiUHJvamVjdCByZWplY3RlZCBpbiBicmlkZ2VoZWFkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJQUk9KRUNUX01BTkFHRVJfQURNSU4iOiAicHJvamVjdC1tYW5hZ2VyLWFkbWluLXByb2plY3QtYnJpZGdlaGVhZC1yZWplY3RlZC5odG1sIgogICAgICB9CiAgICB9LAogICAgIlJFUVVFU1RfVEVDSE5JQ0FMX0FQUFJPVkFMIjogewogICAgICAic3ViamVjdCI6ICJUZWNobmljYWwgYXBwcm92YWwgcmVxdWVzdGVkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJCUklER0VIRUFEX0FETUlOIjogImJyaWRnZWhlYWQtYWRtaW4tcmVxdWVzdC10ZWNobmljYWwtYXBwcm92YWwuaHRtbCIKICAgICAgfQogICAgfSwKICAgICJTQ1JJUFRfQUNDRVBURUQiOiB7CiAgICAgICJzdWJqZWN0IjogIlNjcmlwdCBhY2NlcHRlZCIsCiAgICAgICJmaWxlcyI6IHsKICAgICAgICAiREVGQVVMVCI6ICJkZWZhdWx0LXNjcmlwdC1hY2NlcHRlZC5odG1sIgogICAgICB9CiAgICB9LAogICAgIlNDUklQVF9SRUpFQ1RFRCI6IHsKICAgICAgInN1YmplY3QiOiAiU2NyaXB0IHJlamVjdGVkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJERUZBVUxUIjogImRlZmF1bHQtc2NyaXB0LXJlamVjdGVkLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiUkVRVUVTVF9DSEFOR0VTX0lOX1NDUklQVCI6IHsKICAgICAgInN1YmplY3QiOiAiQ2hhbmdlcyBpbiBzY3JpcHQgcmVxdWVzdGVkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJERUZBVUxUIjogImRlZmF1bHQtc2NyaXB0LWNoYW5nZXMtcmVxdWVzdGVkLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiUkVTVUxUU19BQ0NFUFRFRCI6IHsKICAgICAgInN1YmplY3QiOiAiUmVzdWx0cyBhY2NlcHRlZCIsCiAgICAgICJmaWxlcyI6IHsKICAgICAgICAiREVGQVVMVCI6ICJkZWZhdWx0LXJlc3VsdHMtYWNjZXB0ZWQuaHRtbCIKICAgICAgfQogICAgfSwKICAgICJSRVNVTFRTX1JFSkVDVEVEIjogewogICAgICAic3ViamVjdCI6ICJSZXN1bHRzIHJlamVjdGVkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJERUZBVUxUIjogImRlZmF1bHQtcmVzdWx0cy1yZWplY3RlZC5odG1sIgogICAgICB9CiAgICB9LAogICAgIlJFUVVFU1RfQ0hBTkdFU19JTl9QUk9KRUNUIjogewogICAgICAic3ViamVjdCI6ICJDaGFuZ2VzIGluIHByb2plY3QgcmVxdWVzdGVkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJERUZBVUxUIjogImRlZmF1bHQtcmVzdWx0cy1jaGFuZ2VzLXJlcXVlc3RlZC5odG1sIgogICAgICB9CiAgICB9LAogICAgIkFOQUxZU0lTX0FDQ0VQVEVEIjogewogICAgICAic3ViamVjdCI6ICJBbmFseXNpcyBhY2NlcHRlZCIsCiAgICAgICJmaWxlcyI6IHsKICAgICAgICAiREVGQVVMVCI6ICJkZWZhdWx0LWFuYWx5c2lzLWFjY2VwdGVkLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiQU5BTFlTSVNfUkVKRUNURUQiOiB7CiAgICAgICJzdWJqZWN0IjogIkFuYWx5c2lzIHJlamVjdGVkIiwKICAgICAgImZpbGVzIjogewogICAgICAgICJERUZBVUxUIjogImRlZmF1bHQtYW5hbHlzaXMtcmVqZWN0ZWQuaHRtbCIKICAgICAgfQogICAgfSwKICAgICJSRVFVRVNUX0NIQU5HRVNfSU5fUFJPSkVDVF9BTkFMWVNJUyI6IHsKICAgICAgInN1YmplY3QiOiAiQ2hhbmdlcyBpbiBwcm9qZWN0IGFuYWx5c2lzIHJlcXVlc3RlZCIsCiAgICAgICJmaWxlcyI6IHsKICAgICAgICAiREVGQVVMVCI6ICJkZWZhdWx0LWFuYWx5c2lzLWNoYW5nZXMtcmVxdWVzdGVkLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiTkVXX1RPS0VOX0ZPUl9BVVRIRU5USUNBVElPTl9TQ1JJUFQiOiB7CiAgICAgICJzdWJqZWN0IjogIk5ldyBBdXRoZW50aWNhdGlvbiBTY3JpcHQgZm9yIERhdGFTSElFTEQiLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIkRFRkFVTFQiOiAiZGVmYXVsdC1uZXctYXV0aGVudGljYXRpb24tc2NyaXB0Lmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiSU5WQUxJRF9BVVRIRU5USUNBVElPTl9TQ1JJUFQiOiB7CiAgICAgICJzdWJqZWN0IjogIlNvbWUgdG9rZW5zIG9mIEF1dGhlbnRpY2F0aW9uIFNjcmlwdCBubyBsb25nZXIgdmFsaWQgZm9yIERhdGFTSElFTEQiLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIkRFRkFVTFQiOiAiZGVmYXVsdC1pbnZhbGlkLWF1dGhlbnRpY2F0aW9uLXNjcmlwdC5odG1sIgogICAgICB9CiAgICB9LAogICAgIkZJTklTSEVEX1BST0pFQ1QiOiB7CiAgICAgICJzdWJqZWN0IjogIlByb2plY3QgZmluaXNoZWQiLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIkRFRkFVTFQiOiAiZGVmYXVsdC1wcm9qZWN0LWZpbmlzaGVkLmh0bWwiCiAgICAgIH0KICAgIH0sCiAgICAiTkVXX1BVQkxJQ0FUSU9OIjogewogICAgICAic3ViamVjdCI6ICJOZXcgcHVibGljYXRpb24iLAogICAgICAiZmlsZXMiOiB7CiAgICAgICAgIkRFRkFVTFQiOiAiZGVmYXVsdC1uZXctcHVibGljYXRpb24uaHRtbCIKICAgICAgfQogICAgfQogIH0KfQ== -export EMAIL_TEMPLATES_DIRECTORY="/templates" -export ENABLE_CODER="false" -export ENABLE_EMAILS="false" -export ENABLE_EXPORTER="false" -export ENABLE_RSTUDIO_GROUP_MANAGER="false" -export ENABLE_TOKEN_MANAGER="false" -export EXPLORER_REDIRECT_URI_PARAMETER="redirect_uri" -export EXPLORER_URL="https://localhost" -export EXPORT_TEMPLATES="ccp,ccp-exliquid" -export EXPORTER_API_KEY="App1Secret" -export EXPORTER_CRON_EXPRESSION="45 * * * * *" -export FRONTEND_BASEURL="http://localhost:8080" -export FRONTEND_PROJECT_CONFIG=ewogICJjb25maWciOiB7CiAgICAiQ0NQLURhdGFTSElFTEQiOiB7CiAgICAgICJmaWVsZFZhbHVlcyI6IHsKICAgICAgICAidHlwZSI6ICJEQVRBU0hJRUxEIiwKICAgICAgICAib3V0cHV0Rm9ybWF0IjogIk9QQUwiLAogICAgICAgICJ0ZW1wbGF0ZUlkIjogIm9wYWwtY2NwIgogICAgICB9CiAgICB9LAogICAgIkNDUC1FeHBvcnQiOiB7CiAgICAgICJmaWVsZFZhbHVlcyI6IHsKICAgICAgICAidHlwZSI6ICJFWFBPUlQiLAogICAgICAgICJvdXRwdXRGb3JtYXQiOiAiRVhDRUwiLAogICAgICAgICJ0ZW1wbGF0ZUlkIjogImNjcCIKICAgICAgfQogICAgfSwKICAgICJDQ1AtUmVzZWFyY2gtRW52aXJvbm1lbnQiOiB7CiAgICAgICJmaWVsZFZhbHVlcyI6IHsKICAgICAgICAidHlwZSI6ICJSRVNFQVJDSF9FTlZJUk9OTUVOVCIsCiAgICAgICAgIm91dHB1dEZvcm1hdCI6ICJDU1YiLAogICAgICAgICJ0ZW1wbGF0ZUlkIjogImNjcCIKICAgICAgfQogICAgfQogIH0KfQo= -export FRONTEND_SITES_PROJECT-DASHBOARD="/" -export FRONTEND_SITES_PROJECT-VIEW="/project-view" -export KEYCLOAK_RSTUDIO_GROUP="RSTUDIO" -export KEYCLOAK_RSTUDIO_GROUP_CLIENT_ID="project-manager" -export KEYCLOAK_RSTUDIO_GROUP_CLIENT_SECRET="FpROJnNUuNhSvICGtsWFb1Kn4MQkDTD7" -export LOG_LEVEL="INFO" -export MANAGE_TOKENS_CRON_EXPRESSION="0 * * * * *" -export OIDC_CLAIM_GROUPS="groups" -export OIDC_CLIENT_ID="bridgehead-test-private" -export OIDC_CLIENT_SECRET="mmDjwfaoLeTzdRUeGZRDEIaYXgY3zL6r" -export OIDC_REALM="test-realm-01" -export OIDC_URL="https://login.verbis.dkfz.de" -export PM_ADMIN_GROUPS="CCP_Office" -export PROJECT_DOCUMENTS_DIRECTORY="/documents" -export PROJECT_MANAGER_EMAIL_FROM="no-reply@project-manager.ccp.dkfz.de" -export PUBLIC_DOCUMENTS_DIRECTORY="/public-documents" -export RESEARCH_ENVIRONMENT_TEMPLATES=ccp,ccp-exliquid -export RSTUDIO_GROUP_IMPLEMENTATION="KEYCLOAK" -export SECURITY_ENABLED="true" -export SMTP_HOST="localhost" -export SMTP_PASSWORD="" -export SMTP_PORT="1025" -export SMTP_USER="" -export TOKEN_MANAGER_URL="http://localhost:3030" \ No newline at end of file diff --git a/example.env b/example.env index 950e5f0c..2e095cf5 100644 --- a/example.env +++ b/example.env @@ -19,12 +19,6 @@ OAUTH_CLIENT_ID="your-oauth-client-id" OAUTH_CLIENT_SECRET="your-oauth-client-id" AUTHENTICATION_SECRET="insert-a-random-passphrase-here" -PROJECT_MANAGER_OAUTH_URL="your-url-for-project-manager-client" -PROJECT_MANAGER_OAUTH_REALM="your-realm-for-project-manager-client" -PROJECT_MANAGER_OAUTH_CLIENT_ID="your-id-for-project-manager-client" -PROJECT_MANAGER_OAUTH_CLIENT_SECRET="your-secret-for-project-manager-client" - -PROJECT_PATH="/Users/e260admin/dkfz/projects/lens-svelte-web_components/lens-web-components" ALLOWED_GROUPS="SPACE SEPARATED LIST OF GROUPS" # URL to catalogue.json; this is given to Spot to hold the catalogue (with extended metadata) for Lens