How to Deploy a Polygon Node on Linux

How to Deploy a Polygon Node on Linux
How to Deploy a Polygon Node

Deploying a Polygon node on Linux may seem daunting, but fear not. With our step-by-step instructions, you'll gain valuable insights into node requirements and how to set up a node to support the network.

Polygon Node: An Overview

Polygon: A Brief Background

The most effective approach to fostering a dynamic ecosystem is through collaborative efforts. Polygon, formerly recognized as Matic Network, emerged with this principle.

Setting eyes on the overall user experience and dApps' development, the project aims to address the scalability challenges that impede blockchain adoption. Polygon empowers users with faster, cost-effective transactions and heightened scalability. Its position within the cryptocurrency landscape undoubtedly remains rock solid.

What is a Polygon node?

Before learning about Polygon nodes, let's first browse the Polygon's architecture. Polygon has a unique three-layer architecture, with each layer taking a specific responsibility:

  • Ethereum layer: The base layer consists of smart contracts on the Ethereum mainnet. Its purposes are to enable staking and checkpoint storage and support future interoperability.
  • Heimdall layer: The Proof-of-Stake layer runs in parallel with the base layer. Heimdall nodes validate blocks, generate checkpoints with Merkle roots, and publish them to Ethereum, providing finality and proof of burn. Validators act as block producers and commit checkpoints based on their stake ratio.
  • Bor Layer: Lastly, we have the Bor layer. This layer is made up of special nodes called Bor nodes. Bor nodes take all the transactions in the network and put them together into blocks. They work closely with Heimdall nodes to ensure the blocks are valid and secure.

Running a full node on Polygon is commonly known as running both Heimdall and Bor nodes. So what is a full node?

According to Polygon Wiki, 'a full node is a fully synced sentry node running both Heimdall and Bor.' Full nodes are responsible for storing the entire history of the Polygon blockchain. This includes all transactions, blocks, and contract states. Full nodes are used by validators to verify transactions and blocks and by users to access historical data.

There are also sentry nodes. These nodes are a type of full node responsible for downloading data from other nodes on the network and propagating that data to other sentry nodes.

Validator and archive nodes are also part of the Polygon network but are not our focus in this article.

Polygon Full Node Requirements

For both the Sentry node and Validator node in the Polygon network, it is essential to meet the system requirements. Please note that the Sentry node and Validator node should always be run on separate machines.

Minimum Requirements:

  • RAM: 32 GB
  • CPU: 8-core
  • Storage: 2.5 TB SSD

Recommended Requirements:

  • RAM: 64 GB
  • CPU: 16-core
  • Storage: 5 TB SSD
  • Bandwidth: 1 Gbit/s

Please ensure that your setup meets the minimum requirements to run the nodes. However, meeting the recommended requirements ensures future-proofing. There are no upper limits for future-proofing your nodes.

For Amazon Web Services (AWS) users, the equivalent instances are:

Minimum Requirements:

  • Sentry Node: c5.2xlarge
  • Validator Node: c5.4xlarge

Recommended Requirements:

  • Instance: m5d.4xlarge

For OVH users, the equivalent instance for the recommended requirements is infra-3.

Keep in mind that network usage may involve transferring approximately 3-5 TB of data per month.

By meeting these requirements, you can optimize the performance and reliability of your Polygon nodes, enabling seamless participation in the network.

How to Set Up a Polygon Node

Set up Binaries

  • Prepare the machine

Before deploying a Polygon node, it is necessary to ensure the machine is ready for installation. Start by installing the 'build-essential' package required for the full node. Use the following commands to update the system and install the package:

sudo apt-get update

sudo apt-get install build-essential

  • Install Heimdall and Bor binaries

It is crucial to install and run both binaries in the correct order for the node to function properly.

To install Heimdall, run the following command, replacing <heimdall_version>, <network_type>, and <node_type> with the appropriate values:

curl -L https://raw.githubusercontent.com/maticnetwork/install/main/heimdall.sh | bash -s -- <heimdall_version> <network_type> <node_type>

For example, to install Heimdall version 0.3.4 for the mainnet and as a sentry node, use:

