Written by Marlon

On September 28, 2022

Installing Metal Blockchain node software

In this chapter, you’ll learn how to install the Metal Blockchain node software on your machine, to become an actual node/validator on the network.

First, we’re going to download and run the install script. Enter the command below in your terminal.

wget -nd -m https://raw.githubusercontent.com/MetalBlockchain/metal-docs/master/scripts/metalgo-installer.sh;\
chmod 755 metalgo-installer.sh;\
./metalgo-installer.sh

And we’re off! The output should look something like this:

MetalGo installer
———————
Preparing environment…
Found arm64 architecture…
Looking for the latest arm64 build…
Will attempt to download:
https://github.com/MetalBlockchain/metalgo/releases/download/v1.1.1/metalgo-linux-arm64-v1.1.1.tar.gz
metalgo-linux-arm64-v1.1.1.tar.gz 100%[=========================================================================>] 29.83M 75.8MB/s in 0.4s
2020-12-28 14:57:47 URL:https://github-production-release-asset-2e65be.s3.amazonaws.com/246387644/f4d27b00-4161-11eb-8fb2-156a992fd2c8?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20201228%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201228T145747Z&X-Amz-Expires=300&X-Amz-Signature=ea838877f39ae940a37a076137c4c2689494c7e683cb95a5a4714c062e6ba018&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=246387644&response-content-disposition=attachment%3B%20filename%3Dmetalgo-linux-arm64-v1.1.1.tar.gz&response-content-type=application%2Foctet-stream [31283052/31283052] -> “metalgo-linux-arm64-v1.1.1.tar.gz” [1]
Unpacking node files…
metalgo-v1.1.1/plugins/
metalgo-v1.1.1/plugins/evm
metalgo-v1.1.1/metalgo
Node files unpacked into /home/ubuntu/metal-node

And then the script will prompt you for information about the network environment:

To complete the setup some networking information is needed.
Where is the node installed:
1) residential network (dynamic IP)
2) cloud provider (static IP)
Enter your connection type [1,2]:

Enter  1 if you have dynamic IP, and 2  if you have a static IP. If you are on a static IP, it will try to auto-detect the IP and ask for confirmation.


Detected ‘3.15.152.14’ as your public IP. Is this correct? [y,n]:

Confirm with y (yes), or n (no) if the detected IP is wrong (or empty), and then enter the correct IP at the next prompt.

Next, you have to set up RPC port access for your node. Those are used to query the node for its internal state, send commands to the node, or interact with the platform and its chains (sending transactions, for example). You will be prompted:

Do you want the RPC port to be accessible to any or only local network interface? [any, local]:

If you’re ok with sending RPC requests only from the node machine itself, enter local at the prompt. If you want to be able to send RPC requests to your node from a remote machine, enter any. Please note that if you choose to allow RPC requests on any network interface you will need to set up a firewall to only let through RPC requests from known IP addresses, otherwise your node will be accessible to anyone and might be overwhelmed by RPC calls from malicious actors! If you do not plan to use your node to send RPC calls, enter local for increased node security.

The script will then continue with system service creation and finish with starting the service and output the following:

Created symlink /etc/systemd/system/multi-user.target.wants/metalgo.service → /etc/systemd/system/metalgo.service.

Done!

Your node should now be bootstrapping.
Node configuration file is /home/ubuntu/.metalgo/configs/node.json
C-Chain configuration file is /home/ubuntu/.metalgo/configs/chains/C/config.json

Post Installation

MetalGo should be running in the background as a service. You can check that by entering the command below in your terminal:

sudo systemctl status metalgo

This will print the node’s latest logs, which should look like this:

● metalgo.service – MetalGo systemd service
Loaded: loaded (/etc/systemd/system/metalgo.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-01-05 10:38:21 UTC; 51s ago
Main PID: 2142 (metalgo)
Tasks: 8 (limit: 4495)
Memory: 223.0M
CGroup: /system.slice/metalgo.service
└─2142 /home/ubuntu/metal-node/metalgo –dynamic-public-ip=opendns –http-host=

Jan 05 10:38:45 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:38:45] <P Chain> metalgo/vms/platformvm/vm.go#322: initializing last accepted block as 2FUFPVPxbTpKNn39moGSzsmGroYES4NZRdw3mJgNvMkMiMHJ9e
Jan 05 10:38:45 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:38:45] <P Chain> metalgo/snow/engine/snowman/transitive.go#58: initializing consensus engine
Jan 05 10:38:45 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:38:45] metalgo/api/server.go#143: adding route /ext/bc/11111111111111111111111111111111LpoYY
Jan 05 10:38:45 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:38:45] metalgo/api/server.go#88: HTTP API server listening on “:9650”
Jan 05 10:38:58 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:38:58] <P Chain> metalgo/snow/engine/common/bootstrapper.go#185: Bootstrapping started syncing with 1 vertices in the accepted frontier
Jan 05 10:39:02 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:39:02] <P Chain> metalgo/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 2500 blocks
Jan 05 10:39:04 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:39:04] <P Chain> metalgo/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 5000 blocks
Jan 05 10:39:06 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:39:06] <P Chain> metalgo/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 7500 blocks
Jan 05 10:39:09 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:39:09] <P Chain> metalgo/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 10000 blocks
Jan 05 10:39:11 ip-172-31-30-64 metalgo[2142]: INFO [01-05|10:39:11] <P Chain> metalgo/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 12500 blocks

Note the active (running) which indicates the service is running ok. You may need to press q to return to the command prompt.

Your node should be in the process of bootstrapping now. You can monitor the progress by issuing the following command:

curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"info.isBootstrapped", "params": { "chain":"X" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/info

It will output the following below, if it says true then it means you’re done with bootstrapping. While the chain is young, bootstrapping should be completed in a minute or less.

jsonrpc”:”2.0″,”result”:{“isBootstrapped”:true},”id”:1}

Once the bootstrapping has been completed, you can retrieve your Node ID, this is your node identification string, which you will need to enter in the wallet to become a validator and delegators can stake using your Node ID. Enter the command below in your terminal.

curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"info.getNodeID" }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/info

It will output the following:

jsonrpc”:”2.0″,”result”:{“nodeID”:”NodeID-D7PP4VYXxSE92MFN1eWZNEFqpy6Pgpmud”},”id”:1}

Your NodeID would be this string: NodeID-D7PP4VYXxSE92MFN1eWZNEFqpy6Pgpmud

Now that you installed the Metal Blockchain node software and retrieved your NodeID, you’re ready for the next chapter, Backing up your Metal Blockchain node

You can always join the official Metal Blockchain Validator Telegram chat if you need more help or have more questions.