System Installation with Docker¶
The recommended way to quickly install Universe MDM is by using Docker.
The system can be installed manually, if desired. This method of installation requires special skills and is intended to describe the basic steps. In projects, the IT infrastructure, integration parameters, and etc. will differ.
Note
This page contains an example of installing via Docker. To install, you need to have a repository with the Universe MDM distribution in the form of Docker images
Preparing for Installation¶
Server preparation:
Update the existing list of Ubuntu packages. Command:
sudo apt update
Install Docker from oficial repository. See docs https://docs.docker.com/
Install Docker Compose (version 1.29 or upper).
Configure permissions for Docker Compose. Command:
sudo chmod +x /usr/local/bin/docker-compose
Install Git.
Link to repository:
According to the delivery contract, Universe MDM will get access to the repository with the distribution of your product.
The main way: get an archive with Docker images of the distribution. Create your own repository via a local Docker pub.
Alternative way: According to the Universe Date delivery agreement, get access to the repository with the distribution of your product.
Installing with Docker¶
To install Universe MDM:
Make sure you have a link to the repository with the product distribution. About getting the link, see above.
Clone the repository from Gitlab or Docker. The command:
git clone [your-link-universe-platform-deploy.git]
Go to the directory with project using the command:
cd universe-platform-deploy
Log in to the repository using the command (using login /password):
sudo docker login repo.tddev.ru/universe-dg-deploy
Run Universe MDM system:
docker-compose up -d
By default, you can see UI on localhost:8082
.
Default login/password: admin
/ admin
. After entering the login and password, the system will request the license file and password change
Custom Installation with Docker Compose¶
Note
The version of docker-compose should be 1.29 or upper
If necessary, use docker-compose.yaml
to create your own image. The .env
file contains the list of available variables. File description see below.
Create docker-compose.yaml file.
Create hunspell folder with dictionaries.
You can recreate docker container with new settings by the command:
docker-compose up -d --build --force-recreate
Example of the docker-compose.yaml file:
version: '2.4'
services:
jacoco:
image: docker.universe-data.ru/universe/jacoco-agent:latest
profiles: ["jacoco"]
volumes:
- jacoco:/jacoco:ro
setup_json:
image: stedolan/jq:latest
entrypoint: >
sh -c "
cd /opt/json_configs;
[ ! -z ${OVERRIDE_JSON:-''} ] &&
jq -s '.[0] * .[1]' customer.json ${OVERRIDE_JSON}
> ../customer.json ||
cp customer.json ../customer.json"
volumes:
- ./:/opt
ui:
image: ${FRONTEND_IMAGE}
restart: always
ports:
- ${FRONTEND_PORT}:80
networks:
- mdm_network
links:
- mdm
volumes:
- ${FRONTEND_UE:-/dev/null}:/usr/share/nginx/html/CUX
- ./customer.json:/usr/share/nginx/html/customer.json
environment:
BACKEND_ADDRESS: ${BACKEND_ADDRESS}
CLIENT_MAX_BODY_SIZE: ${CLIENT_MAX_BODY_SIZE}
PROXY_SEND_TIMEOUT: ${PROXY_SEND_TIMEOUT}
PROXY_READ_TIMEOUT: ${PROXY_READ_TIMEOUT}
SEND_TIMEOUT: ${SEND_TIMEOUT}
depends_on:
setup_json:
condition: service_completed_successfully
mdm:
image: ${BACKEND_IMAGE}
restart: always
ports:
- ${BACKEND_PORT}:8080
- ${JACOCO_AGENT_PORT:-6300}:6300
networks:
- mdm_network
environment:
GUEST_MODE: ${GUEST_MODE}
POSTGRES_ADDRESS: postgres-mdm:5432
POSTGRES_USERNAME: ${MDM_POSTGRES_USER}
POSTGRES_PASSWORD: ${MDM_POSTGRES_PASSWORD}
DATABASE_NAME: ${MDM_POSTGRES_DB_NAME}
SEARCH_CLUSTER_ADDRESS: opensearch-mdm:9200
SEARCH_CLUSTER_NAME: docker-cluster
EMAIL_ENABLED: ${RESTORE_EMAIL_ENABLED}
EMAIL_SERVER_HOST: ${RESTORE_EMAIL_SERVER_HOST}
EMAIL_SERVER_PORT: ${RESTORE_EMAIL_SERVER_PORT}
EMAIL_USERNAME: ${RESTORE_EMAIL_USERNAME}
EMAIL_PASSWORD: ${RESTORE_EMAIL_PASSWORD}
EMAIL_FRONTEND_URL: ${RESTORE_EMAIL_FRONTEND_URL}
EMAIL_SSL_ENABLE: ${RESTORE_EMAIL_SSL_ENABLE}
EMAIL_STARTTLS_ENABLE: ${RESTORE_EMAIL_STARTTLS_ENABLE}
JAVA_TOOL_OPTIONS: ${JAVA_TOOL_OPTIONS:-}
volumes:
- jacoco:/jacoco:ro
depends_on:
postgres-mdm:
condition: service_healthy
opensearch-mdm:
condition: service_healthy
postgres-mdm:
image: postgres:12
restart: always
environment:
POSTGRES_DB: ${MDM_POSTGRES_DB_NAME}
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
MDM_POSTGRES_USER: ${MDM_POSTGRES_USER}
MDM_POSTGRES_PASSWORD: ${MDM_POSTGRES_PASSWORD}
ports:
- ${POSTGRES_OUTER_PORT}:5432
networks:
- mdm_network
volumes:
- ./init-db.sh:/docker-entrypoint-initdb.d/initdb.sh
- mdm-postgres-data:/var/lib/postgresql/data
command: postgres -c max_prepared_transactions=300
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d $MDM_POSTGRES_DB_NAME"]
interval: 10s
timeout: 1s
retries: 20
opensearch-mdm:
image: opensearchproject/opensearch:2.7.0
restart: always
environment:
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.type=single-node"
- "DISABLE_SECURITY_PLUGIN=true"
volumes:
- mdm-opensearch-data:/usr/share/opensearch/data
- ./hunspell:/usr/share/opensearch/config/hunspell/
ulimits:
memlock:
soft: -1
hard: -1
ports:
- ${OPENSEARCH_HTTP_OUTER_PORT}:9200
networks:
- mdm_network
healthcheck:
test: >
bash -c "curl http://localhost:9200 | grep '\"cluster_name\"'"
interval: 10s
timeout: 2s
retries: 20
volumes:
mdm-postgres-data:
driver: local
mdm-opensearch-data:
driver: local
jacoco:
driver: local
networks:
mdm_network:
driver: bridge
Description of.env File¶
Tip
Parameter names may differ depending on the edition (SE/EE/CE), but must match the parameters in docker-compose.yaml
BACKEND_IMAGE, FRONTEND_IMAGE - references to backend and frontend images; vary depending on the edition.
OPENSEARCH_HTTP_OUTER_PORT, POSTGRES_OUTER_PORT, FRONTEND_PORT, BACKEND_PORT - external ports of the corresponding containers, i.e. ports to which the cluster docker can externally connect. The values can be arbitrary; the names must match the docker-compose.yaml file.
MDM_POSTGRES_USER, MDM_POSTGRES_PASSWORD, MDM_POSTGRES_DB_NAME - user name, password and database name; varies depending on the edition; must match the docker-compose.yaml file.
GUEST_MODE - parameter to enable guest access; available only in Enterprise edition.
RESTORE_EMAIL - parameters which are responsible for restoring passwords.
Group of parameters nginx.conf is available in Standard and Enterprise editions:
BACKEND_ADDRESS - the value is taken from the section of the same name in docker-compose.yaml file - in the example the mdm value is used.
Example of .env file for Enterprise edition:
BACKEND_IMAGE=docker.universe-data.ru/unidata-ee/backend:release-6-9-f8f15d0a
FRONTEND_IMAGE=docker.universe-data.ru/unidata-ee/frontend:release-6-9-6a64df48
OPENSEARCH_HTTP_OUTER_PORT=19201
MDM_POSTGRES_USER=postgres
MDM_POSTGRES_PASSWORD=postgres
MDM_POSTGRES_DB_NAME=postgres
POSTGRES_OUTER_PORT=15431
FRONTEND_PORT=8082
BACKEND_PORT=9081
GUEST_MODE=false
RESTORE_EMAIL_ENABLED=false
RESTORE_EMAIL_SERVER_HOST=localhost
RESTORE_EMAIL_SERVER_PORT=5025
RESTORE_EMAIL_USERNAME=universe@example.com
RESTORE_EMAIL_PASSWORD=password
RESTORE_EMAIL_FRONTEND_URL=''
RESTORE_EMAIL_SSL_ENABLE=true
RESTORE_EMAIL_STARTTLS_ENABLE=false
#nginx.conf
BACKEND_ADDRESS=http://mdm:8080
CLIENT_MAX_BODY_SIZE=100m
PROXY_SEND_TIMEOUT=600s
PROXY_READ_TIMEOUT=600s
SEND_TIMEOUT=600s