Wiki

Clone wiki

jormanager / installation

Installation

JorManager is designed to be installed on Linux systems. Most of the commands in this guide will be designed for the Ubuntu distribution, but it should be able to run on others with slight modifications.

Prepare environment

Update any packages on your system and configure some build environment tools.

#!bash

$ sudo apt-get update
...
...

$ sudo apt-get upgrade
...
...
$ sudo apt-get install python3 build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev systemd libsystemd-dev zlib1g-dev make g++ tmux git jq libncursesw5 gnupg aptitude libtool autoconf secure-delete iproute2 bc tcptraceroute dialog libsqlite3-dev

Requirements

Java 14

JorManager requires Java 14 or higher.

#!bash

$ sudo apt-get install openjdk-14-jdk
...
...

$ java -version
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 14.0.2+12-Ubuntu-120.04, mixed mode, sharing)

If your java -version command doesn't show you java 14 as the default, you need run the following command and choose the correct java 14 version.

#!bash

$ sudo update-alternatives --config java
There are 4 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-14-openjdk-amd64/bin/java      1411      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-13-oracle/bin/java             1091      manual mode
  3            /usr/lib/jvm/java-14-openjdk-amd64/bin/java      1411      manual mode
  4            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 

IOG libsodium

In order to do things like calculate leader logs, JorManager needs the version of libsodium from IOG.

#!bash

$ git clone https://github.com/input-output-hk/libsodium
...
...

$ cd libsodium
$ git checkout 66f017f1
HEAD is now at 66f017f1 Fix issue when building VRF tests with g++
$ ./autogen.sh
...
...

$ ./configure
...
...

$ make && make check
...
...

$ sudo make install
...
Libraries have been installed in:
   /usr/local/lib
...

Install cardano-node and cardano-cli locally

In a normal JorManager setup, it's a good practice to have a local passive node on the same machine as JorManager. This node will be used for submitting transactions during the stakepool setup and keeping JorManager in sync with the blockchain. You can choose to have the default node be remote too, but local is the recommended setup for the default node.

You can follow any guide for installing these. I'm linking the one from IOG for reference.

cardano-node installation

Install cardano-node and cardano-cli on remotes

Follow the guide above for installing on any remote server nodes.

Configure remote SSH into the servers using passwordless SSH keys. While it's better security-wise to add a password to your keys, in an automated system like JorManager, this is too much friction to have JorManager prompt you for passwords each and every time it needs to talk to your remote nodes. Make sure you use best practices for securing the JorManager machine itself and any SSH Keys. ed25519 keys are recommended.

https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54

Remote nodes also require a work-around so that we can talk to the cardano-node unix socket over SSH. We need to modify the ssh configuration to add the CARDANO_NODE_SOCKET_PATH as an allowed environment variable.

#!bash
$ sudo nano /etc/ssh/sshd_config

...
# Allow client to pass locale environment variables
AcceptEnv LANG LC_* CARDANO_NODE_SOCKET_PATH
...

$ sudo systemctl restart ssh.service

Install JorManager

Now that we have our local JorManager host system configured and any remote nodes, we can setup JorManager itself.

First, download the latest JorManager jar file from bitbucket and put it into a location you control. I put everything in ~/haskell/jormanager or ~/haskell/jormanager_test if I'm configuring a testnet setup.

JorManager Downloads

#!bash

$ cd ~/haskell/jormanager
$ sha256sum -c jormanager-2.0.0-SNAPSHOT.jar.sha256
jormanager-2.0.0-SNAPSHOT.jar: OK
$ mv jormanager-*.jar jormanager.jar
$ java -jar jormanager.jar install
JorManager Installer

SAVE YOUR SPENDING PASSWORD in a secure location!!! If you lose this password, you lose any secret keys stored in JorManager. You're done, kaput, mount your picture on the stakepool operator wall of shame.

Running

The installer has created several ways for you to run JorManager. If systemd was found on your system, the installer has created systemd scripts for you.

$ sudo systemctl start jm.service
$ sudo systemctl stop jm.service

If you don't have or use systemd, manual startup/shutdown scripts have been created for you.

$ ./startJormanager.sh
$ ./stopJormanager.sh

To access JorManager, open a browser to

http://localhost:<install_port>
JorManager Dashboard

If something gets screwed up, you might be instructed to dig into the database. It can be accessed at

http://localhost:<install_port>/h2-console

Continue on to >> Default Node Setup

Updated