MATIH Platform is in active MVP development. Documentation reflects current implementation status.
4. Installation & Setup
Prerequisites

Prerequisites

Before installing the MATIH Platform, verify that your development machine or deployment environment meets the following requirements. This page covers prerequisites for all deployment scenarios: local development, cloud deployment, and CI/CD pipelines.


System Requirements

Local Development

ResourceMinimumRecommended
CPU4 cores8 cores
RAM16 GB32 GB
Disk50 GB free100 GB free (SSD)
OSmacOS 13+, Ubuntu 22.04+, Windows 11 (WSL2)macOS 14+ or Ubuntu 24.04

Cloud Deployment (Kubernetes Cluster)

ResourceDevelopmentProduction
Nodes3 nodes5+ nodes
CPU per node4 vCPUs8 vCPUs
RAM per node16 GB32 GB
Disk per node100 GB SSD256 GB SSD
Kubernetes version1.28+1.28+

Required Software

Docker

Docker is required for building container images and running the local development environment.

ComponentRequired VersionVerification
Docker Engine24.0+docker --version
Docker Compose2.20+docker compose version
Docker Desktop4.25+ (macOS/Windows)Docker Desktop settings

Installation:

# macOS (via Homebrew)
brew install --cask docker
 
# Ubuntu
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
 
# Verify
docker --version
docker compose version

Docker Desktop Configuration:

For local development, allocate sufficient resources in Docker Desktop settings:

SettingValue
CPUs4+
Memory8 GB+ (12 GB recommended)
Swap2 GB
Disk image size64 GB+

Kubernetes Tools

ToolRequired VersionPurposeVerification
kubectl1.28+Kubernetes CLIkubectl version --client
helm3.13+Kubernetes package managerhelm version

Installation:

# macOS (via Homebrew)
brew install kubectl helm
 
# Ubuntu
# kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
 
# helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
 
# Verify
kubectl version --client
helm version

Terraform

Terraform is required for cloud infrastructure provisioning.

ToolRequired VersionVerification
terraform1.6+terraform version

Installation:

# macOS (via Homebrew)
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
 
# Ubuntu
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update && sudo apt-get install terraform
 
# Verify
terraform version

Java Development Kit (JDK)

The Control Plane services and several Data Plane services are built with Java 21.

ToolRequired VersionVerification
JDK21 (LTS)java -version
Gradle8.4+ (via wrapper)./gradlew --version

Installation:

# macOS (via SDKMAN)
curl -s "https://get.sdkman.io" | bash
sdk install java 21.0.2-tem
 
# macOS (via Homebrew)
brew install openjdk@21
 
# Ubuntu
sudo apt-get install openjdk-21-jdk
 
# Verify
java -version
# Expected: openjdk version "21.x.x"

Python

The AI Service, ML Service, and Data Quality Service are built with Python.

ToolRequired VersionVerification
Python3.11+python3 --version
pip23.0+pip3 --version
Poetry1.7+ (recommended)poetry --version

Installation:

# macOS (via Homebrew)
brew install python@3.11
 
# Install Poetry
curl -sSL https://install.python-poetry.org | python3 -
 
# Ubuntu
sudo apt-get install python3.11 python3.11-venv python3-pip
 
# Verify
python3 --version
pip3 --version
poetry --version

Node.js

The frontend workbenches and the Render Service use Node.js.

ToolRequired VersionVerification
Node.js20 LTSnode --version
npm10+npm --version
pnpm8+ (recommended)pnpm --version

Installation:

# macOS (via nvm -- recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20
nvm use 20
 
# Install pnpm
npm install -g pnpm
 
# Verify
node --version
npm --version
pnpm --version

Cloud Provider CLI Tools

For cloud deployments, install the CLI for your target cloud:

CloudToolRequired VersionInstallation
Azureaz2.55+brew install azure-cli or docs (opens in a new tab)
AWSaws2.13+brew install awscli or docs (opens in a new tab)
GCPgcloud450+brew install google-cloud-sdk or docs (opens in a new tab)
# Azure
az version
az login
 
# AWS
aws --version
aws configure
 
# GCP
gcloud version
gcloud auth login

Optional but Recommended Tools

ToolPurposeInstallation
jqJSON processing in scriptsbrew install jq
yqYAML processingbrew install yq
k9sTerminal UI for Kubernetesbrew install k9s
sternMulti-pod log tailingbrew install stern
kubectx / kubensKubernetes context/namespace switchingbrew install kubectx
direnvDirectory-specific environment variablesbrew install direnv
pre-commitGit pre-commit hookspip install pre-commit

Verification Script

Run the following commands to verify all prerequisites at once:

# Core tools
echo "=== Docker ===" && docker --version
echo "=== Docker Compose ===" && docker compose version
echo "=== kubectl ===" && kubectl version --client 2>/dev/null
echo "=== Helm ===" && helm version --short
echo "=== Terraform ===" && terraform version | head -1
echo "=== Java ===" && java -version 2>&1 | head -1
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== npm ===" && npm --version
echo "=== jq ===" && jq --version

Expected output (versions may vary):

=== Docker ===
Docker version 25.0.3, build 4debf41
=== Docker Compose ===
Docker Compose version v2.24.5
=== kubectl ===
Client Version: v1.29.1
=== Helm ===
v3.14.0
=== Terraform ===
Terraform v1.7.2
=== Java ===
openjdk version "21.0.2" 2024-01-16
=== Python ===
Python 3.11.7
=== Node.js ===
v20.11.0
=== npm ===
10.2.4
=== jq ===
jq-1.7.1

Network Requirements

Local Development

ServicePortProtocol
Docker API2376TCP
Kubernetes API (local)6443TCP
Container registry (pulling images)443HTTPS
npm/pip/Maven registries443HTTPS

Cloud Deployment

AccessPortsPurpose
Kubernetes API443Cluster management
Container Registry443Image push/pull
Cloud Provider APIs443Terraform provisioning
DNS53Name resolution
SSH (optional)22Node debugging

Repository Setup

Clone the MATIH repository and verify the structure:

# Clone the repository
git clone https://github.com/your-org/matih-prototype.git
cd matih-prototype
 
# Verify key directories exist
ls control-plane/    # Java Spring Boot services
ls data-plane/       # Python/Java/Node.js data services
ls frontend/         # React workbench applications
ls infrastructure/   # Helm charts, Terraform modules
ls scripts/          # Build and deployment scripts

Next Steps

With prerequisites verified, proceed to: