diff --git a/.gitignore b/.gitignore index 30b7f5e..8b13789 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1 @@ -# Check-in only sample.env, all other env files used for testing should be ignored -**.env -!sample.env -# Check-in only -docker-compose.*.yml -!docker-compose.disable-user-access.yml -!docker-compose.sample-onsite-only-db-config.yml -!docker-compose.port-configuration.yml -!docker-compose.macromolecule-hub.yml -!docker-compose.sample-enable-sso.yml -!docker-compose.sample-csd-theory-db-config.yml -!docker-compose.sample.ldap.yml - -# Other -**.swp \ No newline at end of file diff --git a/.markdownlint.yml b/.markdownlint.yml index a94a881..283b965 100644 --- a/.markdownlint.yml +++ b/.markdownlint.yml @@ -2,3 +2,36 @@ MD013: # Number of characters line_length: 200 + +# MD033/no-inline-html - Inline HTML +MD033: + # Allowed elements + allowed_elements: [ + # Image elements + img, + # Table elements + table, + thead, + tbody, + th, + td, + tr, + col, + colgroup, + hr, + # Definition list elements + dl, + dt, + dd, + # Text body elements + p, + br, + span, + data, + sup, + sub, + code, + em, + strong + ] + \ No newline at end of file diff --git a/BulkUserImportTemplate.csv b/BulkUserImportTemplate.csv deleted file mode 100644 index 5414fe0..0000000 --- a/BulkUserImportTemplate.csv +++ /dev/null @@ -1,2 +0,0 @@ -FirstName,LastName,EmailAddress,Roles -Joe ,Bloggs,bloggs@test.co.uk,basic diff --git a/Cloud-Installation/AWS/Serverless/README.md b/Cloud-Installation/AWS/Serverless/README.md deleted file mode 100644 index 1d57df1..0000000 --- a/Cloud-Installation/AWS/Serverless/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Installation instructions - -Please refer to the -[wiki](https://github.com/ccdc-opensource/on-site-webcsd/wiki/AWS-/Serverless-Install-instructions) diff --git a/Cloud-Installation/AWS/Serverless/webCSD-TD1.json b/Cloud-Installation/AWS/Serverless/webCSD-TD1.json deleted file mode 100644 index 69e2000..0000000 --- a/Cloud-Installation/AWS/Serverless/webCSD-TD1.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "family": "WebCSD-TD1", - "containerDefinitions": [ - { - "name": "ccdc-csd-substructure-filter", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-substructure-filter-service:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "links": [], - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "dnsServers": [], - "dnsSearchDomains": [], - "dockerSecurityOptions": [], - "dockerLabels": {}, - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - }, - "systemControls": [] - }, - { - "name": "ccdc-csd-fingerprint", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-fingerprint-service:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "links": [], - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "dnsServers": [], - "dnsSearchDomains": [], - "dockerSecurityOptions": [], - "dockerLabels": {}, - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - }, - "systemControls": [] - }, - { - "name": "ccdc-csd-resultstore", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-resultstore-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "links": [], - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "OrderedCachePassword", - "valueFrom": "" - } - ], - "dnsServers": [], - "dnsSearchDomains": [], - "dockerSecurityOptions": [], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - }, - "systemControls": [] - }, - { - "name": "ccdc-csd-crystal-structure-export", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-crystal-structure-export-service:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "links": [], - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "dnsServers": [], - "dnsSearchDomains": [], - "dockerSecurityOptions": [], - "dockerLabels": {}, - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - }, - "systemControls": [] - }, - { - "name": "redis", - "image": "redis:latest", - "cpu": 0, - "links": [], - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [ - "redis-server --requirepass ${CSD_CACHE_PASSWORD}" - ], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_CACHE_PASSWORD", - "valueFrom": "" - } - ], - "dnsServers": [], - "dnsSearchDomains": [], - "dockerSecurityOptions": [], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - }, - "systemControls": [] - }, - { - "name": "ccdc-csd-reducedcell-calculation-service", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-reducedcell-calculation-service:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "links": [], - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "dnsServers": [], - "dnsSearchDomains": [], - "dockerSecurityOptions": [], - "dockerLabels": {}, - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - }, - "systemControls": [] - } - ], - "taskRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "executionRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "networkMode": "awsvpc", - "requiresCompatibilities": [ - "FARGATE" - ], - "cpu": "1024", - "memory": "4096", - "runtimePlatform": { - "operatingSystemFamily": "LINUX" - } -} \ No newline at end of file diff --git a/Cloud-Installation/AWS/Serverless/webCSD-TD2.json b/Cloud-Installation/AWS/Serverless/webCSD-TD2.json deleted file mode 100644 index eeb6ff3..0000000 --- a/Cloud-Installation/AWS/Serverless/webCSD-TD2.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "family": "webCSD-TD2", - "containerDefinitions": [ - { - "name": "webcsd-theory", - "image": "ccdcrepository.azurecr.io/onsite/csd-theory:1.0.160", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CCDC_LICENSING_CONFIGURATION", - "valueFrom": "" - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-Theory", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - } - ], - "taskRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "executionRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "networkMode": "awsvpc", - "requiresCompatibilities": [ - "FARGATE" - ], - "cpu": "256", - "memory": "512", - "runtimePlatform": { - "operatingSystemFamily": "LINUX" - } -} \ No newline at end of file diff --git a/Cloud-Installation/AWS/Serverless/webCSD-TD3.json b/Cloud-Installation/AWS/Serverless/webCSD-TD3.json deleted file mode 100644 index a7965d7..0000000 --- a/Cloud-Installation/AWS/Serverless/webCSD-TD3.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "family": "webCSD-TD3", - "containerDefinitions": [ - { - "name": "ccdc-csd-similaritysearch", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-structure-similarity-search:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "StructureSimilaritySearchReadConnection", - "value": "StructureSimilaritySearchReadConnection=Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=similarity" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-Theory", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - }, - { - "name": "ccdc-csd-unitcellsearch", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-unit-cell-search:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "UnitCellSearchReadConnection", - "value": "Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=unitcell" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-Theory", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - }, - { - "name": "ccdc-csd-formulasearch", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-formulasearch-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "FormulaSearchReadConnection", - "value": "Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=formula" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-Theory", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - }, - { - "name": "ccdc-csd-textnumericsearch", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-textnumericsearch-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "CsdReadConnection", - "value": "Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=csd_schema" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-Theory", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - }, - { - "name": "ccdc-csd-deposition", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-deposition-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "CsdDepositionReadConnection", - "value": "Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=csd_schema" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-Theory", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - } - ], - "taskRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "executionRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "networkMode": "awsvpc", - "requiresCompatibilities": [ - "FARGATE" - ], - "cpu": "1024", - "memory": "4096", - "runtimePlatform": { - "operatingSystemFamily": "LINUX" - } -} \ No newline at end of file diff --git a/Cloud-Installation/AWS/Serverless/webCSD-TD4.json b/Cloud-Installation/AWS/Serverless/webCSD-TD4.json deleted file mode 100644 index 16b4f49..0000000 --- a/Cloud-Installation/AWS/Serverless/webCSD-TD4.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "family": "webCSD-TD4", - "containerDefinitions": [ - { - "name": "ccdc-csd-searchservice", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-searchservice-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [], - "mountPoints": [], - "volumesFrom": [], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-final", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - }, - { - "name": "csd-request-entry", - "image": "ccdcrepository.azurecr.io/onsite/csd-request-entry-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "RequestEntryCsdReadConnection", - "value": "RequestEntryCsdReadConnection=Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=csd_schema" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-final", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - } - ], - "taskRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "executionRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "networkMode": "awsvpc", - "requiresCompatibilities": [ - "FARGATE" - ], - "cpu": "1024", - "memory": "4096", - "runtimePlatform": { - "operatingSystemFamily": "LINUX" - } -} \ No newline at end of file diff --git a/Cloud-Installation/AWS/Serverless/webCSD-TD5.json b/Cloud-Installation/AWS/Serverless/webCSD-TD5.json deleted file mode 100644 index 1d4cad4..0000000 --- a/Cloud-Installation/AWS/Serverless/webCSD-TD5.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "family": "webCSD-TD5", - "containerDefinitions": [ - { - "name": "ccdc-csd-substructuresearch", - "image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-substructuresearch-api:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "StructureSearchReadConnection", - "value": "Server=${database-server};Port=5432;Database=csd-database;User Id=postgres;Password=${CSD_DB_PASSWORD};SearchPath=substructure" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CSD_DB_PASSWORD", - "valueFrom": "" - }, - { - "name": "database-server", - "valueFrom": " " - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-final", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - } - ], - "taskRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "executionRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "networkMode": "awsvpc", - "requiresCompatibilities": [ - "FARGATE" - ], - "cpu": "1024", - "memory": "4096", - "runtimePlatform": { - "operatingSystemFamily": "LINUX" - } -} \ No newline at end of file diff --git a/Cloud-Installation/AWS/Serverless/webCSD-TD6.json b/Cloud-Installation/AWS/Serverless/webCSD-TD6.json deleted file mode 100644 index a2fac1f..0000000 --- a/Cloud-Installation/AWS/Serverless/webCSD-TD6.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "family": "webCSD-TD6", - "containerDefinitions": [ - { - "name": "webcsd", - "image": "ccdcrepository.azurecr.io/onsite/webcsd:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [ - { - "containerPort": 80, - "hostPort": 80, - "protocol": "tcp" - } - ], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "CsdRepository__ServiceLocation", - "value": "webcsdbackend" - }, - { - "name": "CspRepository__ServiceLocation", - "value": "webcsd-theory" - } - ], - "mountPoints": [], - "volumesFrom": [], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-final", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - }, - { - "name": "webcsdbackend", - "image": "ccdcrepository.azurecr.io/onsite/webcsdbackend:1.0.0", - "repositoryCredentials": { - "credentialsParameter": "" - }, - "cpu": 0, - "portMappings": [], - "essential": true, - "entryPoint": [], - "command": [], - "environment": [ - { - "name": "ServiceSettings__StructureInfoLocation", - "value": "/csd-data/structure-links.csv" - } - ], - "mountPoints": [], - "volumesFrom": [], - "secrets": [ - { - "name": "CCDC_LICENSING_CONFIGURATION", - "valueFrom": "{CCDC_LICENSING_CONFIGURATION}" - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/ecs/webCSD-final", - "awslogs-region": "", - "awslogs-stream-prefix": "ecs" - } - } - } - ], - "taskRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "executionRoleArn": "arn:aws:iam:::role/ecsTaskExecutionRole", - "networkMode": "awsvpc", - "requiresCompatibilities": [ - "FARGATE" - ], - "cpu": "1024", - "memory": "4096", - "runtimePlatform": { - "operatingSystemFamily": "LINUX" - } -} \ No newline at end of file diff --git a/Cloud-Installation/Azure/README.md b/Cloud-Installation/Azure/README.md deleted file mode 100644 index a3c8e68..0000000 --- a/Cloud-Installation/Azure/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Installation instructions - -Please refer to the -[wiki](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Azure-Install-instructions) diff --git a/Cloud-Installation/Azure/web-csd.json b/Cloud-Installation/Azure/web-csd.json deleted file mode 100644 index 5d0d56f..0000000 --- a/Cloud-Installation/Azure/web-csd.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "containergroup_name": { - "defaultValue": "", - "type": "String" - }, - "CCDC_LICENSING_CONFIGURATION": { - "defaultValue": "", - "type": "securestring" - }, - "OrderedCachePassword": { - "defaultValue": "", - "type": "securestring" - }, - "CSD_DB_PASSWORD": { - "defaultValue": "", - "type": "securestring" - }, - "CSD_DB_USER": { - "defaultValue": "", - "type": "string" - }, - "CSD_DB_SERVER": { - "defaultValue": "", - "type": "string" - }, - "CSD_DB_PORT": { - "defaultValue": "", - "type": "string" - }, - "repo_user": { - "defaultValue": "", - "type": "securestring" - }, - "repo_pass": { - "defaultValue": "", - "type": "securestring" - }, - "location": { - "defaultValue": "", - "type": "string" - } - }, - "variables": { - "ccdc-csd-fingerprint-service_tag": "1.0.0", - "ccdc-csd-crystal-structure-export-service_tag": "1.0.0", - "ccdc-csd-reducedcell-calculation-service_tag": "1.0.0", - "ccdc-csd-substructure-filter-service_tag": "1.0.0", - "csd-theory_tag": "1.0.160", - "ccdc-csd-resultstore-api_tag": "1.0.0", - "ccdc-csd-structure-similarity-search_tag": "1.0.0", - "ccdc-csd-unit-cell-search_tag": "1.0.0", - "ccdc-csd-deposition-api_tag": "1.0.0", - "ccdc-csd-textnumericsearch-api_tag": "1.0.0", - "ccdc-csd-formulasearch-api_tag": "1.0.0", - "csd-request-entry-api_tag": "1.0.0", - "ccdc-csd-substructuresearch-api_tag": "1.0.0", - "ccdc-csd-searchservice-api_tag": "1.0.0", - "webcsd_tag": "1.0.0", - "webcsdbackend_tag": "1.0.0", - - "ccdc-csd-fingerprint-service_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-fingerprint-service", - "ccdc-csd-crystal-structure-export-service_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-crystal-structure-export-service", - "ccdc-csd-reducedcell-calculation-service_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-reducedcell-calculation-service", - "ccdc-csd-substructure-filter-service_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-substructure-filter-service", - "csd-theory_image": "ccdcrepository.azurecr.io/onsite/csd-theory", - "ccdc-csd-resultstore-api_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-resultstore-api", - "ccdc-csd-structure-similarity-search_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-structure-similarity-search", - "ccdc-csd-unit-cell-search_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-unit-cell-search", - "ccdc-csd-deposition-api_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-deposition-api", - "ccdc-csd-textnumericsearch-api_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-textnumericsearch-api", - "ccdc-csd-formulasearch-api_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-formulasearch-api", - "csd-request-entry-api_image": "ccdcrepository.azurecr.io/onsite/csd-request-entry-api", - "ccdc-csd-substructuresearch-api_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-substructuresearch-api", - "ccdc-csd-searchservice-api_image": "ccdcrepository.azurecr.io/onsite/ccdc-csd-searchservice-api", - "webcsd_image": "ccdcrepository.azurecr.io/onsite/webcsd", - "webcsdbackend_image": "ccdcrepository.azurecr.io/onsite/webcsdbackend" - }, - "resources": [{ - "type": "Microsoft.ContainerInstance/containerGroups", - "apiVersion": "2022-10-01-preview", - "name": "[parameters('containergroup_name')]", - "location": "[parameters('location')]", - "tags": { - "docker-compose-application": "docker-compose-application" - }, - "properties": { - "sku": "Standard", - "containers": [{ - "name": "ccdc-csd-fingerprint", - "properties": { - "image": "[concat(variables('ccdc-csd-fingerprint-service_image'), ':', variables('ccdc-csd-fingerprint-service_tag'))]", - "ports": [], - "environmentVariables": [], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-crystal-structure-export", - "properties": { - "image": "[concat(variables('ccdc-csd-crystal-structure-export-service_image'), ':', variables('ccdc-csd-crystal-structure-export-service_tag'))]", - "ports": [], - "environmentVariables": [], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-reducedcell-calculation-service", - "properties": { - "image": "[concat(variables('ccdc-csd-reducedcell-calculation-service_image'), ':', variables('ccdc-csd-reducedcell-calculation-service_tag'))]", - "ports": [], - "environmentVariables": [], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-substructure-filter", - "properties": { - "image": "[concat(variables('ccdc-csd-substructure-filter-service_image'), ':', variables('ccdc-csd-substructure-filter-service_tag'))]", - "ports": [], - "environmentVariables": [], - "resources": { - "requests": { - "memoryInGB": 1.5, - "cpu": 0.7 - }, - "limits": { - "memoryInGB": 3, - "cpu": 1.5 - } - } - } - }, - { - "name": "webcsd-theory", - "properties": { - "image": "[concat(variables('csd-theory_image'), ':', variables('csd-theory_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "CCDC_LICENSING_CONFIGURATION", - "value": "[parameters('CCDC_LICENSING_CONFIGURATION')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-resultstore", - "properties": { - "image": "[concat(variables('ccdc-csd-resultstore-api_image'), ':', variables('ccdc-csd-resultstore-api_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "OrderedCachePassword", - "value": "[parameters('OrderedCachePassword')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-similaritysearch", - "properties": { - "image": "[concat(variables('ccdc-csd-structure-similarity-search_image'), ':', variables('ccdc-csd-structure-similarity-search_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "StructureSimilaritySearchReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=similarity')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-unitcellsearch", - "properties": { - "image": "[concat(variables('ccdc-csd-unit-cell-search_image'), ':', variables('ccdc-csd-unit-cell-search_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "UnitCellSearchReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=unitcell')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-deposition", - "properties": { - "image": "[concat(variables('ccdc-csd-deposition-api_image'), ':', variables('ccdc-csd-deposition-api_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "CsdDepositionReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=csd_schema')]" - }], - "resources": { - "requests": { - "memoryInGB": 1.5, - "cpu": 1 - }, - "limits": { - "memoryInGB": 3, - "cpu": 2 - } - } - } - }, - { - "name": "ccdc-csd-textnumericsearch", - "properties": { - "image": "[concat(variables('ccdc-csd-textnumericsearch-api_image'), ':', variables('ccdc-csd-textnumericsearch-api_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "CsdReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=csd_schema')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-formulasearch", - "properties": { - "image": "[concat(variables('ccdc-csd-formulasearch-api_image'), ':', variables('ccdc-csd-formulasearch-api_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "FormulaSearchReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=formula')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "csd-request-entry", - "properties": { - "image": "[concat(variables('csd-request-entry-api_image'), ':', variables('csd-request-entry-api_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "RequestEntryCsdReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=csd_schema')]" - }], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "ccdc-csd-substructuresearch", - "properties": { - "image": "[concat(variables('ccdc-csd-substructuresearch-api_image'), ':', variables('ccdc-csd-substructuresearch-api_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "StructureSearchReadConnection", - "value": "[concat('Host=', parameters('CSD_DB_SERVER'), ';Port=', parameters('CSD_DB_PORT'), ';Username=', parameters('CSD_DB_USER'), '@', parameters('CSD_DB_SERVER'), ';Password=', parameters('CSD_DB_PASSWORD'), ';Database=csd-database;SearchPath=substructure')]" - }], - "resources": { - "requests": { - "memoryInGB": 1.7, - "cpu": 0.3 - }, - "limits": { - "memoryInGB": 3.5, - "cpu": 0.6 - } - } - } - }, - { - "name": "ccdc-csd-searchservice", - "properties": { - "image": "[concat(variables('ccdc-csd-searchservice-api_image'), ':', variables('ccdc-csd-searchservice-api_tag'))]", - "ports": [], - "environmentVariables": [], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "webcsd", - "properties": { - "image": "[concat(variables('webcsd_image'), ':', variables('webcsd_tag'))]", - "ports": [{ - "protocol": "TCP", - "port": 80 - }], - "environmentVariables": [{ - "name": "CsdRepository__ServiceLocation", - "value": "webcsdbackend" - }, - { - "name": "CspRepository__ServiceLocation", - "value": "webcsd-theory" - } - ], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "webcsdbackend", - "properties": { - "image": "[concat(variables('webcsdbackend_image'), ':', variables('webcsdbackend_tag'))]", - "ports": [], - "environmentVariables": [{ - "name": "ServiceSettings__StructureInfoLocation", - "value": "/csd-data/structure-links.csv" - }, - { - "name": "CCDC_LICENSING_CONFIGURATION", - "value": "[parameters('CCDC_LICENSING_CONFIGURATION')]" - } - ], - "resources": { - "requests": { - "memoryInGB": 0.8, - "cpu": 0.14 - }, - "limits": { - "memoryInGB": 1.5, - "cpu": 0.3 - } - } - } - }, - { - "name": "aci--dns--sidecar", - "properties": { - "image": "docker/aci-hostnames-sidecar:1.0", - "command": [ - "/hosts", - "ccdc-csd-fingerprint", - "ccdc-csd-crystal-structure-export", - "ccdc-csd-reducedcell-calculation-service", - "webcsd-theory", - "ccdc-csd-substructure-filter", - "ccdc-csd-resultstore", - "ccdc-csd-similaritysearch", - "ccdc-csd-unitcellsearch", - "ccdc-csd-formulasearch", - "ccdc-csd-textnumericsearch", - "ccdc-csd-deposition", - "csd-request-entry", - "ccdc-csd-searchservice", - "ccdc-csd-substructuresearch", - "webcsdbackend", - "webcsd" - ], - "ports": [], - "environmentVariables": [], - "resources": { - "requests": { - "memoryInGB": 0.1, - "cpu": 0.01 - } - } - } - } - ], - "initContainers": [], - "imageRegistryCredentials": [{ - "server": "ccdcrepository.azurecr.io", - "username": "[parameters('repo_user')]", - "password": "[parameters('repo_pass')]" - }], - "restartPolicy": "Always", - "osType": "Linux" - } - }] -} diff --git a/OpenIddictApplicationsConfig.json b/OpenIddictApplicationsConfig.json new file mode 100644 index 0000000..682e2a2 --- /dev/null +++ b/OpenIddictApplicationsConfig.json @@ -0,0 +1,63 @@ +{ + "OpenIddict": { + "Applications": [ + { + "ClientId": "ccdc-platform-web", + "ClientType": "public", + "ConsentType": "implicit", + "DisplayName": "ccdclattice", + "Permissions": [ + "ept:authorization", + "ept:end_session", + "ept:token", + "gt:authorization_code", + "gt:refresh_token", + "rst:code", + "scp:email", + "scp:profile", + "scp:roles", + "scp:coreservices" + ], + "RedirectUris": [], + "PostLogoutRedirectUris": [], + "Requirements": [ + "ft:pkce" + ] + }, + { + "ClientId": "webcsd", + "ClientType": "public", + "ConsentType": "implicit", + "DisplayName": "webcsd", + "Permissions": [ + "ept:authorization", + "ept:end_session", + "ept:token", + "gt:authorization_code", + "gt:refresh_token", + "rst:code", + "scp:email", + "scp:profile", + "scp:roles", + "scp:coreservices" + ], + "RedirectUris": [], + "PostLogoutRedirectUris": [], + "Requirements": [ + "ft:pkce" + ] + } + ], + "Scopes": [ + { + "Name": "coreservices", + "Resources": [ + "api.entitlements", + "api.databasemanagement", + "api.entryingestion", + "api.structurefilegeneration" + ] + } + ] + } +} \ No newline at end of file diff --git a/README.md b/README.md index 9596256..6d18ad0 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,106 @@ # On-Site Lattice and WebCSD +## Table of contents + +- [Introduction](#introduction) +- [Prerequisites and Setup](#prerequisites-and-setup) + - [System Requirements](#system-requirements) + - [Authentication](#authentication) + - [Docker Installation](#docker-installation) + - [Postgres CSD Database](#postgres-csd-database) + - [CCDC User Account](#ccdc-user-account) +- [Basic Configuration and Installation](#basic-configuration-and-installation) + - [GUI Installation](#gui-installation) + - [Command Line Installation](#command-line-installation) + - [Post-Installation Checks](#post-installation-checks) +- [Further Configuration](#further-configuration) + - [User Access Control](#user-access-control) + - [In-House Database Configuration](#in-house-database-configuration) + - [CSD-Theory Web Database Configuration](#csd-theory-web-database-configuration) + - [Other Customisations](#other-customisations) +- [Updates](#updates) +- [Contacting Support](#contacting-support) + ## Introduction On-Site Lattice and WebCSD is currently only available to CCDC industrial customers and other invited groups. This readme contains information required for installation and updates of On-Site Lattice and WebCSD. -Terms and conditions can be found in the `license.md` file. +Terms and conditions can be found in the `LICENSE.md` file. Additional information including user configuration and troubleshooting can be found in the wiki at . +:warning: **Note, the latest 4.3.0 release does not support CSD-Theory, Macromolecule Hub or the Prototypes plugin. Do not +update to this version if you are currently using those components.** + ## Prerequisites and Setup ### System Requirements -For version 4.0 onwards, a postgres server is required for CSD and Identity databases. -This will typically be installed on a separate machine from the one hosting the WebCSD -Docker containers. - -Recommended requirements for postgres server without Macromolecule Hub (PDB protein data): +A docker server is required to run On-Site WebCSD. In the standard configuration the +postgres server for CSD and Identity databases will also run in a docker container but there is an option to host this separately. -- Postgres version 14 or newer -- 100GB free hd space +Recommended requirements for docker server hosting postgres container without Macromolecule Hub: -Recommended requirements for postgres server including Macromolecule Hub: +- 130GB free HD space, 16GB RAM, 8 core CPU. -- Postgres version 14 or newer -- 200GB free hd space +Recommended requirements for Docker server hosting On-Site Lattice and WebCSD containers only: -Recommended requirements for Docker server hosting On-Site Lattice and WebCSD containers: +- 30GB free HD space, 16GB RAM, 8 core CPU. -- 30GB free hd space, 16GB RAM, 8 core CPU. +If self-hosting the postgres server, see [Setting up your Postgresql server](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Setting-up-your-PostgreSQL-server) +for system requirements. -On-Site Lattice and WebCSD should work with any Linux OS that meets the requirements to run Docker, but official support is provided by CCDC on the following platforms. -Note that these match the 2024.2 Desktop release. +On-Site Lattice and WebCSD should work with any OS that meets the requirements to run Docker, but official support is provided by CCDC on the following platforms. +Note that these match the 2025.3 CSD Portfolio Desktop release. -- RedHat Enterprise Linux 8 and 9 -- Rocky Linux 8 and 9 +- RedHat Enterprise Linux 8, 9 and 10 +- Rocky Linux 8, 9 and 10 - Ubuntu LTS 22 and 24 +The libraries required for running the installer are the same as for installing the CSD Portfolio. + +On RHEL / Rocky Linux 8 or 9: + +```sh +sudo dnf install nss libXScrnSaver libglvnd-opengl libgfortran libxkbcommon-x11 xcb-util-wm xcb-util-cursor xcb-util-keysyms libatomic tk +``` + +On RHEL / Rocky Linux 10: + +```sh +sudo dnf install nss libXScrnSaver libglvnd-opengl libgfortran libxkbcommon-x11 xcb-util-wm xcb-util-cursor xcb-util-keysyms libatomic libquadmath xdg-utils libXmu tk +``` + +On Ubuntu: + +```sh +sudo apt-get install libnss3 libxss1 libopengl0 libgfortran5 libxkbcommon-x11-0 libxcb-xinerama0 libxcb-cursor0 libxcb-keysyms1 libatomic1 libtk8.6 tk8.6 +``` + ### Authentication -- A valid CCDC activation key will be required to use the software. -- Access to the CCDC docker container registry will require a username and password, to get them please contact CCDC Support. -- The postgres CSD database will be provided via a download link. To obtain this, please contact CCDC Support - and specify whether you want the database with or without Macromolecule Hub. +- A valid CCDC activation key (a 36-character key in the format ######-######-######-######-######-######) + will be required to use the software. +- Connecting to your WebCSD server via https is now required. To configure this you will need a password-protected .pfx + certificate. Ask your local IT staff to set this up for you. ### Docker Installation -A standard [Docker Server](https://docs.docker.com/engine/install/#server) and [Docker Compose](https://docs.docker.com/compose/install/) installation is required for installation of WebCSD. -We recommend installing the latest version of Docker from these links. -WebCSD will run on [Docker Desktop](https://docs.docker.com/engine/install/#desktop), however this is not recommended and may [require a license](https://www.docker.com/legal/docker-subscription-service-agreement/). +A standard Docker Server and Docker Compose installation is required for installation of WebCSD. +If you are new to Docker we recommend installing the latest version of [Docker Desktop](https://docs.docker.com/get-started/introduction/get-docker-desktop/). +Note that this is likely to [require a license](https://www.docker.com/legal/docker-subscription-service-agreement/) +for most use-cases. Alternatively, [Rancher Desktop](https://rancherdesktop.io/) is an open-source alternative. + +Linux users also have the option to install [Docker Engine](https://docs.docker.com/engine/install/#server) and the +[Docker Compose plugin](https://docs.docker.com/compose/install/). -CHECK: Test your Docker installation as described at the above links. Also verify that you can log into the CCDC -container registry. +CHECK: Test your Docker installation as described at the above links. + +The recommended offline installer includes all docker images. An online installer is provided as an alternative - +this requires access to the CCDC docker container registry. To obtain a username and password please contact CCDC +Support then verify that you can log in. ```sh docker login -u -p ccdcrepository.azurecr.io @@ -62,115 +109,127 @@ docker login -u -p ccdcrepository.azurecr.io docker login -u --password-stdin ccdcrepository.azurecr.io ``` -### PostgreSQL Server Installation +### Postgres CSD Database + +The postgres CSD database will be provided via a download link. To obtain this, please contact CCDC Support. -Once you have downloaded the postgres CSD database, please follow the instructions at -[Setting Up Your PostgreSQL Server](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Setting-up-your-PostgreSQL-server) to restore -the database into your environment. +If self-hosting the postgres server please follow the instructions at [Setting up your Postgresql server](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Setting-up-your-PostgreSQL-server) -CHECK: Can you connect to the database from Docker containers? These commands should run without errors. +### CCDC User Account + +Containers run as the account with numeric uid 1397 and you will need to create this account. +We suggest giving it the username `ccdc`. ```sh -# Pull postgres image -docker pull postgres:14.13 -# Run container -docker run --name debug-postgres -e POSTGRES_PASSWORD=passwordhere -d postgres:14.13 -# Shell into container -docker exec -it debug-postgres sh -# Attempt to establish a connection to the database server -psql -h database.server.name -p 5432 -U postgres -d csd-database +# As of v2.0.0, containers run as non root users. +# Because of this you will need to create the CCDC user if it does not already exist. +sudo adduser ccdc --uid=1397 + +# If you are upgrading from an older version to v4.0.0, ensure the user id is set to 1397 +sudo usermod -u 1397 ccdc +``` + +We recommend running the installer from the `ccdc` account so that all file permissions are +set up correctly. If the installer is run from a different account, make sure the `ccdc` account +has read access to any in-house or CSP databases by running this command after installation. + +```sh +# You will also need to ensure the user "ccdc" has read access to any in-house or CSP databases. +# E.g. if these are in the csd-data directory: +sudo chown -R ccdc:ccdc csd-data/ ``` ## Basic Configuration And Installation -### SSL Configuration +Offline and online installers are available from [the release tab](https://github.com/ccdc-opensource/on-site-webcsd/releases) +to run either via a GUI or command-line interface. We recommend the offline installer to reduce issues caused by restrictive +firewalls. -Connecting to your WebCSD server via https is now required. -To configure this you will need an SSL certificate and private key. -Ask your local IT staff to set these up for you. +### GUI installation -Please follow the instructions at [Configuring SSL](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Configuring-SSL). -If the WebCSD server is run without configuring SSL a built-in self-signed certificate will be used. -This is not recommended as it is insecure. +1. From the first screen, the **settings** button gives options for *Network*, *Repositories* and *Local cache* + configuration. Click **Next** to continue with the setup -### WebCSD Basic Installation + A screenshot of the On-Site WebCSD installer -Please download and unpack the latest version from the release tab . +2. The next screen prompts for an installation directory (note [system requirements](#system-requirements)) -After unpacking the release source code onto the server on which the software will be installed you will need to go into the on-site-webcsd directory and copy the environment file `sample.env` to `.env`. -Then open the `.env` file and populate with suitable values. + A screenshot of the On-Site WebCSD installer -```console -cd on-site-webcsd -cp sample.env .env -``` +3. The next screen details the components that will be installed, the current 4.3.0 release contains + a single main package. -You will need to update the `.env` file with your licence key, your database server details and -the URL you will use for your WebCSD server. -Here is an example of the `.env` file with comments removed: - -```console -CCDC_LICENSING_CONFIGURATION=la-code;123456-123456-123456-123456-123456-123456; -DB_CONNECTIONSTRING=Server=database-server;Port=5432;User Id=postgres;Password=passwordhere -PUBLIC_URI=https://csd-software.local -PLATFORM_PORT=443 -CSD_DATABASE=csd-database -IDENTITY_DATABASE=csd-identity -``` + A screenshot of the On-Site WebCSD installer -Where stated, some of these variables will be provided by CCDC; all other variables are for the user to generate and set. -Once the variables file has been populated, login to the CCDC container registry and bring up the stack: +4. At the next stage, the configuration details required for setting up the server are required. This + includes the location of the .pfx file and the associated password, the CCDC licence key and the public URI + for the server. -```console -docker login -u -p ccdcrepository.azurecr.io + - If no .pfx file is provided a built-in self-signed certificate will be used. This is not recommended as + it is insecure, and will not work with SSO authentication. -# or to be prompted for the password -docker login -u --password-stdin ccdcrepository.azurecr.io + - The public URI has the format `https://full.docker.hostname:PORT` where `full.docker.hostname` is your + Docker host and `PORT` is a port number of your choice (e.g. 443). -# As of v2.0.0, containers run as non root users. -# Because of this you will need to create the CCDC user if it does not already exist. -sudo adduser ccdc --uid=1397 + A screenshot of the On-Site WebCSD installer -# If you are upgrading from an older version to v4.0.0, ensure the user id is set to 1397 -sudo usermod -u 1397 ccdc +5. The following screen covers options for installing the CSD database. If the database has been + downloaded as a Dump file there is an option to navigate directly to the location. Alternatively, + a custom configuration for the database server can be specified by adding the Server, Port, User and + Password. -# You will also need to ensure the user "ccdc" has read access to any in-house or CSP databases. -# E.g. if these are in the csd-data directory: -sudo chown -R ccdc:ccdc csd-data/ + A screenshot of the On-Site WebCSD installer -# For testing use one of the following commands. -# These do not load in-house databases and the user access control is disabled. -# These features will be configured later. + :warning: **Note: Installation of the database may overwrite any existing user data, + be sure to export any required data prior to running the installation** -# If you are not using Macromolecule Hub -docker compose -f docker-compose.yml -f docker-compose.ssl.yml -f docker-compose.disable-user-access.yml up -d +6. The installation is now ready to proceed. From the final screen, click the **Install** button + to begin the process. -# If you are using Macromolecule Hub -docker compose -f docker-compose.yml -f docker-compose.ssl.yml -f docker-compose.disable-user-access.yml -f docker-compose.macromolecule-hub.yml up -d -``` +During the installation a `.env` file and some `.yml` files will be created in the installation directory. +These are docker compose config files and can be edited to customise your installation. + +### Command Line Installation -CHECK: To check that the install has completed and that all the services are running, run: +It is also possible to run the WebCSD installer from the command line. This process is documented on the +wiki under [Alternative ways to setup On-Site WebCSD](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Alternative-ways-to-setup-On-Site-WebCSD) + +### Post-Installation Checks + +CHECK: To check that the install has completed and that all the services are running, +either view the containers in the Docker Desktop GUI or run: ```sh docker compose ps ``` which should show the state of the services to all be `Up`. If any services have the state `Up (unhealthy)` or `Exit` then restart the stack. +Take care to include the right config files as in the commands below. ```sh -# Include all config files from the "docker compose ... up -d" run earlier -docker compose -f docker-compose.yml -f ... down -# Same command to bring up the stack as before -docker compose -f docker-compose.yml -f ... up -d +docker compose -f docker-compose.yml -f docker-compose.ssl.yml down +docker compose -f docker-compose.yml -f docker-compose.ssl.yml up -d ``` If the issues persist then please contact CCDC Support. -For more information see the [Docker volumes documentation](https://docs.docker.com/compose/compose-file/#volumes). +To access the On-Site Lattice and WebCSD service locally go to the WebCSD server URL you entered +at install time. + +To check that you can search the CSD you must create an account. + +If you have problems check your `.env` file. -To access the On-Site Lattice and WebCSD service locally go to in a browser, -replacing `full.server.hostname` by the full hostname of your Docker host. Check that you can search the CSD. -If you have problems check that `PUBLIC_URI` has been set to in `.env`. +- The correct format for the `CCDC_LICENSING_CONFIGURATION` line is + `CCDC_LICENSING_CONFIGURATION=la-code;ACTIVATION_KEY;`. +- `PUBLIC_URI` should be set to the full URL of your WebCSD server including the port number. + This must resolve to your docker host. +- `PLATFORM_PORT` must match the port number in `PUBLIC_URI` (default is 443). ## Further Configuration @@ -182,21 +241,21 @@ which you have customised into the `docker compose ... up -d` command. ### User Access Control -User access control can be managed via local accounts or Single Sign-On (SSO). -Unless it is explicitly disabled via `docker-compose.disable-user-access.yml`, you must configure roles to allow -access to in-house databases. - +User access control can be managed via local accounts or Single Sign-On (SSO). You must configure roles to allow +access to in-house databases as by default even admin roles can only access the CSD. For details please see [Access Control To In-House Databases](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Access-control-to-in-house-databases). ### In-house Database Configuration -:warning: **OnSite WebCSD assumes structure identifiers are unique across all registered in-house databases. -You will likely encounter unexpected behaviour if this is not the case.** - On-Site Lattice and WebCSD can be configured to read from in-house databases. Provided within the installation is a sample database `teaching-subset.csdsql` which can be found in the `sample-data` folder in the root of the installation. +For the latest version 4.3.0 release, details on in-house database configuration are available from the +[wiki](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Updating-your-in‐house-databases) + +For earlier releases (version 4.2.1) the following information is still applicable: + To enable in-house databases: 1. Copy and rename the file `docker-compose.sample-On-Site-only-db-config.yml` to `docker-compose.db-config.yml` @@ -215,27 +274,6 @@ environment: More information is given in the notes & example sections of the sample file. This acts as an [override file](https://docs.docker.com/compose/extends/) which you will have to include in the startup command. -### In-house Protein Database Creation and Configuration - -If you have a Macromolecule Hub licence, you can also create and register in-house protein databases for use within OnSite WebCSD. - -To create an In-house Protein Database, you will need the Python Utilities. These can be downloaded from the [CCDC Downloads page](https://www.ccdc.cam.ac.uk/support-and-resources/csdsdownloads/) -under `CSD Python API > Python CSD Python API Utilities`. If you do not see the CSD Python API listed in the available downloads, you may need to sign in. -The relevant script can be found under `ccdc > utitities > create_protein_database`. -You can run the script using the CSD Python API version 3.3.0 or later. - -Once you have created your protein database, you can register it by adding to your `docker-compose.db-config.yml` file following the instructions above. -You must then mark the database as a protein database. Your database config should look something like this: - -```yml -volumes: - - /path/to/ExampleProteinDb.csdsqlx:/csd-data/ExampleProteinDb.csdsqlx -environment: - - ServiceSettings__Databases__2__Name=Example Protein DB - - ServiceSettings__Databases__2__ConnectionString=/csd-data/ExampleProteinDb.csdsqlx - - ServiceSettings__Databases__2__Speciality__0=Protein -``` - ### CSD-Theory Web Database Configuration Instructions on setting up CSD-Theory Web can be found in the [wiki](https://github.com/ccdc-opensource/on-site-webcsd/wiki/Setting-up-CSD%E2%80%90Theory-Web). @@ -243,39 +281,19 @@ Instructions on setting up CSD-Theory Web can be found in the [wiki](https://git Provided within the installation is a sample CSD-Theory landscape database `CSPLandscape.csdsqlx` which can be found in the `sample-data` folder in the root of the installation, along with a blank `CSPDatabase.db` CSD-Theory metadata database. -### Other customisations +### Other Customisations For other optional customisations to your WebCSD server please see [WebCSD Configuration and Customisation](https://github.com/ccdc-opensource/on-site-webcsd/wiki/WebCSD-Configuration-&-Customisation). ## Updates -When you have been notified that there is an update available you can [download the newest release](https://github.com/ccdc-opensource/on-site-webcsd/releases) from the github repository. -Once you have downloaded the new release, ensure any customisations have been copied to the new release directory. -You may need to customise the new versions of the config files (particularly `.env`) rather than copying the old versions - check the website above for breaking changes. +To update your installation, re-run the maintenance tool and select the same installation folder. +Click Ok when a warning message pops up. +This will automatically pull the latest versions of all containers and restart the stack. -Once the latest installation files have been obtained, to update the software, pull the latest images, and restart the stack. -The latest images can be pulled whilst the stack is running and changes will only come into effect upon restarting the stack. - -```sh -docker compose pull - -#Include all files you included when bringing up the stack -docker compose -f docker-compose.yml -f ... down -#Use one of the following commands: - -#Use this command if you have no in-house databases and don't want to use macromolecule hub -docker compose -f docker-compose.yml -f docker-compose.ssl.yml up -d - -#Use this command if you have in-house databases and don't want to use macromolecule hub -docker compose -f docker-compose.yml -f docker-compose.db-config.yml -f docker-compose.ssl.yml up -d - -#Use this command if you have in-house databases and want macromolecule hub -docker compose -f docker-compose.yml -f docker-compose.macromolecule-hub.yml -f docker-compose.db-config.yml -f docker-compose.ssl.yml up -d - -#Use this command if you have no in-house databases and want macromolecule hub -docker compose -f docker-compose.yml -f docker-compose.macromolecule-hub.yml -f docker-compose.ssl.yml up -d -``` +If a new database dump file is required the installer will let you know. Please contact +CCDC Support for the latest download link. -## Contacting support +## Contacting Support If you experience any difficulties with installing or using On-Site Lattice and WebCSD, please contact our support team at who will be happy to assist you. diff --git a/csd-data/.gitignore b/csd-data/.gitignore deleted file mode 100644 index e7a210e..0000000 --- a/csd-data/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -*/ -!.gitignore \ No newline at end of file diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..5c3bbf8 --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,94 @@ +# This docker-compose file is used to change log level to debug of all services. + +x-loglevel: &loglevel "Debug" + +services: + csd-platform: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-platformgateway: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-identity: + environment: + Logging__LogLevel__Default: *loglevel + + entitlements: + environment: + Logging__LogLevel__Default: *loglevel + + webcsd: + environment: + Logging__LogLevel__Default: *loglevel + ApplicationSettings__debug: true + Serilog__WriteTo__Name: Console + + webcsdbackend: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-substructuresearch: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-deposition: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-textnumericsearch: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-searchservice: + environment: + Logging__LogLevel__Default: *loglevel + + csd-request-entry: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-formulasearch: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-unitcellsearch: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-similaritysearch: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-fingerprint: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-substructure-filter: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-crystal-structure-export: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-reducedcell-calculation-service: + environment: + Logging__LogLevel__Default: *loglevel + + webcsd-theory: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-database-management: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-csd-entry-ingestion: + environment: + Logging__LogLevel__Default: *loglevel + + ccdc-file-generation: + environment: + Logging__LogLevel__Default: *loglevel diff --git a/docker-compose.disable-user-access.yml b/docker-compose.disable-user-access.yml deleted file mode 100644 index 7041de6..0000000 --- a/docker-compose.disable-user-access.yml +++ /dev/null @@ -1,12 +0,0 @@ -# On-Site Version 4.0 -# To disable User Access Control include this file in the startup command with -f docker-compose.disable-user-access.yml -version: "3.6" - -services: - csd-platform: - environment: - - DisableUserAccessControl=true - - webcsd: - environment: - - ApplicationOnSiteSettings__DisableUserAccessControl=true diff --git a/docker-compose.insecure-configuration.yml b/docker-compose.insecure-configuration.yml new file mode 100644 index 0000000..d1dafd9 --- /dev/null +++ b/docker-compose.insecure-configuration.yml @@ -0,0 +1,38 @@ +# On-Site Version 4.3.0 + +# ⚠️ INSECURE CONFIGURATION +# +# This docker-compose file enables: +# DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE=true +# This allows services to accept any SSL/TLS certificate, including self-signed or invalid ones. + + +services: + csd-platform: + environment: + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + + ccdc-identity: + environment: + DANGEROUS_DISABLE_HTTPS: "true" + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + + entitlements: + environment: + DANGEROUS_DISABLE_VALIDATE_ISSUER: "true" + + webcsd: + environment: + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + + ccdc-file-generation: + environment: + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + + ccdc-csd-database-management: + environment: + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + + ccdc-csd-entry-ingestion: + environment: + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" diff --git a/docker-compose.macromolecule-hub.yml b/docker-compose.macromolecule-hub.yml deleted file mode 100644 index 2c76aec..0000000 --- a/docker-compose.macromolecule-hub.yml +++ /dev/null @@ -1,37 +0,0 @@ -# On-Site Version 4.0 -version: "3.6" - -services: - webcsd: - environment: - - CsdRepository__SketcherFeatures__1=Proteins - - webcsdbackend: - environment: - - ServiceSettings__Databases__1__Name=PDB Database - - ServiceSettings__Databases__1__DbeName=pdb - - ServiceSettings__Databases__1__ConnectionString=dbe - - ccdc-csd-substructuresearch: - environment: - - SubstructureSearchDatabaseConfiguration__Databases__1__Name=pdb - - SubstructureSearchDatabaseConfiguration__Databases__1__ReadConnectionString=${DB_CONNECTIONSTRING};SearchPath=structure_optimisation;Database=${CSD_DATABASE} - - SubstructureSearchDatabaseConfiguration__Databases__1__WriteConnectionString=${DB_CONNECTIONSTRING};SearchPath=structure_optimisation;Database=${CSD_DATABASE} - - ccdc-csd-deposition: - environment: - - DepositionDatabaseConfiguration__Databases__1__Name=pdb - - DepositionDatabaseConfiguration__Databases__1__ReadConnectionString=${DB_CONNECTIONSTRING};SearchPath=pdb_schema;Database=${CSD_DATABASE} - - DepositionDatabaseConfiguration__Databases__1__WriteConnectionString=${DB_CONNECTIONSTRING};SearchPath=pdb_schema;Database=${CSD_DATABASE} - - ccdc-csd-textnumericsearch: - environment: - - PdbReadConnection=${DB_CONNECTIONSTRING};SearchPath=pdb_schema;Database=${CSD_DATABASE} - - DatabaseConfiguration__Databases__1__Name=pdb - - DatabaseConfiguration__Databases__1__SettingsKey=PdbReadConnection - - ccdc-csd-unitcellsearch: - environment: - - UnitCellDatabaseConfiguration__Databases__1__Name=pdb - - UnitCellDatabaseConfiguration__Databases__1__ReadConnectionString=${DB_CONNECTIONSTRING};SearchPath=pdb_cell_optimisation;Database=${CSD_DATABASE} - - UnitCellDatabaseConfiguration__Databases__1__WriteConnectionString=${DB_CONNECTIONSTRING};SearchPath=pdb_cell_optimisation;Database=${CSD_DATABASE} diff --git a/docker-compose.postgres.yml b/docker-compose.postgres.yml new file mode 100644 index 0000000..562237a --- /dev/null +++ b/docker-compose.postgres.yml @@ -0,0 +1,22 @@ +services: + csd-database: + image: postgres:14.11-alpine3.19 + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + ports: + - "${POSTGRES_PORT:-5432}:5432" + volumes: + - ccdc_postgres_data:/var/lib/postgresql/data + - ${POSTGRES_DUMP_LOC}:/tmp/csd-database.bak + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] + interval: 30s + timeout: 5s + retries: 3 + +volumes: + ccdc_postgres_data: + driver: local diff --git a/docker-compose.sample-onsite-only-db-config.yml b/docker-compose.sample-onsite-only-db-config.yml deleted file mode 100644 index 8f637fa..0000000 --- a/docker-compose.sample-onsite-only-db-config.yml +++ /dev/null @@ -1,19 +0,0 @@ -# On-Site Version 4.0 -version: "3.6" - -services: - webcsdbackend: - # In these sections ensure that all instances of "database-1.csdsql" or "database-2.csdsql" - # are replaced with the actual database filename. - volumes: - - /path/to/database-1.csdsql:/csd-data/database-1.csdsql - - /path/to/database-2.csdsql:/csd-data/database-2.csdsql - environment: - - ServiceSettings__Databases__2__Name=Example1 - - ServiceSettings__Databases__2__ConnectionString=/csd-data/database-1.csdsql - - ServiceSettings__Databases__3__Name=Example2 - - ServiceSettings__Databases__3__ConnectionString=/csd-data/database-2.csdsql - - webcsd: - volumes: - - ./path/to/structure/files:/structure-files diff --git a/docker-compose.sample.ssl.yml b/docker-compose.sample.ssl.yml deleted file mode 100644 index af5fc33..0000000 --- a/docker-compose.sample.ssl.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: "3.6" - -services: - csd-platform: - volumes: - - /path/to/ssl/cert.crt:/etc/nginx/ssl/server_cert.crt:ro - - /path/to/ssl/cert.key:/etc/nginx/ssl/server_key.key:ro diff --git a/docker-compose.ssl.yml b/docker-compose.ssl.yml new file mode 100644 index 0000000..dc276a4 --- /dev/null +++ b/docker-compose.ssl.yml @@ -0,0 +1,7 @@ +services: + csd-platform: + environment: + ASPNETCORE_Kestrel__Certificates__Default__Password: ${CERTIFICATE_PASSWORD} + ASPNETCORE_Kestrel__Certificates__Default__Path: /https/ssl_cert.pfx + volumes: + - ${SSL_CERT_LOC}:/https/ssl_cert.pfx:ro diff --git a/docker-compose.yml b/docker-compose.yml index bb2b584..95bf573 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,77 +1,149 @@ -# On-Site Version 4.2.1 -version: "3.6" +# On-Site Version 4.3.0 x-labels: &k8s-labels kompose.image-pull-secret: pullsecret +x-loglevel: &loglevel "Warning" + +x-default-healthcheck: &default-healthcheck + interval: "30s" + services: csd-platform: + image: ccdcrepository.azurecr.io/onsite/ccdc-lattice:4.3.0 environment: - - DisableUserAccessControl=false - - PublicUri=${PUBLIC_URI} - image: ccdcrepository.azurecr.io/onsite/ccdc-web-platform:4.2.0 - restart: unless-stopped + # Services__Identity__https: https://ccdc-identity:8080 # left commented as original + Services__Entitlements__http__0: http://entitlements:8080 + Services__PlatformApi__http__0: http://ccdc-platformgateway:8080 + Services__identity__http__0: http://ccdc-identity:8080 + Services__webcsd__http__0: http://webcsd:8080 + Identity__Authority: ${PUBLIC_URI}/identity/ + ENABLE_IDENTITY_PROXY: "true" + ENABLE_WEBCSD_PROXY: "true" + ASPNETCORE_HTTPS_PORT: 8443 + ASPNETCORE_Kestrel__Certificates__Default__Password: ${CERTIFICATE_PASSWORD} + ASPNETCORE_Kestrel__Certificates__Default__Path: /https/ssl_cert.pfx + ASPNETCORE_URLS: https://+:8443 + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + ASPNETCORE_ENVIRONMENT: OnSite + PlatformApi__Server: http://platformapi + DisableUserAccessControl: "false" + PublicUri: ${PUBLIC_URI} + volumes: + - ${SSL_CERT_LOC}:/https/ssl_cert.pfx:ro ports: - ${PLATFORM_PORT}:8443 + # This is required for csd theory ingestion python script to work + #- 80:8080 + restart: unless-stopped labels: <<: *k8s-labels kompose.service.type: LoadBalancer kompose.service.expose: "true" depends_on: + # No healthcheck endpoint currently for identity ccdc-identity: condition: service_started webcsd: condition: service_healthy - csd-python-gateway: + # No healthcheck endpoint currently for platform gateway + ccdc-platformgateway: condition: service_started logging: driver: local - csd-python-gateway: + ccdc-platformgateway: + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-platform-gateway-api:4.3.0 + depends_on: + ccdc-csd-deposition: + condition: service_healthy + ccdc-csd-searchservice: + condition: service_healthy + ccdc-csd-database-management: + condition: service_healthy + csd-request-entry: + condition: service_healthy environment: - - PlatformSecurity__Issuer=${PUBLIC_URI} - - CCDC_LICENSING_CONFIGURATION=${CCDC_LICENSING_CONFIGURATION} - - PlatformSecurity__DisableSSLValidation=true - - Logging__LogLevel__Default=Warning - image: ccdcrepository.azurecr.io/onsite/ccdc-python-gateway:4.2.0 + APIHost: ccdc-platformgateway:8080 restart: unless-stopped logging: driver: local ccdc-identity: - image: ccdcrepository.azurecr.io/onsite/ccdc-identitygateway:4.1.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-identity:4.3.0 environment: - - ConnectionStrings__DefaultConnection=${DB_CONNECTIONSTRING};Database=${IDENTITY_DATABASE} - - PlatformClientSettings__RedirectUris__0=${PUBLIC_URI}/authentication/login-callback - - PlatformClientSettings__PostLogoutRedirectUris__0=${PUBLIC_URI}/authentication/logout-callback - - WebCsdClientSettings__RedirectUris__0=${PUBLIC_URI}/structures/signin-oidc - - WebCsdClientSettings__PostLogoutRedirectUris__0=${PUBLIC_URI}/structures/signout-oidc - - Logging__LogLevel__Default=Warning - restart: unless-stopped - depends_on: - webcsdbackend: - condition: service_healthy + ConnectionStrings__identitydb: ${DB_CONNECTIONSTRING};Database=${IDENTITY_DATABASE} + PATHBASE_OVERRIDE: /identity/ + DANGEROUS_DISABLE_HTTPS: "true" + + OpenIddict__EncryptionCertificateFilepath: /https/ssl_cert.pfx + OpenIddict__EncryptionCertificatePassword: ${CERTIFICATE_PASSWORD} + OpenIddict__SigningCertificateFilepath: /https/ssl_cert.pfx + OpenIddict__SigningCertificatePassword: ${CERTIFICATE_PASSWORD} + + Logging__LogLevel__Default: "Debug" + PlatformClientSettings__RedirectUris__0: ${PUBLIC_URI}/authentication/login-callback + PlatformClientSettings__PostLogoutRedirectUris__0: ${PUBLIC_URI}/authentication/logout-callback + WebCsdClientSettings__RedirectUris__0: ${PUBLIC_URI}/structures/signin-oidc + WebCsdClientSettings__PostLogoutRedirectUris__0: ${PUBLIC_URI}/structures/signout-oidc + ## SMTP + # SMTP__HOST: smtp.azurecomm.net + # SMTP__PORT: 587 + # SMTP__USERNAME: ${SMTP_USERNAME} + # SMTP__PASSWORD: ${SMTP_PASSWORD} + # SMTP__FROMADDRESS: ${SMTP_FROMADDRESS} + ## End SMTP + volumes: + - ${SSL_CERT_LOC}:/https/ssl_cert.pfx:ro logging: driver: local + ccdc-identity-migration: + image: ccdcrepository.azurecr.io/onsite/ccdc-identity-migration:4.3.0 + environment: + ConnectionStrings__identitydb: ${DB_CONNECTIONSTRING};Database=${IDENTITY_DATABASE} + + OpenIddict__Applications__0__RedirectUris__0: ${PUBLIC_URI}/signin-oidc + OpenIddict__Applications__0__PostLogoutRedirectUris__0: ${PUBLIC_URI}/signout-callback-oidc + OpenIddict__Applications__1__RedirectUris__0: ${PUBLIC_URI}/structures/signin-oidc + OpenIddict__Applications__1__PostLogoutRedirectUris__0: ${PUBLIC_URI}/structures/signout-oidc + volumes: + - ./OpenIddictApplicationsConfig.json:/app/OpenIddictApplicationsConfig.json:ro + + entitlements: + image: ccdcrepository.azurecr.io/onsite/ccdc-entitlements:4.3.0 + environment: + services__identity__http__0: http://ccdc-identity:8080 + DANGEROUS_DISABLE_VALIDATE_ISSUER: "true" + Cryptlex__CryptlexDataPath: /ccdc/lic + user: 1397:1397 + volumes: + - ./lic:/ccdc/lic + webcsd: + image: ccdcrepository.azurecr.io/onsite/webcsd:4.3.0 + user: 1397:1397 environment: - - IdentityGateway__Issuer=${PUBLIC_URI} - - IdentityGateway__DisableSSLValidation=true - - Logging__LogLevel__Default=Warning + CsdRepository__SketcherFeatures__1: Proteins + IdentityGateway__Issuer: ${PUBLIC_URI}/identity/ + IdentityGateway__DisableSSLValidation: "true" + IdentityGateway__ClientSecret: "" + PATHBASE_OVERRIDE: /structures/ + Logging__LogLevel__Default: *loglevel + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" depends_on: ccdc-csd-searchservice: condition: service_healthy csd-request-entry: condition: service_healthy - image: ccdcrepository.azurecr.io/onsite/webcsd:4.2.0 volumes: - ./userdata:/app/OnSite labels: <<: *k8s-labels - restart: unless-stopped logging: driver: local + healthcheck: + <<: *default-healthcheck webcsdbackend: depends_on: @@ -79,11 +151,10 @@ services: condition: service_healthy csd-request-entry: condition: service_healthy - image: ccdcrepository.azurecr.io/onsite/webcsdbackend:4.2.1 + image: ccdcrepository.azurecr.io/onsite/webcsdbackend:4.3.0 environment: - - CCDC_LICENSING_CONFIGURATION=${CCDC_LICENSING_CONFIGURATION} - - Logging__LogLevel__Default=Warning - restart: unless-stopped + CCDC_LICENSING_CONFIGURATION: ${CCDC_LICENSING_CONFIGURATION} + Logging__LogLevel__Default: *loglevel labels: <<: *k8s-labels logging: @@ -92,26 +163,33 @@ services: ccdc-csd-deposition: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-deposition-api:4.2.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-deposition-api:4.3.0 environment: - - CsdDepositionReadConnection=${DB_CONNECTIONSTRING};SearchPath=csd_schema;Database=${CSD_DATABASE} - - DepositionDatabaseConfiguration__DefaultDatabase=csd - - DepositionDatabaseConfiguration__Databases__0__Name=csd - - DepositionDatabaseConfiguration__Databases__0__ReadConnectionString=${DB_CONNECTIONSTRING};SearchPath=csd_schema;Database=${CSD_DATABASE} - - DepositionDatabaseConfiguration__Databases__0__WriteConnectionString=${DB_CONNECTIONSTRING};SearchPath=csd_schema;Database=${CSD_DATABASE} - - Logging__LogLevel__Default=Warning + CsdDepositionReadConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=csd_schema + CsdDepositionWriteConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=csd_schema + Logging__LogLevel__Default: *loglevel + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} restart: unless-stopped + depends_on: + message-broker: + condition: service_healthy logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-textnumericsearch: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-textnumericsearch-api:4.2.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-textnumericsearch-api:4.3.0 environment: - - CsdReadConnection=${DB_CONNECTIONSTRING};SearchPath=csd_schema;Database=${CSD_DATABASE} - - Logging__LogLevel__Default=Warning - restart: unless-stopped + CsdDepositionReadConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=csd_schema + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} + Logging__LogLevel__Default: *loglevel + healthcheck: + <<: *default-healthcheck logging: driver: local @@ -128,22 +206,24 @@ services: condition: service_healthy ccdc-csd-similaritysearch: condition: service_healthy - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-searchservice-api:4.2.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-searchservice-api:4.3.0 environment: - - SearchServiceConnectionString=${DB_CONNECTIONSTRING};SearchPath=searchstore;Database=${CSD_DATABASE} - - MessagingProvider=RabbitMq - - MessagingOnSiteUsername=queueuser - - MessagingOnSitePassword=${CCDC_LICENSING_CONFIGURATION} - - MessagingHost=message-broker - - Logging__LogLevel__Default=Warning + SearchServiceConnectionString: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=searchstore + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-substructuresearch: - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-substructuresearch-api:4.2.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-substructuresearch-api:4.3.0 labels: <<: *k8s-labels restart: unless-stopped + # Note this also references ccdc-csd-searchservice but that would create a circular dependency so is omitted. + # It is reasonable to assume it is already running as this service is a dependency depends_on: ccdc-csd-substructure-filter: condition: service_healthy @@ -154,19 +234,14 @@ services: message-broker: condition: service_healthy environment: - - SubstructureSearchDatabaseConfiguration__DefaultDatabase=csd - - SubstructureSearchDatabaseConfiguration__Databases__0__Name=csd - - SubstructureSearchDatabaseConfiguration__Databases__0__ReadConnectionString=${DB_CONNECTIONSTRING};SearchPath=substructure;Database=${CSD_DATABASE} - - SubstructureSearchDatabaseConfiguration__Databases__0__WriteConnectionString=${DB_CONNECTIONSTRING};SearchPath=substructure;Database=${CSD_DATABASE} - - StructureSearchTestUser=test - - StructureSearchTestPassword=password - - MessagingProvider=RabbitMq - - MessagingOnSiteUsername=queueuser - - MessagingOnSitePassword=${CCDC_LICENSING_CONFIGURATION} - - MessagingHost=message-broker - - Logging__LogLevel__Default=Warning + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} + SubstructureSearchDatabaseWriterConnectionString: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=substructure + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck csd-request-entry: labels: @@ -176,23 +251,26 @@ services: condition: service_healthy ccdc-csd-crystal-structure-export: condition: service_healthy - image: ccdcrepository.azurecr.io/onsite/csd-request-entry-api:4.2.0 + image: ccdcrepository.azurecr.io/onsite/csd-request-entry-api:4.3.0 environment: - - Logging__LogLevel__Default=Warning - restart: unless-stopped + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-formulasearch: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-formulasearch-api:4.0.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-formulasearch-api:4.3.0 environment: - - FormulaSearchReadConnection=${DB_CONNECTIONSTRING};SearchPath=formula;Database=${CSD_DATABASE} - - Logging__LogLevel__Default=Warning - restart: unless-stopped + FormulaSearchReadConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=formula + FormulaSearchWriteConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=formula + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-unitcellsearch: labels: @@ -200,16 +278,15 @@ services: depends_on: ccdc-csd-reducedcell-calculation-service: condition: service_healthy - restart: unless-stopped - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-unit-cell-search:4.2.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-unit-cell-search:4.3.0 environment: - - UnitCellDatabaseConfiguration__DefaultDatabase=csd - - UnitCellDatabaseConfiguration__Databases__0__Name=csd - - UnitCellDatabaseConfiguration__Databases__0__ReadConnectionString=${DB_CONNECTIONSTRING};SearchPath=unitcell;Database=${CSD_DATABASE} - - UnitCellDatabaseConfiguration__Databases__0__WriteConnectionString=${DB_CONNECTIONSTRING};SearchPath=unitcell;Database=${CSD_DATABASE} - - Logging__LogLevel__Default=Warning + UnitCellSearchReadConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=unitcell + UnitCellSearchWriteConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=unitcell + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-similaritysearch: labels: @@ -217,66 +294,100 @@ services: depends_on: ccdc-csd-fingerprint: condition: service_healthy - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-structure-similarity-search:4.0.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-structure-similarity-search:4.3.0 environment: - - StructureSimilaritySearchReadConnection=${DB_CONNECTIONSTRING};SearchPath=similarity;Database=${CSD_DATABASE} - - Logging__LogLevel__Default=Warning - restart: unless-stopped + StructureSimilaritySearchReadConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=similarity + StructureSimilaritySearchWriteConnection: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=similarity + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-fingerprint: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-fingerprint-service:4.2.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-fingerprint-service:4.3.0 restart: unless-stopped logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-substructure-filter: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-substructure-filter-service:4.0.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-substructure-filter-service:4.3.0 restart: unless-stopped logging: driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-crystal-structure-export: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-crystal-structure-export-service:4.1.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-crystal-structure-export-service:4.3.0 + restart: unless-stopped + logging: + driver: local + healthcheck: + <<: *default-healthcheck + + ccdc-csd-sqlite-crystal-structure-access: + user: 1397:1397 + labels: + <<: *k8s-labels + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-sqlite-crystal-structure-access-service:4.3.0 + volumes: + - ./userdata:/app/OnSite restart: unless-stopped logging: driver: local + healthcheck: + <<: *default-healthcheck + + ccdc-csd-crystal-structure-curation: + labels: + <<: *k8s-labels + image: ccdcrepository.azurecr.io/onsite/ccdc-crystal-structure-curation-service:4.3.0 + restart: unless-stopped + logging: + driver: local + healthcheck: + <<: *default-healthcheck ccdc-csd-reducedcell-calculation-service: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/ccdc-csd-reducedcell-calculation-service:4.0.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-reducedcell-calculation-service:4.3.0 restart: unless-stopped logging: driver: local + healthcheck: + <<: *default-healthcheck webcsd-theory: labels: <<: *k8s-labels - image: ccdcrepository.azurecr.io/onsite/csd-theory:4.0.0 + image: ccdcrepository.azurecr.io/onsite/csd-theory:4.3.0 environment: - - CCDC_LICENSING_CONFIGURATION=${CCDC_LICENSING_CONFIGURATION} - - Logging__LogLevel__Default=Warning - restart: unless-stopped + CCDC_LICENSING_CONFIGURATION: ${CCDC_LICENSING_CONFIGURATION} + Logging__LogLevel__Default: *loglevel logging: driver: local + healthcheck: + <<: *default-healthcheck message-broker: - image: rabbitmq:3 + image: ccdcrepository.azurecr.io/onsite/rabbitmq:4.3.0 environment: RABBITMQ_DEFAULT_USER: queueuser RABBITMQ_DEFAULT_PASS: ${CCDC_LICENSING_CONFIGURATION} restart: unless-stopped healthcheck: + <<: *default-healthcheck test: ["CMD", "rabbitmqctl", "await_startup"] - interval: 30s timeout: 10s retries: 5 start_period: 30s @@ -285,16 +396,15 @@ services: ccdc-file-generation: restart: unless-stopped - image: ccdcrepository.azurecr.io/onsite/ccdc-structure-file-generation:4.1.0 + image: ccdcrepository.azurecr.io/onsite/ccdc-structure-file-generation:4.3.0 environment: - - CacheSettings__ConnectionString=${DB_CONNECTIONSTRING};Database=structure_file_cache - - MessagingProvider=RabbitMq - - MessagingOnSiteUsername=queueuser - - MessagingOnSitePassword=${CCDC_LICENSING_CONFIGURATION} - - MessagingHost=message-broker - - PlatformSecurity__Issuer=${PUBLIC_URI} - - PlatformSecurity__DisableSSLValidation=true - - Logging__LogLevel__Default=Warning + CacheSettings__ConnectionString: ${DB_CONNECTIONSTRING};Database=structure_file_cache;SearchPath=cache + MessagingProvider: RabbitMQ + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} + MessagingHost: message-broker + Logging__LogLevel__Default: *loglevel + Identity__Authority: ${PUBLIC_URI}/identity/ depends_on: message-broker: condition: service_healthy @@ -302,3 +412,61 @@ services: condition: service_healthy logging: driver: local + healthcheck: + <<: *default-healthcheck + + ccdc-csd-database-management: + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-database-management-api:4.3.0 + labels: + <<: *k8s-labels + environment: + DatabaseManagementConnectionString: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=database_management + ServiceDatabaseConnectionString: ${DB_CONNECTIONSTRING} + Logging__LogLevel__Default: *loglevel + Identity__Authority: ${PUBLIC_URI}/identity/ + DANGEROUS_ACCEPT_ANY_SERVER_CERTIFICATE: "true" + logging: + driver: local + healthcheck: + <<: *default-healthcheck + + ccdc-csd-entry-ingestion: + user: 1397:1397 + labels: + <<: *k8s-labels + image: ccdcrepository.azurecr.io/onsite/ccdc-csd-entry-ingestion-api:4.3.0 + volumes: + - ./userdata:/app/OnSite + environment: + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} + EntryIngestionDatabaseWriterConnectionString: ${DB_CONNECTIONSTRING};Database=${CSD_DATABASE};SearchPath=entry_ingestion + Logging__LogLevel__Default: *loglevel + Identity__Authority: ${PUBLIC_URI}/identity/ + depends_on: + ccdc-csd-sqlite-crystal-structure-access: + condition: service_healthy + ccdc-csd-crystal-structure-curation: + condition: service_healthy + ccdc-csd-deposition: + condition: service_healthy + message-broker: + condition: service_healthy + restart: unless-stopped + logging: + driver: local + healthcheck: + <<: *default-healthcheck + + ccdc-csd-crystal-structure-change-queue-consumer: + image: ccdcrepository.azurecr.io/onsite/csd-queueconsumer-crystalstructurechanged:4.3.0 + environment: + MessagingOnSiteUsername: queueuser + MessagingOnSitePassword: ${CCDC_LICENSING_CONFIGURATION} + depends_on: + ccdc-csd-deposition: + condition: service_healthy + message-broker: + condition: service_healthy + healthcheck: + <<: *default-healthcheck diff --git a/onsite-webcsd-media/database configuration.png b/onsite-webcsd-media/database configuration.png new file mode 100644 index 0000000..9811712 Binary files /dev/null and b/onsite-webcsd-media/database configuration.png differ diff --git a/onsite-webcsd-media/installer_screenshot_1.png b/onsite-webcsd-media/installer_screenshot_1.png new file mode 100644 index 0000000..63570fb Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_1.png differ diff --git a/onsite-webcsd-media/installer_screenshot_2.png b/onsite-webcsd-media/installer_screenshot_2.png new file mode 100644 index 0000000..9cc9eb0 Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_2.png differ diff --git a/onsite-webcsd-media/installer_screenshot_3.png b/onsite-webcsd-media/installer_screenshot_3.png new file mode 100644 index 0000000..27401f3 Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_3.png differ diff --git a/onsite-webcsd-media/installer_screenshot_4.png b/onsite-webcsd-media/installer_screenshot_4.png new file mode 100644 index 0000000..471e181 Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_4.png differ diff --git a/onsite-webcsd-media/installer_screenshot_5.png b/onsite-webcsd-media/installer_screenshot_5.png new file mode 100644 index 0000000..1f12cc5 Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_5.png differ diff --git a/onsite-webcsd-media/installer_screenshot_6.png b/onsite-webcsd-media/installer_screenshot_6.png new file mode 100644 index 0000000..38c40e6 Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_6.png differ diff --git a/onsite-webcsd-media/installer_screenshot_7.png b/onsite-webcsd-media/installer_screenshot_7.png new file mode 100644 index 0000000..8b3e3fc Binary files /dev/null and b/onsite-webcsd-media/installer_screenshot_7.png differ diff --git a/onsite-webcsd-media/onsite configuration.png b/onsite-webcsd-media/onsite configuration.png new file mode 100644 index 0000000..42576c0 Binary files /dev/null and b/onsite-webcsd-media/onsite configuration.png differ