mo-install Reference / v5.0.0

Debian 11

miniOrange On-Premise IDP 5.0.0 installation runbook for Debian 11.

Package mgr
apt
Init
systemd
Release
2021
Choose your database backend
Section 1

System Prep

Before installing any service, update the package repositories and install the tools mo-installer and moctl depend on. Debian uses apt like Ubuntu but ships fewer packages by default.

1.1 Update the system

sudo apt update && sudo apt upgrade -y
sudo reboot

1.2 Install required utilities

sudo apt install -y \
  unzip wget curl jq net-tools vim bash-completion \
  ca-certificates gnupg lsb-release \
  lsof telnet sudo

1.3 Configure the firewall

Debian does not install ufw by default. Install it before configuring.

sudo apt install -y ufw
sudo systemctl enable --now ufw

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh

sudo ufw allow 8080/tcp comment 'miniorange'
sudo ufw allow 8070/tcp comment 'eurekaserver'
sudo ufw allow 8071/tcp comment 'configserver'
sudo ufw allow 8072/tcp comment 'gatekeeper'
sudo ufw allow 6379/tcp comment 'redis'
sudo ufw allow 5672/tcp comment 'rabbitmq-amqp'
sudo ufw allow 15672/tcp comment 'rabbitmq-mgmt'

sudo ufw --force enable
sudo ufw status verbose

1.4 AppArmor

Debian ships AppArmor but with fewer enforcing profiles than Ubuntu by default. No relaxation is required for the IDP.

sudo apt install -y apparmor apparmor-utils
sudo aa-status | head -5
Section 2

Database

Section 3

Erlang + RabbitMQ

RabbitMQ is used by the IDP for internal messaging between microservices. It requires Erlang. On Ubuntu, both are installed from the official Cloudsmith-hosted apt repositories curated by the RabbitMQ team.

Note. RabbitMQ is not bundled with mo-installer and must be installed before running the installer.

3.1 Install Erlang prerequisites

sudo apt install -y curl gnupg apt-transport-https

3.2 Add Erlang and RabbitMQ signing keys

# RabbitMQ signing key
sudo curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc | \
  sudo gpg --dearmor -o /usr/share/keyrings/com.rabbitmq.team.gpg

# Erlang (Cloudsmith) key
sudo curl -fsSL https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key | \
  sudo gpg --dearmor -o /usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg

# RabbitMQ server (Cloudsmith) key
sudo curl -fsSL https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key | \
  sudo gpg --dearmor -o /usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg

3.3 Add the Cloudsmith apt sources

sudo tee /etc/apt/sources.list.d/rabbitmq.list > /dev/null <<'SOURCES'
## Erlang
deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] \
  https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bullseye main
deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.E495BB49CC4BBE5B.gpg] \
  https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bullseye main

## RabbitMQ server
deb [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] \
  https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bullseye main
deb-src [signed-by=/usr/share/keyrings/io.cloudsmith.rabbitmq.9F4587F226208342.gpg] \
  https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bullseye main
SOURCES

sudo apt update

3.4 Install Erlang

sudo apt install -y \
  erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
  erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
  erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools \
  erlang-tftp erlang-tools erlang-xmerl

3.5 Install RabbitMQ

sudo apt install -y rabbitmq-server --fix-missing

3.6 Enable and start the service

sudo systemctl enable --now rabbitmq-server
sudo systemctl status rabbitmq-server

3.7 Enable the management plugin

sudo rabbitmq-plugins enable rabbitmq_management
sudo systemctl restart rabbitmq-server

3.8 Verify

sudo rabbitmqctl status
sudo ss -tulnp | grep 5672

Values for the /initialize wizard

FieldValue
RabbitMQ Host127.0.0.1
AMQP Port5672
Mgmt UI Port15672
Default Loginguest / guest
Section 4

mo-installer

The miniOrange installer bundles Java 17 and Redis. You don’t install either manually. The installer auto-detects the OS and deploys the IDP services into /opt/tomcat/.

4.1 Download the installer

