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 Desktop (https://docs.docker.com/engine/install/)
Docker Compose (https://docs.docker.com/compose/install/)
- 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:
- 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.
- 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.
- GEMINI Documentation
This container provides the web-based documentation of GEMINI. The content is shared with GEMINI User Interface container.
- GEMINI Project
This container provides the shared volume project-db that can be accessed by GEMINI Framework container and GEMINI User Interface container.
- 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.
- MySQLDB
It is an open-source relational database management system. To handle several data structured of GEMINI.
- 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.