Monitoring for Nano Nodes

You’ve followed our guide to set up a Nano node to support the network or one of the other walkthroughs published by the community. That’s great, but now what? To make your representative node have the most benefit possible to other Nano users, you should have a plan to monitor the uptime of your node and whether it is staying in sync with the block lattice.

Two projects known as Nano Node Monitor and Nano Node Ninja can provide a turnkey solution for monitoring the health of your Nano node. The Nano Node Monitor is an agent designed to run on the same instance as your node, and connect to the RPC port to gather data about its block height (sync status), balance, delegators, voting weight and uptime.

The Nano Node Ninja is a web service that allows you to verify ownership of your node by sending a micropayment of NANO to their Brainblocks address, and have it included in their list of representative nodes operated by the community. Nano Node Ninja runs a modified version of the Nano node software published by the core developers, allowing it to poll both representative nodes running the latest (v13) & prior versions (v12.1 and below) of Nano for uptime statistics.

Install Nano Node Monitor

Nano Node Monitor is a PHP application that runs behind a web server such as nginx. You should first have a Nano node running on your machine and listening to RPC requests at 127.0.0.1:7076 (IPv4) or [::1]:7076 (IPv6). If you don’t already have this configured, you should edit the necessary parameters in config.json. This file is located in your RaiBlocks directory, located at ~/RaiBlocks if you are running the official Docker image.

To serve up the front end of the Nano Node Monitor, a web server such as nginx is necessary. This guide assumes you are running Ubuntu.

Install nginx with sudo apt install nginx.

Then, install php and php-curl with sudo apt install php-fpm php-curl.

Edit the following parameters in the default nginx config file located at /etc/nginx/sites-available/default by uncommenting and/or editing these lines using a text editor such as nano (as root).

root /var/www/html;

index index.php index.html index.htm index.nginx-debian.html;

server_name sub.domain.com

location ~ \.php$ {

                include snippets/fastcgi-php.conf;

                fastcgi_pass unix:/run/php/php7.0-fpm.sock;

       }

location ~ /\.ht {

                deny all;

        }

Then, enable nginx to start on boot and start the service.

sudo systemctl enable nginx

sudo service nginx start


Now that the web server is configured, you can pull the files from the Nano Node Monitor repository using git. Check that git is installed by executing the command sudo apt install git. Then, pull the files into your webroot directory /var/www/html.

cd /var/www/html

git clone https://github.com/NanoTools/nanoNodeMonitor .

Next, create a configuration file for Nano Node Monitor by copying the sample file provided in modules folder of the the repository.

cd modules

cp config.sample.php config.php

You will want to pay special attention to edit these attributes of the configuration file, to let Nano Node Monitor the address of your representative node (remove the // to uncomment the line before $nanoNodeAccount), in addition to the RPC endpoint if you are not running it on the default IPv6 address [::1] and port 7076.

// ip address for RPC (default: [::1])
$nanoNodeRPCIP = ‘127.0.0.1’;

// ip address for RPC (default: 7076)
$nanoNodeRPCPort = ‘7076’;

// account of this node
$nanoNodeAccount = ”;

Now visit the public IP address, subdomain, or domain name of your node and you will be able to see a Nano Node Monitor page that looks like this. You can feel free to share this page with anybody who is considering using your node as their Nano address’ representative node.

Nano Node Monitor Screenshot

Verify Your Node on Nano Node Ninja

Now that you have Nano Node Monitor setup, you can verify your node on Nano Node Ninja, a public list of Nano representative nodes that community members have made available for others to use. Naturally, it is in each Nano user’s interest to delegate their voting weight to a representative who has almost perfect uptime to prevent their votes from being “wasted.” Another important consideration of which node one should set as their representative also depends on the reputation of the community member operating the node.

Nano Node Ninja permits node operators to link their social media accounts, such as Google, Twitter, Facebook, Github and Reddit to lend credibility to their nodes by showcasing their participation in the open source community, within their node’s page on Nano Node Ninja.

First create an account at Nano Node Ninja. Then click “Connect” under “Nano Accounts” to begin verifying your node under your account. The system will next ask you to send a micropayment of 0.000001 NANO or 1000000000000000000000000 raw to the Brainblocks address displayed on the screen. Before clicking to display the Brainblocks address, first verify that you have funded your representative node’s wallet since the payment address is only valid for a few minutes.

Note that this payment must be sent directly from the address of the representative node, not any of your other Nano accounts. Therefore you will need to first send a small amount of funds to your Nano representative node’s address, since you would normally not store any NANO there for security reasons.

Send Nano to your Representative Node Address

From another desktop or web wallet, send 0.000001 NANO to your representative node address. Then, you will need to create a “receive” block on the node wallet to receive this payment. SSH into your node and execute the following “receive” RPC command, replacing the keys with the corresponding values.

  • “wallet”: On your NANO node, run ./rai_node --wallet-list (non-Docker node) or docker exec <CONTAINER_ID> --wallet-list (Docker node)
  • “account”: Your NANO representative node address
  • “block”: The block hash of the pending receive transaction. Search for the NANO representative address at Nanode.co

curl -g -d '{
"action": "receive",
"wallet": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F",
"account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000",
"block": "53EAA25CE28FA0E6D55EA9704B32604A736966255948594D55CBB05267CECD48"
}' '[::1]:7076'

Verify with Nano Node Ninja by sending NANO to their Brainblocks Address

Once the required amount of NANO is received at your representative node address, you can initiate the payment to the Brainblocks address specified by Nano Node Ninja using this “send” RPC command.

Connect account to Nano Node Ninja

  • “wallet”: On your NANO node, run ./rai_node --wallet-list (non-Docker node) or docker exec <CONTAINER_ID> --wallet-list (Docker node)
  • “source”: Your NANO representative address
  • “destination”: The Brainblocks address given by Nano Node Ninja
  • “amount”: The amount of NANO, expressed in raw

curl -g -d '{
"action": "send",
"wallet": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F",
"source": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000",
"destination": "xrb_3yia3ikn7yeuxpgxp6bgsgtpgcxdut96fxnke88cmjsxhybfkqon00000000",
"amount": "1000000000000000000000000"
}' '[::1]:7076'

Once the NANO momentarily arrives at the Brainblocks address, Nano Node Ninja will be satisfied that you own the representative node address in question. You can then complete the profile, name your node, write a description, and provide the URL of the Nano Node Monitor address so prospective delegates can view additional details about your node.

Nano Node Ninja Listing