mo-install Reference / v5.0.0

Alpine Linux 3.18

miniOrange On-Premise IDP 5.0.0 installation runbook for Alpine Linux 3.18.

Package mgr
apk
Init
OpenRC
Release
2023
Choose your database backend
Section 1

System Prep

Alpine Linux 3.21. Tier 2 in this site because Alpine deviates from the source guide’s assumptions in three meaningful ways: it uses OpenRC instead of systemd, musl libc instead of glibc, and BusyBox utilities by default instead of the GNU coreutils. Several mo-installer and moctl paths assume systemd unit files; you may need to author OpenRC service files for the IDP microservices.

Tier 2 caveat. Postgres and MySQL work on Alpine in practice. MSSQL and Oracle are flat-out unsupported because both require glibc.

1.1 Update the system

sudo apk update && sudo apk upgrade
sudo reboot

1.2 Install bash and GNU coreutils

mo-installer.sh and moctl expect GNU sed, grep, bash, and a few other utilities. BusyBox alternatives have subtle differences.

sudo apk add bash bash-completion coreutils sed grep findutils \
  curl wget unzip jq net-tools vim tar lsof

1.3 Install firewall tooling

Alpine does not include a firewall manager by default.

sudo apk add iptables ip6tables
sudo rc-update add iptables default

For UFW-like ergonomics, install awall (the official Alpine firewall manager) or nftables.

1.4 Open IDP ports (iptables)

for PORT in 8080 8070 8071 8072 6379 5672 15672; do
  sudo iptables -A INPUT -p tcp --dport $PORT -j ACCEPT
done

sudo /etc/init.d/iptables save

1.5 Service management — OpenRC primer

systemd commandOpenRC equivalent
systemctl start <svc>rc-service <svc> start
systemctl stop <svc>rc-service <svc> stop
systemctl restart <svc>rc-service <svc> restart
systemctl enable <svc>rc-update add <svc> default
systemctl status <svc>rc-service <svc> status
systemctl daemon-reload(not needed; OpenRC re-reads on start)

1.6 No SELinux, no AppArmor

Alpine ships neither by default. No relaxation required.

Section 2

Database

Section 3

Erlang + RabbitMQ

RabbitMQ and Erlang on Alpine 3.18. Both are in the community repository.

3.1 Enable the community repository

It’s usually enabled by default but verify:

grep '^http' /etc/apk/repositories

You should see a line like http://dl-cdn.alpinelinux.org/alpine/v3.18/community. If not, add it and apk update.

3.2 Install Erlang

sudo apk add erlang erlang-dev

3.3 Install RabbitMQ

sudo apk add rabbitmq-server

Version note. Alpine 3.18’s rabbitmq-server package is version 3.13.x as of this writing. The major version (3.13) matches what the source guide specifies; patch versions may differ.

3.4 Enable and start the service

sudo rc-update add rabbitmq-server default
sudo rc-service rabbitmq-server start

3.5 Enable the management plugin

sudo rabbitmq-plugins enable rabbitmq_management
sudo rc-service rabbitmq-server restart

3.6 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. On Alpine, mo-installer.sh requires bash and several GNU coreutils, which you installed in Section 1.

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

4.3 Set execute permissions

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

4.4 Run the installer

sudo bash mo-installer.sh

Alpine note. The installer may attempt to register systemd unit files. On Alpine those calls will fail silently and you’ll need to write OpenRC init scripts for each microservice manually. Stub OpenRC files for configserver, eurekaserver, gatekeeper, and miniorange look like:

sudo tee /etc/init.d/mo-miniorange > /dev/null <<'OPENRC'
#!/sbin/openrc-run

name="miniorange"
description="miniOrange IDP main service"
command="/opt/tomcat/latest/bin/catalina.sh"
command_args="run"
command_user="root"
pidfile="/var/run/${RC_SVCNAME}.pid"
command_background=true
depend() {
    need net
    after rabbitmq-server redis
}
OPENRC

sudo chmod +x /etc/init.d/mo-miniorange
sudo rc-update add mo-miniorange default

Repeat for the other three microservices, adjusting paths and dependencies.

4.5 Start the four core services

If you authored OpenRC init scripts:

sudo rc-service mo-configserver start
sudo rc-service mo-eurekaserver start
sudo rc-service mo-gatekeeper start
sudo rc-service mo-miniorange start

moctl service start may also work if it’s bash-portable; the source guide does not document Alpine specifically.

4.6 Open /initialize in a browser

https://<SERVER_IP>/initialize

Past the certificate warning, enter the values from the Database section above plus Redis (127.0.0.1:6379) and RabbitMQ.

4.7 Restart all services

sudo rc-service mo-miniorange restart
# (or the equivalent moctl call if it works on Alpine)
Section 5

Verify & Service Enablement

5.1 Service status (OpenRC)

sudo rc-status default

All mo-* services should be started. Also check Redis and RabbitMQ:

sudo rc-service redis status
sudo rc-service rabbitmq-server status

5.2 moctl diagnostics

If moctl runs on Alpine (depends on whether its bash compatibility holds):

moctl diagnose
moctl service status

If moctl errors with BusyBox-vs-GNU coreutil differences, check which sed, which grep, and ensure GNU versions from Section 1.2 are first in $PATH.

5.3 Port checks

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

5.4 Tier 2 limitations to expect

LimitationWorkaround
MSSQL server cannot run on AlpineRun MSSQL on a remote host (see DB section)
Oracle DB cannot run on AlpineRun Oracle on a remote host
mo-installer writes systemd unitsAuthor OpenRC init scripts manually
moctl may rely on GNU toolsInstall coreutils, bash, sed, grep

5.5 When to abandon Alpine and pick a Tier 1 OS

Alpine is appropriate for containerised IDP-on-IDP deployments where you control the image build and accept the operational overhead of OpenRC init scripting. For VM-based or bare-metal production, a Tier 1 distribution (RHEL 9, Ubuntu 22.04, Oracle Linux 8) avoids the workarounds above.