cd /opt
sudo wget https://miniorange.s3.us-east-1.amazonaws.com/public/installers/mo-installer-5.0.0.zip
sudo unzip mo-installer-5.0.0.zip -d mo-installer-5.0.0
cd /opt/mo-installer-5.0.0
ls -la

4.2 Source the environment file

less .env.sh
source .env.sh

Note. In v5.0.0, .env.sh does not contain database connection details. The DB connection is configured later through the browser UI at /initialize.

4.3 Set execute permissions

sudo chmod +x mo-installer.sh moctl/*.sh

4.4 Run the installer

sudo bash mo-installer.sh

The installer covers:

  • Java 17 — installed automatically
  • Redis — installed and configured automatically
  • moctl — installed to /usr/bin/moctl with tab completion
  • IDP services — deployed to /opt/tomcat/

Ubuntu note. The installer scripts use apt on Debian-family systems. If you see dpkg lock errors, ensure no unattended-upgrades job is running: sudo systemctl status unattended-upgrades.

At the end of the run:

Next step: moctl service start

4.5 Start the four core services

moctl service start
ServicePortPurpose
configserver8071Configuration
eurekaserver8070Service registry
gatekeeper8072API gateway
miniorange8080Main IDP service

4.6 Check service status

moctl service status
SymbolMeaning
● runningActive and registered in Eureka
△ registeringActive but not yet registered; wait and recheck
△ stoppedInactive
✗ failedCheck moctl log <service>

4.7 Open /initialize in a browser

https://<SERVER_IP>/initialize

Past the self-signed certificate warning, enter the values from the Database section above, plus Redis (127.0.0.1:6379, no password by default) and RabbitMQ (Section 3 values).

After the wizard completes, the dashboard loads. Navigate to Settings → Base URL and set it to your final domain.

4.8 Restart all services

moctl service restart

This starts the secondary services that depend on the completed schema. Wait 1–2 minutes for everything to register.

Section 5

Verify & Service Enablement

5.1 Full service status

moctl service status

Every service should show ● running or ● reachable. If a service shows △ registering, wait 30 seconds and re-run.

5.2 Full diagnostics

moctl diagnose

Expected output includes:

Database connectivity reachable
Redis reachable
RabbitMQ reachable

5.3 Individual service status

sudo systemctl status mo-idp-miniorange.service
sudo systemctl status redis
sudo systemctl status rabbitmq-server

5.4 Check all bound ports

sudo ss -tulnp | egrep '8080|8070|8071|8072|6379|5672'

For your DB:

DBPortListening on
PostgreSQL5432127.0.0.1
MySQL3306127.0.0.1
MSSQL14330.0.0.0
Oracle1521remote host

5.5 Preflight

moctl pre

Quick moctl reference

CommandPurpose
moctl service startStart all services in order
moctl service stopStop all services in reverse order
moctl service restartFull ordered restart
moctl service restart miniorangeRestart one named service
moctl log <service> -fLive tail logs
moctl log <service> --since 1hLogs from the past hour
moctl system memoryPer-service RSS memory
moctl jvm <service>Heap, threads, open file descriptors

Common issues on Ubuntu

Issue: Could not get lock /var/lib/dpkg/lock-frontend

unattended-upgrades is running. Wait for it to finish, or stop it temporarily:

sudo systemctl stop unattended-upgrades

Issue: PostgreSQL connection refused on 127.0.0.1

The pg_hba.conf edit didn’t reload. Run:

sudo systemctl restart postgresql@16-main

Issue: ufw blocking inter-service traffic

The IDP microservices talk to each other on 127.0.0.1 (which ufw always allows), but if you’ve set up custom rules, verify:

sudo ufw status verbose

Issue: ldconfig not finding Oracle Instant Client libraries

ls /etc/ld.so.conf.d/ | grep oracle
sudo ldconfig -v 2>&1 | grep -i oracle

The /etc/ld.so.conf.d/oracle-instantclient.conf file must exist and point to the instantclient directory.

Issue: Tomcat stale PID after a crash

sudo rm -f /opt/tomcat/latest/temp/*.pid
moctl service restart miniorange