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
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8 cores |
| RAM | 16 GB | 32 GB |
| Disk | 50 GB free | 100 GB free (SSD) |
| OS | macOS 13+, Ubuntu 22.04+, Windows 11 (WSL2) | macOS 14+ or Ubuntu 24.04 |
Cloud Deployment (Kubernetes Cluster)
| Resource | Development | Production |
|---|---|---|
| Nodes | 3 nodes | 5+ nodes |
| CPU per node | 4 vCPUs | 8 vCPUs |
| RAM per node | 16 GB | 32 GB |
| Disk per node | 100 GB SSD | 256 GB SSD |
| Kubernetes version | 1.28+ | 1.28+ |
Required Software
Docker
Docker is required for building container images and running the local development environment.
| Component | Required Version | Verification |
|---|---|---|
| Docker Engine | 24.0+ | docker --version |
| Docker Compose | 2.20+ | docker compose version |
| Docker Desktop | 4.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 versionDocker Desktop Configuration:
For local development, allocate sufficient resources in Docker Desktop settings:
| Setting | Value |
|---|---|
| CPUs | 4+ |
| Memory | 8 GB+ (12 GB recommended) |
| Swap | 2 GB |
| Disk image size | 64 GB+ |
Kubernetes Tools
| Tool | Required Version | Purpose | Verification |
|---|---|---|---|
kubectl | 1.28+ | Kubernetes CLI | kubectl version --client |
helm | 3.13+ | Kubernetes package manager | helm 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 versionTerraform
Terraform is required for cloud infrastructure provisioning.
| Tool | Required Version | Verification |
|---|---|---|
terraform | 1.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 versionJava Development Kit (JDK)
The Control Plane services and several Data Plane services are built with Java 21.
| Tool | Required Version | Verification |
|---|---|---|
| JDK | 21 (LTS) | java -version |
| Gradle | 8.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.
| Tool | Required Version | Verification |
|---|---|---|
| Python | 3.11+ | python3 --version |
| pip | 23.0+ | pip3 --version |
| Poetry | 1.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 --versionNode.js
The frontend workbenches and the Render Service use Node.js.
| Tool | Required Version | Verification |
|---|---|---|
| Node.js | 20 LTS | node --version |
| npm | 10+ | npm --version |
| pnpm | 8+ (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 --versionCloud Provider CLI Tools
For cloud deployments, install the CLI for your target cloud:
| Cloud | Tool | Required Version | Installation |
|---|---|---|---|
| Azure | az | 2.55+ | brew install azure-cli or docs (opens in a new tab) |
| AWS | aws | 2.13+ | brew install awscli or docs (opens in a new tab) |
| GCP | gcloud | 450+ | 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 loginOptional but Recommended Tools
| Tool | Purpose | Installation |
|---|---|---|
jq | JSON processing in scripts | brew install jq |
yq | YAML processing | brew install yq |
k9s | Terminal UI for Kubernetes | brew install k9s |
stern | Multi-pod log tailing | brew install stern |
kubectx / kubens | Kubernetes context/namespace switching | brew install kubectx |
direnv | Directory-specific environment variables | brew install direnv |
pre-commit | Git pre-commit hooks | pip 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 --versionExpected 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.1Network Requirements
Local Development
| Service | Port | Protocol |
|---|---|---|
| Docker API | 2376 | TCP |
| Kubernetes API (local) | 6443 | TCP |
| Container registry (pulling images) | 443 | HTTPS |
| npm/pip/Maven registries | 443 | HTTPS |
Cloud Deployment
| Access | Ports | Purpose |
|---|---|---|
| Kubernetes API | 443 | Cluster management |
| Container Registry | 443 | Image push/pull |
| Cloud Provider APIs | 443 | Terraform provisioning |
| DNS | 53 | Name resolution |
| SSH (optional) | 22 | Node 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 scriptsNext Steps
With prerequisites verified, proceed to:
- Local Development Setup if you are developing on your local machine
- Cloud Deployment if you are deploying to a Kubernetes cluster