Skip to content

DataNode Setup with Docker (Mac or Linux)

konstjar edited this page Aug 24, 2022 · 8 revisions

Prerequisites

Authentication Methods

ARACHNE DataNode supports several authentication methods in Standalone mode using Authenticator library:

  • LDAP
  • Active Directory
  • Google Cloud Platform
  • REST API
  • Database Query

Configuration example below provides idea how to configure authentication with Active Directory.

Docker Network

Docker containers will communicate with each other in Docker network. Thus, we will create one:

docker network create arachnenetwork

Docker Volumes

To keep DataNode system database on host machine we will create several Docker volumes:

docker volume create --name=datanode_postgresql_var_lib
docker volume create --name=datanode_postgresql_var_log
docker volume create --name=datanode_postgresql_etc
docker volume create --name=datanode_files

Configuration and Environment Variables File

  1. Create directory
sudo mkdir /opt/datanode
  1. Create file:
sudo vi /opt/datanode/datanode.env
  1. Populate the file with the following content:
datanode_runMode=STANDALONE
datanode.baseURL=http://localhost
datanode.port=80
server.ssl.enabled=false
ACHILES_STARTUP=0
jasypt.encryptor.password=arachne
jasypt.encryptor.algorythm=PBEWITHMD5ANDDES
docker.host=unix:///var/run/docker.sock
datanode.healthcheck.period=600000
datasource.healthcheck.period=600000


# Execution Engine Parameters
executionEngine.protocol=https
executionEngine.host=execution-engine
executionEngine.port=8888
executionEngine.analysisUri=/api/v1/analyze

# Active Directory Settings Example
security_method=ad
authenticator.user.registrationStrategy=CREATE_IF_NOT_EXISTS
authenticator.methods.ad.service=org.ohdsi.authenticator.service.directory.ad.AdAuthService
authenticator.methods.ad.config.baseDn=DC=example,DC=com
# Both formats works for AD either sAMAccountName (with or w/o domainSuffix) and distingueshedName
authenticator.methods.ad.config.userDn=<AD_SERVICE_ACCOUNT_USERNAME>
authenticator.methods.ad.config.password=<AD_SERVICE_ACCOUNT_PASSWORD>
authenticator.methods.ad.config.domainSuffix=<example.com>
authenticator.methods.ad.config.url=<ldap://pdc.example.com:389>
authenticator.methods.ad.config.searchFilter=(&(userPrincipalName={0})(memberOf=CN=Users,DC=example,DC=com) 
authenticator.methods.ad.config.ignorePartialResultException=true
authenticator.methods.ad.config.fieldsToExtract.firstName=givenName
authenticator.methods.ad.config.fieldsToExtract.lastName=sn

tmp.location-on-host=/tmp
datanode.httpClient.connectTimeout=120
datanode.httpClient.writeTimeout=600
datanode.httpClient.readTimeout=600
security.jwt.token.secretKey=${datanode.jwt.secret}
security.jwt.token.validityInSeconds=${datanode.jwt.expiration}

Edit properties and save file.

ARACHNE DataNode Container

Pull Docker image:

docker pull odysseusinc/arachne-datanode-ce:1.19.1

Create container with the following command:

docker create --name datanode \
--restart=always \
--network="arachnenetwork" \
-p 127.0.0.1:80:8880 \
-v datanode_postgresql_var_lib:/var/lib/postgresql \
-v datanode_postgresql_var_log:/var/log/postgresql \
-v datanode_postgresql_etc:/etc/postgresql \
-v datanode_files:/var/arachne/files \
-v /tmp:/tmp \
-v /var/run/docker.sock:/var/run/docker.sock  \
--env-file /opt/datanode/datanode.env \
odysseusinc/arachne-datanode-ce:1.19.1

And start container:

docker start datanode

ARACHNE Execution Engine Container

Pull Docker image:

docker pull odysseusinc/execution_engine:1.19.1

Create Docker container:

docker create \
--name execution-engine \
--privileged \
--restart=always \
--network="arachnenetwork" \
-p 127.0.0.1:8888:8888 \
-v /tmp:/tmp \
-e "server.servlet.session.timeout=600s" \
odysseusinc/execution_engine:1.19.1

And start container:

docker start execution-engine

UI Access

After both applications are installed you can access users web interface:

http://localhost

Open ARACHNE DataNode URL in browsers and login with your AD account.