curl -L https://raw.githubusercontent.com/maticnetwork/install/main/heimdall.sh | bash -s -- v0.3.4 mainnet sentry

Verify the installation by checking the Heimdall version:

heimdalld version --long

Next, install Bor by running the following command, replacing <bor_version>, <network_type>, and <node_type> with the appropriate values:

curl -L https://raw.githubusercontent.com/maticnetwork/install/main/bor.sh | bash -s -- <bor_version> <network_type> <node_type>

For example, to install Bor version 0.3.0 for the mainnet and as a sentry node, use:

curl -L https://raw.githubusercontent.com/maticnetwork/install/main/bor.sh | bash -s -- v0.3.0 mainnet sentry

Verify the installation by checking the Bor version:

bor version

  • Configure bor seeds (mainnet):

sed -i 's|.*\[p2p.discovery\]|  \[p2p.discovery\] |g' /var/lib/bor/config.toml

sed -i 's|.*bootnodes =.*|    bootnodes = ["enode://0cb82b395094ee4a2915e9714894627de9ed8498fb881cec6db7c65e8b9a5bd7f2f25cc84e71e89d0947e51c76e85d0847de848c7782b13c0255247a6758178c@44.232.55.71:30303","enode://88116f4295f5a31538ae409e4d44ad40d22e44ee9342869e7d68bdec55b0f83c1530355ce8b41fbec0928a7d75a5745d528450d30aec92066ab6ba1ee351d710@159.203.9.164:30303","enode://4be7248c3a12c5f95d4ef5fff37f7c44ad1072fdb59701b2e5987c5f3846ef448ce7eabc941c5575b13db0fb016552c1fa5cca0dda1a8008cf6d63874c0f3eb7@3.93.224.197:30303","enode://32dd20eaf75513cf84ffc9940972ab17a62e88ea753b0780ea5eca9f40f9254064dacb99508337043d944c2a41b561a17deaad45c53ea0be02663e55e6a302b2@3.212.183.151:30303"]|g' /var/lib/bor/config.toml

chown bor /var/lib/bor

Configure bor seeds (mumbai):

sed -i 's|.*\[p2p.discovery\]|  \[p2p.discovery\] |g' /var/lib/bor/config.toml

sed -i 's|.*bootnodes =.*|    bootnodes = ["enode://320553cda00dfc003f499a3ce9598029f364fbb3ed1222fdc20a94d97dcc4d8ba0cd0bfa996579dcc6d17a534741fb0a5da303a90579431259150de66b597251@54.147.31.250:30303","enode://f0f48a8781629f95ff02606081e6e43e4aebd503f3d07fc931fad7dd5ca1ba52bd849a6f6c3be0e375cf13c9ae04d859c4a9ae3546dc8ed4f10aa5dbb47d4998@34.226.134.117:30303"]|g' /var/lib/bor/config.toml

chown bor /var/lib/bor

  • Update service config user permission:

sed -i 's/User=heimdall/User=root/g' /lib/systemd/system/heimdalld.service

sed -i 's/User=bor/User=root/g' /lib/systemd/system/bor.service

2. Start Services

Run the full Heimdall node with the following command on your Sentry Node:

sudo service heimdalld start

To check if Heimdall is synced, run the command:

curl localhost:26657/status

Once Heimdall is synced, run the following command to start Bor:

sudo service bor start

3. Logs

To check Heimdall node logs, use the command:

journalctl -u heimdalld.service -f

To check Heimdall Rest-server logs, use the command:

journalctl -u heimdalld-rest-server.service -f

To check Bor Rest-server logs, use the command:

journalctl -u bor.service -f

4. Ports and Firewall Setup:

  • Open ports 22, 26656, and 30303 to the world (0.0.0.0/0) on your sentry node firewall. You can use a VPN to restrict access to port 22 based on your security guidelines.

That's it! You've successfully deployed a Polygon full node. We encourage you to check Polygon Wiki - Full Node Deployment for up-to-date information.

Looking to maximize your rewards on the Polygon network? Explore the benefits of staking your Polygon with validators and unlock greater earning potential!

Read more