Skip to content

Installation with Docker

Setup Accurids in Your Environment

Via Amazon ECR

Accurids is distributed via our AWS Docker repository. To get access to our Docker repository, we require your Amazon account ID for which we then grant access to our Docker registry. Once that is done, you can login to our repository via the Amazon CLI tools. Detailed information can be found here at AWS.

Please update the image value in accurids container inside docker-compose.yaml file in later step to 858273179365.dkr.ecr.eu-central-1.amazonaws.com/accurids:stable.

Via Tar Archive

This step require manual download of the tar file and Docker installed.

Steps:

  • We will provide a link where you can download the Accurids Docker image.
  • Download the Docker image from the link into your local machine.
  • Load the image to Docker.

Load image to Docker by running this command (eg: the downloaded file name is accurids-2.1.0.tar.gz):

docker load < accurids-2.1.0.tar.gz

Test if the image is loaded. The full image name will be Repository:Tag, which you can see with this command:

docker images -a

Example: The Repository is accurids/accurids and the Tag is 2.1.0, therefore the full image name is accurids/accurids:2.1.0.

Please update the image value in accurids container inside docker-compose.yaml file in later step to the full image name (eg: accurids/accurids:2.1.0).

We recommend to run Accurids on a server with at least 16 CPUs, 64 GiB memory, 300 GiB provisioned IOPS SSD volume and 3000 IOPS (e.g., an AWS EC2 instance type m7a.4xlarge).

Environment Preparation

Install Docker

Accurids runs in docker containers. If docker is already installed on your system, you can skip this step. Otherwise, install docker (example for Amazon Linux) or follow instructions in https://docs.docker.com/get-docker/.

sudo yum update -y
sudo amazon-linux-extras install docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user

Install Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

Afterwards, log off and on again.

Installation of Docker Image

Accurids is distributed as a Docker image, so you need Docker to start it. We also have a default docker-compose file to get you started even faster, so make sure you also have docker compose installed. Here is the default docker-compose.yaml file:

version: "3.7"
services:
  accurids:
    image: <!!! CHANGE ME !!!>
    container_name: accurids
    restart: always
    ports:
      - "8080:8080"
    environment:
      - "_JAVA_OPTIONS=-Xmx24g"
      - "accurids.confirm-user-email=false"
      - "accurids.maxParallelImportsPerNode=2"
      - "database.host=postgres"
      - "database.password=accurids"
      - "elasticsearch_cluster=docker-cluster"
      - "elasticsearch_host=elastic"
      - "spring.profiles.active=postgres"
    depends_on:
      - "elastic"
      - "postgres"
    volumes:
      - "working-dir:/working-dir"
    networks:
      - accunet

  elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.10.3
    container_name: elastic
    restart: always
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - esdata:/usr/share/elasticsearch/data
    networks:
      - accunet
    environment:
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms30g -Xmx30g"
      - "indices.query.bool.max_clause_count=2048"
      - "http.max_initial_line_length=16kb"
      - "xpack.security.enabled=false"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://elastic:9200" ]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s

  postgres:
    image: postgres:13.2
    container_name: postgres
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - accunet
    environment:
      - POSTGRES_DB=accurids
      - POSTGRES_USER=accurids
      - POSTGRES_PASSWORD="accurids"
      - POSTGRES_HOST_AUTH_METHOD=trust
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U accurids" ]
      interval: 5s

volumes:
  working-dir:
  esdata:
  pgdata:

networks:
  accunet:

Reason for xpack.security.enabled=false because Elasticsearch is only accessible by other services within this isolated Docker network.

Based on your preference and available system resources, you can set the maximum number of parallel dataset imports. To do so, set the optional environment variable accurids.maxParallelImports (as shown in above example) to the desired integer value. When the variable is not set, a maximum of two parallel loads are conducted.

Configure Mail Services

When built-in user management is activated, Accurids can verify the registration by email.

This is not applicable, when OAuth2 Setup is used for authentication. In that case or if you want to disable email confirmation, set accurids.confirm-user-email=false. No further configurations are needed in this case and all mail-related variables mentioned below can be removed.

To setup the email service, set credentials for authentication with spring.mail.username and spring.mail.password. Specify the mail server to connect to with spring.mail.host and spring.mail.port. The pre-configured default port is 587. Please ensure that the mailserver is reachable from the server where Accurids runs.

Furthermore, the sender address of emails sent by Accurids can be customized with accurids.from-email. The default sender address is office@accurids.com.

Preload Datasets

Please refer to the Preload Datasets documentation page.

Create a Network and Volumes

The Accurids docker network accunet is used for network communication and external volumes to store data and configurations. Usage of the external volumes prevents any data loss after containers restarting.

Create a network and volumes to allow communication between Accurids, Elasticsearch, and Postgres containers:

docker network create accunet
docker volume create working-dir
docker volume create esdata
docker volume create pgdata

Make sure that all was created correctly:

docker network ls
docker volume ls

Starting Accurids, Elasticsearch, and Postgres Containers

Using Docker Image from Amazon ECR

The newest version of Accurids can be fetched via ECR using your YOUR_AWS_ACCESS_KEY_ID for which we granted access to our Docker registry. This can be done by the following commands.

$(aws ecr get-login --no-include-email --region eu-central-1 --registry-ids YOUR_AWS_ACCESS_KEY_ID)
docker-compose pull
docker-compose up -d
Using Docker Image from Tar Archive
docker-compose up -d

Make sure that services are up and running.

docker stats

First Login

After installation you can open your browser and navigate to your servers. If you used the default docker-compose file, then you also have to specify the port (e.g., http://127.0.0.1:8080). The first thing you should do is to click on the "Sign In" button, then click on the "Sign Up" link beneath the form. Enter your account details to create the first user. The first user will automatically be granted the administrator role.

Upload Data

Go to the Datasets view of Accurids and upload an RDF file of choice to get first content in. If you don't have an RDF file at hand, you can download examples such as the Gene Ontology from EBI.

Search & Browse

Go to the Search and type '*' or a term related to the content you uploaded (e.g., 'regulator' or 'aspirin' - if you uploaded the Gene Ontology).