{"id":19756615,"url":"https://github.com/esnet/sense-rm","last_synced_at":"2025-04-30T11:33:32.913Z","repository":{"id":14745633,"uuid":"68035507","full_name":"esnet/sense-rm","owner":"esnet","description":"SENSE Resource Manager","archived":false,"fork":false,"pushed_at":"2025-04-15T21:06:13.000Z","size":2210,"stargazers_count":3,"open_issues_count":12,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-15T22:20:27.178Z","etag":null,"topics":["sense"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esnet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-09-12T18:21:16.000Z","updated_at":"2025-04-15T21:06:16.000Z","dependencies_parsed_at":"2023-10-14T10:06:51.156Z","dependency_job_id":"f843ef6d-7d1e-4119-b747-51ce2d575f3e","html_url":"https://github.com/esnet/sense-rm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fsense-rm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fsense-rm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fsense-rm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esnet%2Fsense-rm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esnet","download_url":"https://codeload.github.com/esnet/sense-rm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251691643,"owners_count":21628363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sense"],"created_at":"2024-11-12T03:16:25.651Z","updated_at":"2025-04-30T11:33:29.054Z","avatar_url":"https://github.com/esnet.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sense-n-rm\n\nSENSE Network Resource Manager\n\nThis is prototype software supporting the SENSE-RM API over an NSI network.\n\n## Contents\n\n- How-to configure and run the SENSE-N-RM application\n- How-to natively build the SENSE-N-RM\n- How-to install Java on CentOS 7\n- How-to install Maven on CentOS 7\n- How-to install Docker on CentOS 7\n- Using Docker tools to build the SENSE-N-RM\n\n## How-to configure and run the SENSE-N-RM application\nThe Java 1.8 runtime and Postgres database is required to run the SENSE-N-RM naitively on a server.  In addition, maven is required to build the SENSE-N-RM from source.\n\n### Pre-configuration checklist\n1. Install the prerequisite runtime software\n - java 1.8 for runtime and build of source;\n - maven for building the source;\n - postgresql for runtime.\n2. Create a non-root user account to run the SENSE-N-RM.\n3. Download and build the SENSE-N-RM source code (will require java and maven).\n4. Create a Postgres account for use by the SENSE-N-RM.\n5. \n\n\n## Create a non-root user account\nThe SENSE-N-RM application should be run as a low-privilege user on the target production server. Ideally it should be run as a user created only for the purpose of running the set of software associated with the SENSE-N-RM application.  However, an existing account can be used if available (i.e. opennsa).  However, if an account other than \"sense\" is used to run the application make sure to create the SENSE-N-RM database user using the utilized id.\n\nAs an example, we create the following new user and user group for the SENSE-N-RM application if you have not already done so (for example, below we create a \"sense\" user and user group).\n\n```\n$ sudo groupadd sense\n$ sudo useradd sense -g sense\n$ sudo su - sense\n```\n\n## Download and build the SENSE-N-RM source code\nThe SENSE-N-RM is a Java Spring-boot application the will require a Java 1.8 runtime and Maven to build.  Please follow the \"How-To\" sections on installing both Java and Maven if not on your system.\n\nWe recommend pulling the current version of the main branch from github.  Create a location to download and build the source.  This can be done in the context of the application specific user.\n\n```\n$ mkdir src\n$ cd src\n$ git clone https://github.com/esnet/sense-rm.git\n```\n\nInto the `sense-rm` directory we go and build the source (skipping test cases).\n\n```\n$ cd sense-rm\n$ mvn clean install -DskipTests=true\n```\n\nNow we want to collect the pieces in `target/dist` directory:\n\n```\n$ mvn antrun:run@package-runtime\n```\n\nCopy the contents of target/dist to the location you would like to use as the runtime directory for the SENSE-N-RM.  For example, if you are running under a dedicated sense user id then place in a location in the home directory `/home/sense/sense-rm`.  It is recommended that you do not run from the build directory as any new builds will overwrite the existing jar and configuration.\n\n```\n$ mv target/dist ~/sense-rm\n```\n\n## Create a Postgres application account\nThe SENSE-N-RM requires a dedicated Postgres user and database to be created for storage of MRML related model information, and other runtime data needed to map requests from the SENSE-O through to underlying resources.\n\nFirst we create new database user called \"sense\" using the Postgres interactive tools.  You can use a different user name but remember it for when you configure the SENSE-N-RM runtime.\n\n```\n$ sudo -u postgres createuser --interactive --pwprompt\n```\n\nHere is an example output:\n\n```\n$ sudo -u postgres createuser --interactive --pwprompt\nEnter name of role to add: sense\nEnter password for new role: ******\nEnter it again: *****\nShall the new role be a superuser? (y/n) n\nShall the new role be allowed to create databases? (y/n) y\nShall the new role be allowed to create more new roles? (y/n) n\n```\n\nNow we create the database \"sense-n-rm\" and assign ownership to the \"sense\" user we just created.\n\n```\n$ sudo -u postgres createdb -O sense sense-n-rm\n```\n\nThe creation of database tables will be done dynamically by the SENSE-N-RM.\n\n## Creating Java key and trust stores\nThe SENSE-N-RM source tree contains a `/certificates` directory holding a set of common certificates and scripts writen to create your Java keystore and trustore needed to communicate with systems in the SENSE ecosystem.\n\nTo build the truststore we can use the `build_truststore.sh` script:\n\n```\nUsage: build_truststore.sh \u003cfilename\u003e \u003cpassword\u003e\n```\n\nHere is an example where we create the a `truststore.jks` file with a default password of `changeit`.  Once created move the your SENSE-N-RM runtime `/config` directory, or somewhere it can be accessed.\n\n```\n$ cd certificates\n$ ./build_truststore.sh truststore.jks changeit\nAdding 179-132_research_maxgigapop_net.pem as alias 179-132_research_maxgigapop_net\nCertificate was added to keystore\nAdding agg_netherlight_net.pem as alias agg_netherlight_net\nCertificate was added to keystore\nAdding nsi-aggr-west_es_net.pem as alias nsi-aggr-west_es_net\nCertificate was added to keystore\nAdding nsi-am-sl_northwestern_edu.pem as alias nsi-am-sl_northwestern_edu\nCertificate was added to keystore\nAdding nsi0_lsanca_pacificwave_net.pem as alias nsi0_lsanca_pacificwave_net\nCertificate was added to keystore\nAdding nsi0_snvaca_pacificwave_net.pem as alias nsi0_snvaca_pacificwave_net\nCertificate was added to keystore\nAdding nsi0_sttlwa_pacificwave_net.pem as alias nsi0_sttlwa_pacificwave_net\nCertificate was added to keystore\nAdding nsi_ampath_net.pem as alias nsi_ampath_net\nCertificate was added to keystore\nAdding pmri061_it_northwestern_edu.pem as alias pmri061_it_northwestern_edu\nCertificate was added to keystore\nAdding southernlight_net_br.pem as alias southernlight_net_br\nCertificate was added to keystore\n```\n\nFor creating the Java keystore you will need the host SSL key, certificate, and signing CA file.  To build the keystore we can use the `build_keystore.sh` script:\n\n```\nUsage: build_keystore.sh \u003ckeystorefile\u003e \u003cpasswd\u003e \u003ckeyfile\u003e \u003ccertfile\u003e \u003cca-file\u003e\n```\n\nHere is an example where we create the a `keystore.p12` file with a password of `changeit`.  Once created move the your SENSE-N-RM runtime `/config` directory, or somewhere it can be accessed.\n\n```\n$ ./build_keystore.sh keystore.jks changeit test.key test.crt test-ca.crt \nEntry for alias 1 successfully imported.\nImport command completed:  1 entries successfully imported, 0 entries failed or cancelled\n[Storing keystore.jks]\n```\n\nNow move these to the SENSE-N-RM runtime configuration directory.\n\n```\n$ mv keystore.jks truststore.jks ~/sense-rm/config\n```\n\n## Configuring OpenNSA\nIf the SENSE-N-RM is being configured to use OpenNSA as am NSI Resource Manager then we need to configure OpenNSA to accept requests from the SENSE-N-RM.  This will require the SENSE-N-RM x.509 certificate to be added to the OpenNSA SSL certificate store, and the SENSE-N-RM host name added to the `/etc/opennsa.conf` file as follows:\n\n```\nsudo vi /etc/opennsa.conf \n```\n\nFind the \"allowedhosts=\" configuration attribute and add the SENSE-N-RM host to the list of allowed hosts.  Now restart OpenNSA as follows:\n\n```\n$ sudo systemctl restart opennsa\n```\n## Configuring the SENSE-N-RM\nThere are two configuration files that will need to be modified before you can run your SENSE-N-RM instance.  We will start with the simple configuration file first.\n\n### Configuring the log subsystem (logback.xml)\nThe SENSE-N-RM utilizes the java log4j logging subsystem to collect and maintain logs.  The `config/logback.xml` file can be modified to control the location of the generated log files.  By default logs will be written to the SENSE-N-RM home directory under `$HOME/var/log/sense-rm/`.  If you would like to change this location to somewhere more standard like `/var/log` then edit the following two lines in the `config/logback.xml` file to point to the desired location. \n\n```\n...\n\u003cfile\u003evar/log/sense-rm/sense-n-rm.log\u003c/file\u003e\n...\n\u003cfileNamePattern\u003evar/log/sense-rm/sense-n-rm.%d{yyyy-MM-dd}.log\u003c/fileNamePattern\u003e\n...\n```\nAlso, if using the system `/var/log` directory you will need to create a dedicated directory for SENSE-N-RM to write logs and change owenership the the user underwhich you are running the java process.\n\n```\n$ sudo mkdir /var/log/sense-rm\n$ sudo chown sense.sense /var/log/sense-rm\n```\n\n### Configuring the SENSE-N-RM runtime (application.yaml)\nThe SENSE-N-RM currently supports adaptation between the SENSE protocol and the standardized OGF NSI protocol.  To run an instance of the SENSE-N-RM we need to confiugure both attributes relating to operation within the SENSE environment, and attributes relating to operation within the NSI environment.  Also, the SENSE-N-RM can be deployed behind an HTTP reverse proxy to provide additional security.  All this configuration is specified through the `config/application.yaml` file.\n\n```\n#########################################\n# SENSE-N-RM specific configuration.    #\n#########################################\n#\n# sense.root - the root of our URL context for building REST URL.  If we are behind\n#        a proxy this is the URL of that proxy. [Not currently used]\n#\n# sense.proxy - A simple mechanism that allows for URL manupulation on returned\n#         resources to map any localized URL to URL externalized by a proxy.\n#         Proper configuration of the Spring-boot web environment should mean\n#         this proxy value is left empty.  Here is an example:\n#\n#             \"(http://localhost:8401|https://nsi0.snvaca.pacificwave.net/sense-rm)\"\n#\n#         This will change the URL:\n#\n#               http://localhost:8401/api/sense/v1/models\n#         to:\n#               https://nsi0.snvaca.pacificwave.net/sense-rm/api/sense/v1/models\n#\n#         Allowing for a reverse proxy with address \"nsi0.snvaca.pacificwave.net\"\n#         and component URI \"sense-rm\" to point to \"localhost:8401/api\".\n#\n# sense.driver - the RM driver to use for this runtime instance.  By default this is\n#          the NsiDriver class. [Should be left as is unless new southbound\n#          driver has been added.\n#\nsense:\n  root:\n  proxy:\n  driver: net.es.sense.rm.driver.nsi.NsiDriver\n```\nNow we need to configure the web server for our specific deployment.  If we are exposing the SENSE-N-RM directly then we will need to set up TLS with client authentication enabled.\n\nspecifying both the key and trust stores.\n\n\n```\n#########################################\n# Spring HTTP server configuration      #\n#########################################\n#\n# server.address - The local IP address to bind the web server.  Use localhost if\n#          behind a reverse proxy on only local connectivity is required.\n#\n# server.port - The local TCP port to bind for the web server.\n#\n# server.contextPath - The URI underwhich to anchor all discoverd REST endpoints.\n#          If behind a reverse proxy then set this to the URI used to map though\n#          to this SENSE-N-RM instance, otherwise use \"/\".\n#\n# server.packageName - This is the java package name underwhich to search for\n#          exposed REST endpoints.  Do not change this value.\n#\n# server.ssl - If behind an HTTPS reverse proxy then disable the ssl configuration,\n#          otherwise set parameters as needed.\nserver:\n  address: nsi0.snvaca.pacificwave.net\n  port: 8443\n  contextPath: /\n  packageName: net.es.sense.rm.driver.nsi\n  ssl:\n    enabled: true\n    protocol: TLS\n    enabled-protocols: TLSv1.2\n    client-auth: \"NEED\"\n    key-store: /home/sense/sense-rm/config/keystore.jks\n    key-store-password: changeit\n    trust-store: /home/sense/sense-rm/config/truststore.jks\n    trust-store-password: changeit\n\n```\n\n## How-to install Java on CentOS 7\nIf you decide to use the java runtime on CentOS 7 then we will need to install the Java 8 runtime to execute our SENSE-N-RM jar file.\n\nReference: [https://www.liquidweb.com/kb/install-java-8-on-centos-7/](Install Java 8 on CentoOS 7)\n\n### Step 1: As root up-to-date OS before we install.\n\n```\n$ sudo yum -y update\n```\n\n### Step 2: As root install Java 8 OpenJDK development kit.\n\n```\n$ sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel\n```\n\n### Step 3: Verify Java is installed\n\n```\n$ java -version\n```\n\nExample output:\n\n```\n$ java -version\nopenjdk version \"1.8.0_232\"\nOpenJDK Runtime Environment (build 1.8.0_232-b09)\nOpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)\n```\n\n### Step 4: Set up your Java environment\n\nDetermine the JAVA_HOME location:\n\n```\n$ sudo update-alternatives --config java\n```\n\nOutput will look like:\n\n```\n$ sudo update-alternatives --config java\n\nThere is 1 program that provides 'java'.\n\n  Selection    Command\n-----------------------------------------------\n*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java)\n\nEnter to keep the current selection[+], or type selection number: \n```\n\nFinally, setup the JAVA_HOME environment variable for the system.  If you would rather restrict this to a single user then install in user's `.bash_profile`.\n\n```\n$ sudo echo \"JAVA_HOME=$(readlink -f /usr/bin/java | sed \"s:bin/java::\")\" | sudo tee -a /etc/profile\n$ source /etc/profile\n```\n\nNew modify to this:\n\n~/.bash_profile\n```\nexport JAVA_HOME=/etc/alternatives/jre_openjdk\n```\n~/.cshrc\n\n```\nsetenv JAVA_HOME /etc/alternatives/jre_openjdk\n```\n\nAs stated, you could add this location to the \"sense\" runtime user by copying this location into the `.bash_profile` of the user using your favorite text editor.\n\n```\n$ vim ~/.bash_profile\n```\n\nAdd the following line:\n\n```\n$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre\n```\n\nLoad the new value into your environment\"\n\n```\n$ source ~/.bash_profile\n```\n\nNow we should see the following:\n\n```\n$ echo $JAVA_HOME\n/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre\n```\n\n## How-to install Maven on CentOS 7\nThe SENSE-N-RM requires Maven to download, build, and package all dependencies.  See \"Using Docker tools\" if you would rather use a Docker image for Maven instead of a loacl install.\n\n### Step 1: Download Apache Maven 3.8.3\nFirst, download and extract the Apache Maven 3.8.3 archive.\n\n```\n$ cd /tmp\n$ wget https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz\n$ tar -zxvf apache-maven-3.8.3-bin.tar.gz\n```\n\n### Step 2: Install Maven in a common location\nMove all Apache Maven 3.6.2 files to a reasonable location and change their ownership to `root:root`.\n\n```\n$ sudo mv /tmp/apache-maven-3.8.3 /opt\n$ sudo chown -R root:root /opt/apache-maven-3.8.3\n```\n\nCreate a version-irrelevant symbolic link pointing to the original Apache Maven 3.6.2 directory.\n\n```\n$ sudo ln -s /opt/apache-maven-3.8.3 /opt/apache-maven\n```\n\nAdd the path /opt/apache-maven to the PATH environment variable.\n\n```\n$ sudo echo 'export PATH=$PATH:/opt/apache-maven/bin' | sudo tee -a /etc/profile\n$ source /etc/profile\n```\n\nFinally, use the command below to verify the installation.\n\n```\n$ mvn --version\n```\n\nThe output should resemble the following.\n\n```\n$ mvn --version\nApache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)\nMaven home: /opt/maven\nJava version: 1.8.0_141, vendor: Oracle Corporation\nJava home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre\nDefault locale: en_US, platform encoding: UTF-8\nOS name: \"linux\", version: \"3.10.0-514.26.2.el7.x86_64\", arch: \"amd64\", family: \"unix\"\n```\n\nFinally we clean up.\n\n```\n$ rm /tmp/apache-maven-3.8.3-bin.tar.gz\n```\n## How-to install Postrges on CentOS 7\nThe default CentOS repository contain a postgresql package we can install using the yum package system.  If you require a specific version then follow published instructions.\n\nReference: [https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-centos-7](How To Install and Use PostgreSQL on CentOS 7))\n\nIf we have not yet updated the yum package database do that now:\n\n```\n$ sudo yum check-update\n```\n\nInstall the postgresql-server package and the “contrib” package, that adds some additional utilities and functionality:\n\n```\n$ sudo yum install postgresql-server postgresql-contrib\n```\n\nAccept the prompt, by responding with a `y`.\n\nNow that our software is installed, we have to perform a few steps before we can use it.\n\nCreate a new PostgreSQL database cluster:\n\n```\n$ sudo postgresql-setup initdb\n```\n\nNow we will need to configure Postgres authentication of the SENSE-N-RM.  There are two options for this depending on how you have configured the runtime environment.  If you have created a dedicated OS user id (say \"sense\") and have created a dedicated postgres user that matches the OS user id (i.e. \"sense\") then the default Postgres \"ident\" authentication mechanism should work out of the box.  However, if this does not work, or if you are running the SENSE-N-RM under a different user id than the Postgres user you created, then you should change the Postrges authentication mechanism from \"ident\" to the password authentication mechanism \"md5\".  We can change the authentication mechanism by editing the Postgres host-based authentication (HBA) configuration.\n\nOpen the HBA configuration with your favorite text editor. We will use vi:\n\n```\n$ sudo vi /var/lib/pgsql/data/pg_hba.conf\n```\n\nIf you cannot locate this file check under the specific version of Postgres you installed (i.e. `/var/lib/pgsql/9.6/data/pg_hba.conf`).\n\nFind the lines that looks like this, near the bottom of the file:\n\n**pg_hba.conf excerpt (original)**\n\n```\nhost    all             all             127.0.0.1/32            ident\nhost    all             all             ::1/128                 ident\n```\n\nThen replace “ident” with “md5”, so they look like this:\n\n**pg_hba.conf excerpt (updated)**\n\n```\nhost    all             all             127.0.0.1/32            md5\nhost    all             all             ::1/128                 md5\n```\n\nSave and exit. PostgreSQL is now configured to allow password authentication.\n\nNow start and enable PostgreSQL:\n\n```\n$ sudo systemctl start postgresql\n$ sudo systemctl enable postgresql\n```\n\nor if already running:\n\n```\n$ systemctl list-units|grep postgresql\n  postgresql-9.6.service                                                                    loaded active running   PostgreSQL 9.6 database server\n$ sudo systemctl restart postgresql-9.6.service\nPostgreSQL is now ready to be used.\n```\n\n## How-to install Apache HTTPD on CentOS 7\nIf you would like to protect the SENSE-N-RM behind `httpd` as a reverse proxy then it will need to be installed and configured.  Start by installing the current version of `httpd`:\n\n```\n$ sudo yum clean all\n$ sudo yum -y update\n$ sudo yum -y install httpd\n```\n\nIf you are running a host based firewall then open up the standard `httpd` ports:\n\n```\n$ sudo firewall-cmd --permanent --add-port=80/tcp\n$ sudo firewall-cmd --permanent --add-port=443/tcp\n$ sudo firewall-cmd --reload\n```\n\nConfigure `httpd` for your specific needs then start the service:\n\n```\n$ sudo systemctl start httpd\n```\n\nNow we enable it across restarts:\n\n```\n$ sudo systemctl enable httpd\n```\n\nSimilarly useful commands:\n\n  - Check the status `$ sudo systemctl status httpd`\n  - Stop the service `$ sudo systemctl stop httpd`\n  - Restart the service `$ sudo systemctl restart httpd`\n\n### Configuring HTTPD as a reverse proxy\n\n\n\n## How-to install Docker on CentOS 7\n\nFor this section we download the CentOS 7 installationb package from the Docker repository directly to get the most recent version.  (Liberated from https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-centos-7)\n\nIf we have not yet updated the yum package database do that now:\n\n```\n$ sudo yum check-update\n```\n\nNow run this command to add the official Docker repository, download the latest version of Docker, and install it:\n\n```\n$ curl -fsSL https://get.docker.com/ | sh\n```\n\nAfter installation has completed, start the Docker daemon:\n\n```\n$ sudo systemctl start docker\n```\n\nVerify that it’s running:\n\n```\n$ sudo systemctl status docker\n```\n\nThe output should be similar to the following, showing that the service is active and running:\n\n```\n$ sudo systemctl status docker\n● docker.service - Docker Application Container Engine\n   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)\n   Active: active (running) since Tue 2019-10-29 15:00:46 PDT; 7s ago\n     Docs: https://docs.docker.com\n Main PID: 29476 (dockerd)\n    Tasks: 8\n   Memory: 42.1M\n   CGroup: /system.slice/docker.service\n           └─29476 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n```\n\nLastly, make sure it starts at every server reboot:\n\n```\n$ sudo systemctl enable docker\n```\n## Using Docker tools to build the SENSE-N-RM\nTo build the SENSE-N-RM java runtime image using Docker tools we can do the following...\n\nFirst we create a maven-repo to reuse during our build phases:\n\n```\n$ docker volume create --name maven-repo\n```\n\nThen we build the SENSE-N-RM jar file:\n\n```\n$ docker run -it --rm --name sense-rm -v \"$(pwd)\":/usr/src/mymaven -v \"$HOME/.m2\":/root/.m2  -w /usr/src/mymaven maven:3.6.2-jdk-8 mvn clean install\n```\n\nNow collect the components together under `${builddir}/target/dist`:\n\n```\n$ docker run -it --rm --name sense-rm -v \"$(pwd)\":/usr/src/mymaven -v \"$HOME/.m2\":/root/.m2  -w /usr/src/mymaven maven:3.6.2-jdk-8 mvn antrun:run@package-runtime\n```\n\n## Useful debug commands\n\n```\n$ openssl s_client -debug -connect nsi0.snvaca.pacificwave.net:9443 -no_ssl2 -no_ssl3 -no_tls1\n```\n\n```\n$ nohup ./run.sh \u003c/dev/null \u003e/dev/null 2\u003e\u00261 \u0026\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesnet%2Fsense-rm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesnet%2Fsense-rm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesnet%2Fsense-rm/lists"}