Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This guide provides instructions for deploying NMIS Suite with NMIS 9 and commercial Modules using either Quick Start or Docker Compose methods, with optional Apache reverse proxy configuration. The solution can be deployed either with a containerized MongoDB instance or configured to use an external MongoDB server.

...

  • Access to the internet to pull the latest, this is currently :v1.0 container image

  • Docker Engine (20.10.0 or newer)A valid UUID for the NMIS_CLUSTER_ID. This can be generated on any linux OS with “uuidgen”

Minimum Resource Requirements

...

  • MongoDB Container:

    • Additional 1GB RAM minimum

    • 10GB storage for database files

    • Total system RAM: 4GB minimum

Method 1: Single Container Start

First you need to create a MongoDB database.

  1. Pull the NMIS image:

Code Block
languagebash
docker pull public.ecr.aws/n2x4v8j4/firstwave/nmis9_omk:v1.0
  1. Start the container:

Code Block
languagebash
docker run -d \
  --name nmis \
  -e NMIS_DB_USERNAME=root \
  -e NMIS_DB_PASSWORD=example \
  -e NMIS_DB_SERVER=mongodb.example.com \
  -e NMIS_SERVER_NAME=example-host-1 \
  -e NMIS_CLUSTER_ID=660f29ae-f150-4119-bf04-cd9296852449 \
  -p 8080:8080 \
  -p 8042:8042 \
   public.ecr.aws/n2x4v8j4/firstwave/nmis9_omk:v1.0
  1. Verify deployment:

Code Block
languagebash
docker ps | grep nmis9
docker logs nmis9

...

Deployment Steps

Docker Compose

Please refer to the section ‘Persisting configs’ configuration files’ below if you wish to take and use the default configs from the container or mount in your own

...

Code Block
languagebash
docker pull public.ecr.aws/n2x4v8j4/firstwave/nmis9_omk:latestv1.0
  1. Create docker-compose.yaml:

Code Block
languageyaml
version: '3.4'

services:
  mongo:
    image: mongo:64.04
    restart: always
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo mongo:27017/test --quiet
      interval: 60s
      timeout: 60s
      retries: 5
      start_period: 60s
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - mongo_data:/var/lib/mongodb
    networks:
      - backend

  nmis:
    image: public.ecr.aws/n2x4v8j4/firstwave/nmis9_omk:v1.0
    restart: always
    environment:
      NMIS_DB_USERNAME: root
      NMIS_DB_PASSWORD: example
      NMIS_DB_SERVER: mongo
      NMIS_SERVER_NAME: example-host-1
      NMIS_CLUSTER_ID: 660f29ae-f150-4119-bf04-cd9296852449
    depends_on:
      mongo:
        condition: service_healthy
    volumes:
      - log_data:/usr/local/nmis9/logs
      - var_data:/usr/local/nmis9/var
      - conf_data:/usr/local/nmis9/conf
      - database_data:/usr/local/nmis9/database
# You can mount your own config files into volumes in the container but 
# you must ensure that the db config details match whats in this compose file
#     - ./app_conf/Config.nmis:/usr/local/nmis9/conf/Config.nmis
#     - ./app_conf/opCommon.json:/usr/local/omk/conf/opCommon.json
#     - ./app_conf/opLicense.json:/usr/local/omk/conf/opLicense.json
    ports:
      - "8080:8080"
      - "8042:8042"
    networks:
      - backend

networks:
  backend:

volumes:
  log_data:
  var_data:
  conf_data:
  database_data:
  mongo_data:

...

But you can extend this to any file you want which is used by the nmis system, to do this:

  1. create a directory named appconf app_conf (if you didn’t before) in the same directory you created the compose file in:

Code Block
mkdir -p appconf
cd appconf
sudo cp /path/to/Config.nmis .
sudo cp /path/to/opCommon.json .
sudo cp /path/to/opLicense.json .
  1. uncomment out the appconf app_conf volume mounts in the compose file

  2. restart Restart the the container stackcontainers

If you wish to use the default configs that work out of the box with the containers, and modify them, you can copy them from the containers to your local machine.

...

  • MongoDB root password

  • NMIS admin credentials

**Important - to change the mongo password - please change it in the mongo database before changing any configurations or environment variables

docker exec -it container_name mongo -u root -p example

use admin
db.changeUserPassword("root", "new_password")
exit

  1. SSL/TLS Configuration:

  • Use strong SSL protocols (TLSv1.2+)

  • Regularly update SSL certificates

  • Implement proper cipher suites

...