Install a Node - Using Docker

Here you will find instructions for the deployment of LACChain nodes using Docker. By following this guide, your will deploy a writer node in your local machine. During the process of node deploying, you will be asked about the network in which you would like to deploy your nodes. At this moment the only network available is the Open ProTestnet and Legacy Protestnet . For deploying nodes in the Mainnet we recommend you to install using Ansible or using Kubernetes.

In order for your node to get permissioned, you need to complete the permissioning process first. In order to understand better what are the types of networks available and the permissioning processes for each network, please read permissioning process.

Minimum System Requirements

Recommended hardware features for Besu node:

Recommended HardwareOn Open ProTestnetOn Legacy ProTestnet (DEPRECATED)
CPU4 vCPUs compute optimized2 vCPUs
RAM Memory16 GB8 GB
Hard Disk375 GB SSD250 GB SSD
IOPs70,000 IOPS READ 50,000 IOPS WRITE15,000 IOPS READ 5,000 IOPS WRITE

Docker Host:

It is necessary to enable the following network ports in the machine in which we are going to deploy the node:

Besu Node:

  • Port 60606: TCP/UDP – To establish communication p2p between nodes.
  • Port 4545: TCP – To establish RPC communication. (this port is used for applications that communicate with LACChain and may be leaked to the Internet).

Nginx:

  • Port 80: TCP – To establish RPC communication to Gas Model.

Pre-requisites

Install Docker and docker-compose

For this installation we will use docker-compose. It is necessary to install docker and docker-compose on a machine that will perform the installation of the node. Follow the instructions to install docker  and  install docker  compose  in your  machine.

 

Clone Repository

To configure and install Besu and Tessera, you must clone this git repository in your machine.

				
					$ git clone https://github.com/LACNetNetworks/besu-networks
$ cd besu-networks/docker/compose
				
			

Node Installation

Preparing installation of a new node

There are one type of node (Writer) that can be created in the LACChain networks orchestrated by LACNet but at this moment you can only deploy writer nodes using docker-compose. For boot and validators nodes you need to deploy using Ansible.

Environment variable

BESU_LOGGING:LOGGING – Level logging Besu (INFO, DEBUG, TRACE) – default INFO.

BESU_P2P_HOST: Public IP.

BESU_P2P_PORT: P2P PORT – Default (60606).

PUBLIC_IP: Public IP.

NODE_NAME: Name you want for your node in the network monitoring tool.

NODE_EMAIL: email address you want to register for your node in the network monitoring tool. It’s a good idea to provide the e-mail of the technical contact identified or to be identified in the registration form as part of the on-boarding process.

Note: set Environment variable on docker-compose-writer.yml

Deploying the new node

Depending on the network you want to deploy the node, you need to move into the following folder structure:

So, if you want to deploy a writer node on Open Protestnet cd to open-protest

 
				
					$ cd besu-networks/docker/compose/open-protest
				
			

Docker compose creates a volume, in the following path /writer1/data, for which we will create that folder and give permissions, run:

 
				
					$ mkdir writer1
$ cd writer1 
$ mkdir data
$ sudo chmod -R 667 data


				
			

To deploy a writer node, run:

				
					$ docker-compose -f docker-compose-writer.yml up -d
				
			

At the end of the installation, if everything worked a BESU service will be created managed by docker with Up status. Do not forget to write down your node’s “enode” :

				
					  $ curl -X POST --data '{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}' http://localhost:4545

				
			

Result:

				
					"result" : "enode://d837cb6dd3880dec8360edfecf49ea7008e50cf3d889d4f75c0eb7d1033ae1b2fb783ad2021458a369db5d68cf8f25f3fb0080e11db238f4964e273bbc77d1ee@104.197.188.33:60606"

				
			

Don’t forget to write down your node’s “enode”. Remember that you need to provide the enode to be permissioned as indicated in the permissioning processAlso as part of the permissioning process, we need you to provide us your node address. Please get it by executing the following:

				
					$ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53}' http://127.0.0.1:4545

				
			

Result:

				
					{
  "jsonrpc" : "2.0",
  "id" : 53,
  "result" : "0xa08d3d8f68ba47deb401769e5ed39ff283e60a80"
}
				
			

Node Configuration

Configuring the Besu node file

				
					docker
  ├──compose  
    ├── legacy-protest
    └── open-protest

				
			

The default configuration should work for everyone. However, depending on your needs and technical knowledge you can modify your node’s settings in config-writer.toml, for RPC access or authentication. Please refer to the reference documentation.

Checking your connection

Once you have been permissioned, you can check if your node is connected to the network properly. Check that the node has stablished the connections with the peers:

 
				
					
$ curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://localhost:4545
				
			

You should get a result like this:

Now you can check if the node is syncing blocks by getting the log:

				
					$ docker logs <container name> -f 
$ docker logs writer-besu-protest  -f
				
			

You should get something like this:

If any of these two checks does not work, try to restart the besu service: e.g. Node Writer

				
					$ docker-compose -f docker-compose-writer.yml down
$ docker-compose -f docker-compose-writer.yml up -d
				
			

Contact

If you find any issue, you can open an issue on Github and contact us at [email protected]. If you already have a membership, you can also open a ticket.

Next Steps

Now that you have installed your writer node, you can follow our guides to deploy smart contracts, deploy private channels (using Ansibleusing Dockers, or using Kubernetes), deploy an IPFS node (using Ansible, using Dockers, or using Kubernetes), and deploy the Hyperledger Firefly stack.

Copyright 2022 © All rights Reserved. Designed by LACNet