2.1. Installation

GEMINI Digital Twin is compiled as docker container, thus it will be easy to setup and replicate to a server (on premises or cloud). It is needed to have a basic knowledge of Docker to install this tool. Several tutorial can be found in the internet (example)

The pre-requisite software of this installation are:

docker-compose.yml
  1version: '3.8'
  2
  3networks:
  4    gemini:
  5
  6services:
  7    gemini_framework:
  8        image: ghcr.io/gemini-digital-twin/gemini-framework:MVP
  9        environment:
 10            - GEMINI_PLANT=HAL
 11        volumes:
 12            - project-db:/opt/gemini-project
 13        depends_on:
 14            - influxdb
 15        networks:
 16            - gemini
 17
 18    gemini_gui:
 19        image: ghcr.io/gemini-digital-twin/gemini-user-interface:MVP
 20        ports:
 21            - 5101:5101
 22        environment:
 23            - GEMINI_FRONTEND_PORT=5101
 24            - GEMINI_MYSQLDB_URL=mysqldb
 25        restart: unless-stopped
 26        volumes:
 27            - project-db:/opt/gemini-project
 28            - doc-db:/opt/gemini-documentation
 29        depends_on:
 30            - mysqldb
 31        networks:
 32            - gemini
 33
 34    gemini_doc:
 35        image: ghcr.io/gemini-digital-twin/gemini-documentation:MVP
 36        restart: unless-stopped
 37        volumes:
 38            - doc-db:/opt/gemini-documentation
 39        networks:
 40            - gemini
 41
 42    gemini_project:
 43        image: ghcr.io/gemini-digital-twin/gemini-project:MVP
 44        restart: unless-stopped
 45        volumes:
 46            - project-db:/opt/gemini-project
 47        networks:
 48            - gemini
 49
 50    mysqldb:
 51        image: mysql:8.0
 52        ports:
 53            - 3306:3306
 54        environment:
 55            - MYSQL_ROOT_PASSWORD=root
 56            - MYSQL_DATABASE=geminidb
 57        volumes:
 58            - mysqldb_data-storage:/data/db
 59            - mysqldb_var_lib-storage:/var/lib/mysql
 60        restart: unless-stopped
 61        networks:
 62            - gemini
 63
 64    grafana:
 65        image: grafana/grafana:latest
 66        ports:
 67            - 3000:3000
 68        environment:
 69            - GF_SECURITY_ALLOW_EMBEDDING=true
 70            #- GF_SECURITY_COOKIE_SAMESITE=none
 71        volumes:
 72            - grafana-storage:/var/lib/grafana
 73        depends_on:
 74            - influxdb
 75        networks:
 76        - gemini
 77
 78    influxdb:
 79        image: influxdb:latest
 80        ports:
 81            - 8086:8086
 82            - 8998:8088
 83        environment:
 84            - DOCKER_INFLUXDB_INIT_MODE=setup
 85            - DOCKER_INFLUXDB_INIT_ORG=TNO
 86            - DOCKER_INFLUXDB_INIT_BUCKET=gemini-project
 87            - DOCKER_INFLUXDB_INIT_USERNAME=gemini-user
 88            - DOCKER_INFLUXDB_INIT_PASSWORD=gemini-password
 89            - DOCKER_INFLUXDB_INIT_TOKEN=gemini-token
 90        volumes:
 91            - influxdb-storage:/var/lib/influxdb
 92            - influxdb2-storage:/var/lib/influxdb2
 93            - influxdb2etc-storage:/etc/influxdb2
 94        restart: unless-stopped
 95        networks:
 96            - gemini
 97
 98volumes:
 99    mysqldb_data-storage:
100    mysqldb_var_lib-storage:
101    grafana-storage:
102    influxdb-storage:
103    influxdb2-storage:
104    influxdb2etc-storage:
105    project-db:
106    doc-db:

There are several services in this docker-compose.yml file:

  1. GEMINI Framework

    This container runs the real-time modules when is called. The container shares volume of project-db with other container to have a common project data. The project name should be given in GEMINI_PLANT environment variable. This container depends on InfluxDB container to access the real-time data.

  2. GEMINI User interface (GUI)

    This container provides the web user interface of GEMINI. This container depends on MySQLDB container to access user authentication and project. The port number can be defined in GEMINI_FRONTEND_PORT environment variable. The container shares volume of project-db with other container to have a common project data and volume of doc-db to access the documentation.

  3. GEMINI Documentation

    This container provides the web-based documentation of GEMINI. The content is shared with GEMINI User Interface container.

  4. GEMINI Project

    This container provides the shared volume project-db that can be accessed by GEMINI Framework container and GEMINI User Interface container.

  5. Grafana

    This is a multi-platform open source analytics and interactive visualization web application. It can produce charts, graphs, and alerts for the web when connected to supported data sources. It is used to visualize the time series data.

  6. MySQLDB

    It is an open-source relational database management system. To handle several data structured of GEMINI.

  7. InfluxDB

    It is an open-source time series database. It is used for storage and retrieval of time series data in fields such as operations monitoring, application metrics, Internet of Things sensor data, and real-time analytics. We use this database to store time series data from Geothermal assets.