Skip to main content

NORA inside a Docker

​Install Docker on your host system

 

First, install docker, git and jq on your host system

sudo apt-get install docker.io git jq

There might be an issue with the DNS address in docker. To check this, run

docker run busybox nslookup google.com

If the host cannot be reached, grep the address of your DNS server

nmcli dev show | grep 'IP4.DNS'

create the file /etc/docker/daemon.json and insert the address as

{

    "dns": ["yourDNSip", "8.8.8.8"]

}

 

then restart docker

sudo service docker restart

go back to the busybox above and check if it works now.

Now, you should add your user to the docker group, otherwise you have not to sudo all NORA commands 

sudo adduser <username> docker

!!! you have to re-login to make these changes apply !!!!!!

 

Clone the git repository

NORA was historically named DPX. Note that this name might still often be used in the following. Clone the repository into to a temp folder, or to your favorite program place.
Let's say we clone to your home directory into ~/nora

git clone  https://<yourname>@bitbucket.org/reisert/dpx.git ~/nora

If want to use NORA in a multi-user environment you might want to create a specific group (we usually use dpxuser) and change the group of that directory (recursivey) accordingly. In any case, you have to set the s -flag and some ACLs recursively to that dir (you might have to run this as sudo. In this case make sure to apply it to the correct ~/nora directory !! )

find ~/nora  -type d -exec  chmod g+s {} +

If want to manage rights by ar group user

chgrp -R NORA ~/nora # if you manage your right via usergroup NORA./dp

nonetheless

setfacl -R -d -m g::rwx ~/nora

 

Initial configuration

Go into the nora directory and run ./install

This will create some local config files in the "conf" directory (for details see separate section below).

 NORA has 3 modules 

  • Frontend: webserver with image viewer 
  • DICOM node to receive images from a PACS 
  • Backend: processing module (depending on your preferences  matlab or nodejs and slurm or SGE based)

By default, all three modules are enabled. To run NORA in this default configuration edit main.conf and set at least MATLABPATH: <your-path-to-matlab>

If you are behind a proxy, it might also be necessary to set the proxy (maybe even with user/password)

DOCKER_http_proxy:" ... "

Also set the user Nora should act as in the main.conf

DPXUSER: " ... "
DPXGROUP: " ... "

 

 

 

Build the docker image

Your main function to control NORA is dpxcontrol. You can always run

./dpxcontrol

to get more help. To build the DOCKER image, first run

./dpxcontrol docker build

This will take a while. If everything went well, start all modules with

./dpxcontrol start

If something went wrong during installation / starts, there might be old 'zombie' containers. In this case you will be suggested docker commands to remove them. You can also start with --forceto autoremove old NORA containers.

To check the status, now use

./dpxcontrol status

If at least the first point, Docker, is running nicely, you should be able to log into the Webinterface. (see below)

Log into the Webinterface

Now, open a web-browser and go to localhost:81. Default login is

user:      root
password:  dpxuser

There are several options to create new users. You can either connect to an existing LDAP server, or just create users based on the internal user management of NORA (see Administration section for details). 

Troubleshooting and testing

Most log files are written into

<path-to-nora>/var/syslogs/

These can also be seen from the admin dialog at the top of the webinterface. If the daemon is not starting (or stopping again, red status) check the daemon.log for more info. In case of a license error, maybe you have to forward your MAC adress to Docker (see main.conf for more info)

For other system parts, there are also some test functions

./dpxcontrol test [slurm | email | more_to_be_programmed]

 

Upgrade the database

When your daemon is running nicely, it might be necessary to upgrade the initial database with

./dpxcontrol matlab updatedb

 

Autostart on system startup

To automatically start NORA when your computer starts, you can for example add <path-to-nora>/dpxcontrol start --force to your /etc/rc.local

Slurm setup

A proper configuration of slurm is a science on its own. Ask google for more information. If you are running slurm inside docker (default), the conf/slurm.conf is used and you do not have to do too much. Otherwise, if docker is installed outside (this should be  the correct practice) you have to it install via 

sudo apt-get install slurm-wlm

on a deb-system and set 

DOCKER_run_daemon_in_docker: 0,

in the <path-to-nora>/conf/main.conf file. For configuring slurm itself there is a configurator interface via html, which you usually find here 

/usr/share/doc/slurmctld/slurm-wlm-configurator.easy.html

which generates a conf file  /etc/slurm-llnl/slurm.conf where you have replace the hostname by the machine you are running NORA on. Further, the partitions have to specified. NORA has as default two partitions
(computing queues) DPXproc and DPXimport, which have to specified in the slurm.conf like in this example:

# COMPUTE NODES
NodeName=hostname CPUs=8 State=UNKNOWN
PartitionName=DPXproc Nodes=hostname Default=YES MaxTime=INFINITE State=UP
PartitionName=DPXimport Nodes=hostname Default=YES MaxTime=INFINITE State=UP

Alternatively, if you have an existing SLURM running with predefined paritions,  you can change the paritions (queues) in NORA’s configuration in  <path-to-nora>/conf/main.conf (SLURM_QUEUES)

 

Also consider 

./dpxcontrol test slurm 

for testing whether your slurm configuration is working.

 

General Configuration

All configuration files are located in <path-to-nora>/conf  directory. The configuration files are

  • main.conf  -  includes all major configurations, responsible for 
    • Location of external programs (MATLAB etc)
    • DOCKER port forwarding
    • Daemon beahviour
    • Import behavior (dicoms etc)
    • Mysql information
    • signin/signup behaviour, LDAP configuration
    • Backup behavior
  • pacs.conf - includes all information how to connect to external dicom nodes
  • routes.conf -  ip-addresses of DB, and routes of mount dirs (depending on hostnames diffferent mount locations are possible
  • slurm.conf - slurm configuration
  • smail.conf - mail configuration