๐ Deploy Mojaloop Locally Using MicroK8s (Ubuntu 24.04 LTS)
๐ Introduction
This guide explains how to deploy a full Mojaloop environment locally using:
- Ubuntu 24.04 LTS
- MicroK8s
- Helm
The setup includes:
- Mojaloop Core Services
- Testing Toolkit (TTK)
- Two DFSP simulators (payer & payee)
- DFSP onboarding
- P2P transfer simulation
โ ๏ธ This environment is for development and testing only.
๐ฅ๏ธ System Requirements
Minimum:
- Ubuntu 24.04 LTS
- 16GB RAM (32GB recommended)
- 4+ CPU cores
- 50GB disk
- sudo privileges
Verify Ubuntu version:
lsb_release -a
1๏ธโฃ Install MicroK8s
sudo snap install microk8s --classic --channel=1.31/stable
Add your user:
sudo usermod -a -G microk8s $USER
newgrp microk8s
Verify:
microk8s status --wait-ready
2๏ธโฃ Enable Required Add-ons
microk8s enable dns
microk8s enable ingress
microk8s enable storage
microk8s enable helm3
Alias kubectl:
echo "alias kubectl='microk8s kubectl'" >> ~/.bashrc
source ~/.bashrc
3๏ธโฃ Add Helm Repositories
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add elastic https://helm.elastic.co
helm repo add mojaloop https://mojaloop.io/helm/repo/
helm repo update
4๏ธโฃ Deploy Mojaloop Backend
helm install backend mojaloop/example-mojaloop-backend \
--namespace mojaloop \
--create-namespace
Wait for pods:
kubectl get pods -n mojaloop
5๏ธโฃ Deploy Mojaloop Core
helm install dev mojaloop/mojaloop \
--namespace mojaloop
Verify:
kubectl get pods -n mojaloop
6๏ธโฃ Configure Local DNS
Edit:
sudo nano /etc/hosts
Add:
127.0.0.1 testing-toolkit.local
127.0.0.1 testing-toolkit.payer
127.0.0.1 testing-toolkit.payee
127.0.0.1 mojaloop.local
7๏ธโฃ Deploy DFSP 1 โ Payer
Create Namespace
kubectl create namespace payer
Create payer_values.yaml
touch payer_values.yaml
nano payer_values.yaml
Add:
global:
fspId: payer
config:
mojaloop:
endpoint: http://dev-ml-api-adapter-service.mojaloop:3000
callback:
endpoint: http://payer-ml-testing-toolkit-backend.payer:4040
ingress:
enabled: true
hosts:
- host: testing-toolkit.payer
paths:
- /
Deploy
helm install payer mojaloop/ml-testing-toolkit \
--namespace payer \
-f payer_values.yaml
Verify:
kubectl get pods -n payer
Access:
http://testing-toolkit.payer
8๏ธโฃ Deploy DFSP 2 โ Payee
kubectl create namespace payee
touch payee_values.yaml
nano payee_values.yaml
Add:
global:
fspId: payee
config:
mojaloop:
endpoint: http://dev-ml-api-adapter-service.mojaloop:3000
callback:
endpoint: http://payee-ml-testing-toolkit-backend.payee:4040
ingress:
enabled: true
hosts:
- host: testing-toolkit.payee
paths:
- /
Deploy:
helm install payee mojaloop/ml-testing-toolkit \
--namespace payee \
-f payee_values.yaml
Access:
http://testing-toolkit.payee
9๏ธโฃ DFSP Onboarding
- Open
http://testing-toolkit.local - Go to Test Runner
- Import collections from:
https://github.com/mojaloop/testing-toolkit-test-cases
Run:
https://github.com/mojaloop/testing-toolkit-test-cases/blob/master/collections/hub/provisioning/new_hub/new_hub.json
https://github.com/mojaloop/testing-toolkit-test-cases/blob/master/collections/hub/provisioning/new_participants/new_dfsp.json
- new_hub.json (for hub)
- new_dfsp.json (for payer)
- new_dfsp.json (for payee)
Update callback URLs per namespace.
๐ Simulate P2P Transfer
From payer TTK:
- Load:
p2ptransfer/collections/p2p_happy_path.json
- Load environment:
p2ptransfer/envs/p2p_happy_path_env.json
- Click Run
Monitor payee TTK โ Monitoring
You should observe:
- GET /parties
- POST /quotes
- POST /transfers
๐งน Cleanup
helm uninstall dev -n mojaloop
helm uninstall backend -n mojaloop
kubectl delete namespace mojaloop payer payee pm4ml
โ Summary
You now have a full local Mojaloop environment including:
- MicroK8s Kubernetes
- Mojaloop core
- Two DFSP simulators
- DFSP onboarding
- P2P transfer simulation
This environment can be used for:
- DFSP development
- Integration testing
- Architecture learning
๐ References
This guide is aligned with the official Mojaloop documentation: