How to Run a Polygon Node (Step-by-Step Guide)
Polygon was created to offer a faster solution to Ethereum's scaling problems. It is a layer 2 scaling solution for Ethereum. It processes transactions faster and at a lower cost while relying on Ethereum's security. Running your own node gives you direct access to the network without relying on third-party RPC providers, improving reliability and giving you full control over your data.
This guide walks you through setting up a Polygon full node using binaries. You will install and configure both Heimdall and Bor, download snapshots to speed up syncing, and end up with a fully operational node connected to the Amoy testnet. The guide also includes the equivalent mainnet commands wherever the steps differ.
Set up your Polygon server in minutes
Run high-performance Polygon workloads on customizable bare metal with 24/7 support and crypto payments.
#Prerequisites
To run a Polygon node, ensure your system meets at least the minimum requirements.
Mainnet minimum system requirements:
-
RAM: 32 GB
-
CPU: 8-core
-
Storage: 4 TB SSD
-
Bandwidth: 1 Gbit/s
Mainnet recommended system requirements:
-
RAM: 64 GB
-
CPU: 16-core
-
Storage: 6 TB SSD
-
Bandwidth: 1 Gbit/s
Amoy testnet minimum system requirements:
-
RAM: 8 GB
-
CPU: 8-core
-
Storage: 1 TB SSD
-
Bandwidth: 1 Gbit/s
Amoy testnet recommended system requirements:
-
RAM: 16 GB
-
CPU: 16-core
-
Storage: 2 TB SSD
-
Bandwidth: 1 Gbit/s
This demonstration uses a dedicated server provided by Cherry Servers.
Set up your Web3 server in minutes
Optimize cost and performance with custom or pre-built dedicated bare metal servers for blockchain workloads. High uptime, instant 24/7 support, pay in crypto.
#Understanding Polygon Nodes
Before moving to the setup process, it's important to understand what Polygon nodes are and their role in the network. This section provides an overview of the different types of nodes in the Polygon architecture, their functions, and how they contribute to the network's overall security and performance.
#What is a Polygon Node
A Polygon node is a computer that participates in the Polygon network. It processes transactions, validates blocks, and helps maintain the network's security.
The Polygon network is divided into three layers:
-
The Ethereum layer: This consists of a set of smart contracts deployed on the Ethereum mainnet.
-
The Heimdall layer: This is a proof-of-stake (PoS) layer made up of Heimdall nodes that run in parallel with Ethereum.
-
The Bor layer: Bor is responsible for block production.
#Types of Polygon Nodes
There are two main types of Polygon nodes:
-
Full nodes: These store a copy of the blockchain and help validate transactions. They can be pruned (storing only recent data) or archived (storing all historical data).
Criteria for selecting a full node:
-
Goals: If your goal is to support the network by validating transactions without participating in block production.
-
Resources: Pruned nodes are more suited for those with limited storage, while archive nodes are best if you need the complete blockchain history and can handle more storage demands.
-
Risk/Rewards: Full nodes do not directly earn rewards like validator nodes. The risk is minimal as they do not engage in consensus, but still play a critical role in network security.
-
-
Validator nodes: These participate in consensus by proposing, validating, and producing new blocks. Running a validator node requires staking MATIC tokens and meeting specific requirements.
Criteria for selecting a validator node:
-
Goals: Choose this if your goal is to actively participate in securing the network and earn rewards for your contribution.
-
Resources: Validator nodes require higher computational power, reliable uptime, and a financial stake (MATIC tokens). This option is best suited for those who can meet the technical and staking requirements.
-
Risks/Rewards: Validator nodes can earn staking rewards, but they come with more responsibility. Downtime or failure to meet requirements could result in penalties, making it a higher-risk, higher-reward option.
-
#How to Run a Polygon Node
This section outlines the steps for setting up a Polygon node. It covers a testnet (Amoy) demonstration and provides instructions and commands for running a node on the mainnet. There are various ways to run a Polygon node, including Docker, binaries, Ansible, GCP, and packages. However, this guide will focus on using binaries.
#Step 1: Connect to the server
Start by accessing the server where your Polygon node will run.
ssh user@server_ipaddress
Replace user with your actual server username and server_ipaddress with the IP address of your server.
#Step 2: Update system software and install build-essentials
Before setting up the node, ensure your server is up to date and has the necessary tools for building software.
Update the system’s package list and upgrade all existing software:
sudo apt-get update && sudo apt-get upgrade -y
OutputGet:1 http://repo.cherryservers.com/ubuntu noble InRelease [8,121 B]
Get:2 http://repo.cherryservers.com/ubuntu noble-updates InRelease [8,145 B]
...
Fetched 44.4 MB in 2s (20.3 MB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
grub-pc-bin
Use 'sudo apt autoremove' to remove it.
The following packages have been kept back:
linux-generic linux-headers-generic linux-image-generic
The following packages will be upgraded:
base-files bsdextrautils bsdutils cloud-init curl eject fdisk fwupd ...
... [85 more packages] ...
uuid-runtime vim vim-common vim-runtime vim-tiny wireless-regdb wpasupplicant xxd
95 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 635 MB of archives.
After this operation, 22.8 MB of additional disk space will be used.
Get:1 http://se.archive.ubuntu.com/ubuntu noble-updates/main ...
...
Install essential tools needed for compiling software:
sudo apt-get install build-essential -y
OutputReading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
grub-pc-bin
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu bzip2 cpp cpp-13 ...
... [35+ more dependencies] ...
libstdc++-13-dev libtsan2 libubsan1 lto-disabled-list make
Suggested packages:
binutils-doc gprofng-gui bzip2-doc cpp-doc gcc-13-locales ...
The following NEW packages will be installed:
binutils binutils-common ... build-essential ... gcc g++ ... make
0 upgraded, 47 newly installed, 0 to remove and 3 not upgraded.
Need to get 66.9 MB of archives.
After this operation, 228 MB of additional disk space will be used.
Get:1 http://se.archive.ubuntu.com/ubuntu noble-updates/main ...
...
#Step 3: Open the required ports and enable the firewall
To allow your Polygon node to communicate with the network, open the following ports:
sudo ufw allow 26656
sudo ufw allow 30303
sudo ufw allow 22/tcp
-
Port
26656is used by Heimdall for peer-to-peer communication. -
Port
30303is used by Bor for peer-to-peer communication. -
Port
22/tcpis for SSH access to your server.
Then enable the firewall:
sudo ufw enable
When prompted, type y and press Enter. You should see output similar to this:
OutputFirewall is active and enabled on system startup
#Step 4: Install Heimdall
Now install Heimdall using the following command:
sudo curl -L https://raw.githubusercontent.com/0xPolygon/install/heimdall-v2/heimdall-v2.sh | bash -s -- <heimdall_version> <network_type> <node_type>
Replace <heimdall_version>, <network_type>, and <node_type> with the appropriate values for your setup:
-
<heimdall_version>: Specify the version of Heimdall you wish to install. -
<network_type>:mainnetoramoy. -
<node_type>:sentry
This command will have heimdalld binary installed.
OutputDownloading Heimdall v0.6.0 packages...
Downloading binary package...
100% (46.0 MB)
Downloading profile package...
100% (11.8 KB)
Installing Heimdall...
Unpacking heimdall (0.6.0) ...
Setting up heimdall (0.6.0) ...
Unpacking heimdall-profile (0.6.0) ...
Setting up heimdall-profile (0.6.0) ...
Checking heimdalld version ...
0.6.0
heimdall has been installed successfully!
Confirm the installation:
heimdalld version --long
Outputname: heimdall
server_name: heimdalld
client_name: heimdalld
version: 0.6.0
commit: 093f740d657ca191cd30605b236a38131f6d6029
go: go version go1.25.6 linux/amd64
#Step 5: Configure Heimdall
Next, download the genesis.json file and place it in /var/lib/heimdall/config/. Run the following commands based on your target network.
For Amoy:
cd /var/lib/heimdall/config
sudo curl -fsSL https://storage.googleapis.com/amoy-heimdallv2-genesis/migrated_dump-genesis.json -o genesis.json
For mainnet:
cd /var/lib/heimdall/config
sudo curl -fsSL https://storage.googleapis.com/mainnet-heimdallv2-genesis/migrated_dump-genesis.json -o genesis.json
Then change the ownership of the Heimdall configuration directory to the Heimdall user:
sudo chown heimdall /var/lib/heimdall
This ensures the Heimdall user has the proper permissions to access and modify the configuration files.
Next, for mainnet, configure the seeds and persistent peers in /var/lib/heimdall/config/config.toml:
sudo sed -i 's|^seeds =.*|seeds = "a0ef6f328949adc077c59ab1f6b03711ae8d32d2@34.185.209.56:26656,f1e632758dfaf616a833900c0b8845bb2547b7c2@34.185.162.14:26656,e49bb5d9cb22943fb2b9f49a4c5d0f773917efaf@34.179.171.228:26656,babb8151d6fae45fcbb9229bd9faba173f3feaf3@35.246.166.189:26656,9c92984a5aad02c43955da94bb0a979a8dadbcfe@34.142.28.190:26656,3643aeae6a5965053709303e97257f62012fdd9c@34.39.56.114:26656,830d44b0d11ab25c9a03135859049d55daf73a03@34.147.169.102:26656,b0e795afc432ea3557b377d7763f6fb6dd102e60@34.105.180.11:26656"|g' /var/lib/heimdall/config/config.toml
sudo sed -i 's|^persistent_peers =.*|persistent_peers = "a0ef6f328949adc077c59ab1f6b03711ae8d32d2@34.185.209.56:26656,f1e632758dfaf616a833900c0b8845bb2547b7c2@34.185.162.14:26656,e49bb5d9cb22943fb2b9f49a4c5d0f773917efaf@34.179.171.228:26656,babb8151d6fae45fcbb9229bd9faba173f3feaf3@35.246.166.189:26656,9c92984a5aad02c43955da94bb0a979a8dadbcfe@34.142.28.190:26656,3643aeae6a5965053709303e97257f62012fdd9c@34.39.56.114:26656,830d44b0d11ab25c9a03135859049d55daf73a03@34.147.169.102:26656,b0e795afc432ea3557b377d7763f6fb6dd102e60@34.105.180.11:26656"|g' /var/lib/heimdall/config/config.toml
For Amoy, the genesis file already includes the seed configuration. Run the following commands only if you have trouble connecting to peers:
sudo sed -i 's|^seeds =.*|seeds = "be818a0ebc61a8ffefdfaf4d3fcfed72ca2d7188@34.89.255.109:26656,81a5aa40d8bf6782e6f3fb0498406ebe707e576c@34.185.137.160:26656,42b0aa4c784a93c4797ff965d75793e099dc0b11@34.89.119.250:26656,5d532264fe8592bf8c1dc8abfa11ff52b381eb2c@34.89.40.235:26656"|g' /var/lib/heimdall/config/config.toml
sudo sed -i 's|^persistent_peers =.*|persistent_peers = "be818a0ebc61a8ffefdfaf4d3fcfed72ca2d7188@34.89.255.109:26656,81a5aa40d8bf6782e6f3fb0498406ebe707e576c@34.185.137.160:26656,42b0aa4c784a93c4797ff965d75793e099dc0b11@34.89.119.250:26656,5d532264fe8592bf8c1dc8abfa11ff52b381eb2c@34.89.40.235:26656"|g' /var/lib/heimdall/config/config.toml
#Step 6: Install Bor
With Heimdall installed, you can proceed to install Bor using the following command:
sudo curl -L https://raw.githubusercontent.com/0xPolygon/install/main/bor.sh | bash -s -- <bor_version> <network_type> <node_type>
-
<bor_version>: Specify the version of Bor you want to install. -
<network_type>:mainnetoramoy. -
<node_type>:sentry
OutputDownloading bor v2.6.5...
Fetched 62.2 MB in 3s (20.4 MB/s)
Downloading bor profile package...
Fetched 3.1 KB
Uninstalling any existing old binary...
Installing bor...
Unpacking bor (2.6.5) ...
Setting up bor (2.6.5) ...
Installing bor profile...
Unpacking bor-profile (2.6.5) ...
Setting up bor-profile (2.6.5) ...
Directory /var/lib/bor exists.
Checking bor version ...
Version: 2.6.5
GitCommit: ce028df2188926d9ad8ed03a45634132985f96a7
bor has been installed successfully!
You can confirm Bor installation using:
bor version
OutputVersion: 2.6.5
GitCommit: ce028df2188926d9ad8ed03a45634132985f96a7
#Step 7: Configure Bor
For mainnet, set the bootnodes in /var/lib/bor/config.toml:
sudo sed -i 's|.bootnodes =.| bootnodes = ["enode://48e6326841ce106f6b4e229a1be7e98a1d12be57e328b08cb461f6744ae4e78f5ec2340996ce9b40928a1a90137aadea13e25ca34774b52a3600d13a52c5c7bb@34.185.209.56:30303","enode://8ab6905fe76aa9001adb77135250e918db888cac216870c0e95cf26650d83d31d8c2c93d54c3333e0a2196517c41651d174b743ec3e11f44e595f62b77fec7ba@34.185.162.14:30303","enode://02e0b33cf60fb1f88f853c7c04830156151f4acd1c36173cd3fe1f375801fb4f5be5b3a89c98527915d37ed217752933c3faf4c820df740c9dd681294caebcf6@34.179.171.228:30303","enode://079c387b65b09674825462ea63c528ca996af7b03d19b1b2ab6557347434838067db6dd7ae5e0c2e08d5ba164117f3d7faffbf3e890cb91cffbdf45a433ddfce@35.246.166.189:30303","enode://191d06720948ae0119343e5798098f5b1f95a308174c4119d226da91833bc0176009bcc8bf5012e490500562d4d5b5427c307b01f3485b2e8351ac5afd946864@34.142.28.190:30303","enode://30a4651b245e9a0cec674b9ecb5a06ca01553aa727e14a77d0f1ccdb9e48a975f3be631505f417aae438be545ac3b290cd3ed00bef96efd7fb0fb7f916397b3f@34.39.56.114:30303","enode://b950b98b92e118551d79c7280b97ddfcdf3dacb620367ebd45e8382f8e69390df192055386221025ffd3c03912da2aadf668ae6ea7b35f391d82ef87452b3f02@34.147.169.102:30303","enode://92ef18168f6c281a313d0ca76d6122b913a101352b5069af9cea6c8dd0f8b51d669601d59fdf250e972cf9a547d8a10f21ecf5b99ce8511605f328e5f66e845f@34.105.180.11:30303"]|g' /var/lib/bor/config.toml
For Amoy, the genesis file already includes the bootnode configuration. Run the following command only if you have trouble connecting to peers:
sudo sed -i 's|.bootnodes =.| bootnodes = ["enode://d40ab6b340be9f78179bd1ec7aa4df346d43dc1462d85fb44c5d43f595991d2ec215d7c778a7588906cb4edf175b3df231cecce090986a739678cd3c620bf580@34.89.255.109:30303","enode://13abba15caa024325f2209d3566fa77cd864281dda4f73bca4296277bfd919ac68cef4dbb508028e0310a24f6f9e23c761fa41ac735cdc87efdee76d5ff985a7@34.185.137.160:30303","enode://fc5bd3856a4ce6389eef1d6bc637ce7617e6ba8013f7d722d9878cf13f1c5a5a95a9e26ccb0b38bcc330343941ce117ab50db9f61e72ba450dd528a1184d8e6a@34.89.119.250:30303","enode://945e11d11bdeed301fb23a5c05aae77bfdde39a8f70308131682a5d2fc1f080531314554afc78718a72ae25cc09be7833f760bf8681516b4315ed36217fa8dab@34.89.40.235:30303"]|g' /var/lib/bor/config.toml
Then change the ownership of the configuration directory to the Bor user:
sudo chown bor /var/lib/bor
#Step 8: Update the services’ permission
To ensure that the services have the necessary permissions to run smoothly, update the user permissions for both Heimdall and Bor services by modifying their systemd service files. Use the following commands:
sudo sed -i 's/User=heimdall/User=root/g' /lib/systemd/system/heimdalld.service
sudo sed -i 's/User=bor/User=root/g' /lib/systemd/system/bor.service
#Step 9: Start Heimdall service
Start the Heimdall service using the following command:
sudo service heimdalld start
You can check the logs to ensure that the node is running:
sudo journalctl -u heimdalld.service -f
OutputMar 25 15:29:01 demo heimdalld[18947]: 2026-03-25T15:29:01Z INF finalized block block_app_hash=A558C22F94DB8D3C09EDF4B83AFA7C2FA0D762FE8BF856EAA22A7AC82F177BBF height=8788569 module=state num_txs_res=1 num_val_updates=0
Mar 25 15:29:01 demo heimdalld[18947]: 2026-03-25T15:29:01Z INF executed block app_hash=A558C22F94DB8D3C09EDF4B83AFA7C2FA0D762FE8BF856EAA22A7AC82F177BBF height=8788569 module=state
Mar 25 15:29:01 demo heimdalld[18947]: 2026-03-25T15:29:01Z INF committed state block_app_hash=628101C92DD1EA15D8D03A2D0FFAFFA53776575AD5E4004E0D496A89BE2CF921 height=8788569 module=state
Mar 25 15:29:01 demo heimdalld[18947]: 2026-03-25T15:29:01Z INF indexed block events height=8788569 module=txindex
To check if the Heimdall node is synced, run the following command:
curl localhost:26657/status
Output{"jsonrpc":"2.0","id":-1,"result":{"node_info":{"protocol_version":{"p2p":"8","block":"11","app":"0"},"id":"a9b90cc7b44fca96bf419b5a72b9dd626b52f547","listen_addr":"54.171.220.164:26656","network":"heimdallv2-80002","version":"0.38.19","channels":"40202122233038606100","moniker":"ip-10-8-2-38","other":{"tx_index":"on","rpc_address":"tcp://127.0.0.1:26657"}},"sync_info":{"latest_block_hash":"F625EFD862E24A3FC9DAAABE3B49B1FE7EAC5BAD163D3BE67BA19E432DCC4125","latest_app_hash":"E024C03EBB2E75D9B14F6F8B93E81C4227327C78B035345D067F5EFCB5CE2D10","latest_block_height":"8792427","latest_block_time":"2025-06-25T10:12:12.454809572Z","earliest_block_hash":"8ABA33E139078ED7BC10084B9BAA1751E992FB618CDE03FCE9B3209CF75CC155","earliest_app_hash":"E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855","earliest_block_height":"8788501","earliest_block_time":"2025-06-24T20:00:00Z","catching_up":true},"validator_info":{"address":"54960ED9047E3ACAE1BE2A92383CA84BB5280F61","pub_key":{"type":"cometbft/PubKeySecp256k1eth","value":"BEJlcgab5okQLejBvCWMBZ//Qjc5dF1bokWIZb/0L64qRISPOc030LlSDrvWGX0+itjcLUIQRutTU8DlH6ydpUc="},"voting_power":"0"}}}
Check the catching_up value in the output. If it is true, the node is still syncing. Once it becomes false, Heimdall is fully synced.
Syncing from scratch takes several days. To speed up the process, you can use a snapshot instead.
Before downloading the snapshot, stop the Heimdall service:
sudo service heimdalld stop
If you have an existing Heimdall data directory, back up your priv_validator_state.json before proceeding:
sudo cp /var/lib/heimdall/data/priv_validator_state.json $HOME/priv_validator_state.json
For this guide, the snapshot will be downloaded from Stakecraft, but you can also use platforms like PublicNode, Stakepool, Vaultstaking, or Gimaar Nodes.
To start, install rclone and pv:
sudo apt install pv
sudo -v ; curl https://rclone.org/install.sh | sudo bash
OutputReading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
pv
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 73.9 kB of archives.
After this operation, 188 kB of additional disk space will be used.
Fetched 73.9 kB in 6s (11.9 kB/s)
Unpacking pv (1.8.5-2build1) ...
Setting up pv (1.8.5-2build1) ...
OutputArchive: rclone-current-linux-amd64.zip
creating: rclone-v1.73.3-linux-amd64/
inflating: rclone-v1.73.3-linux-amd64/rclone.1
inflating: rclone-v1.73.3-linux-amd64/README.html
inflating: rclone-v1.73.3-linux-amd64/rclone
inflating: rclone-v1.73.3-linux-amd64/git-log.txt
inflating: rclone-v1.73.3-linux-amd64/README.txt
Processing manual pages under /usr/share/man...
...
Processing manual pages under /usr/local/man...
Updating index cache for path `/usr/local/man/man1'. Wait...done.
rclone v1.73.3 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.
Next, configure the S3 bucket access. The credentials below are provided by Stakecraft and are subject to change. Verify the latest credentials on the Stakecraft snapshot page before running this command:
mkdir -p ~/.config/rclone/
cat <<EOF > ~/.config/rclone/rclone.conf
[r2]
type = s3
provider = Cloudflare
access_key_id = 849df1cd0e8666858df4b1e182a4b2cd
secret_access_key = 568a53f5d4ca2b3d38780cd3e7a11ce2d6fe2887fbbe04405a96fc77021e917c
acl = private
region = auto
endpoint = https://dd74dc687a5ce54107082a6849814c19.r2.cloudflarestorage.com
EOF
Delete the existing data directory and set the environment variables. Replace <snapshot_filename> with the latest Heimdall Amoy snapshot filename from the Stakecraft snapshot page:
sudo rm -rf /var/lib/heimdall/data
export RCLONE_REMOTE="r2"
export RCLONE_PATH="sc-snapshots/<snapshot_filename>"
export DEST_DIR="/var/lib/heimdall"
Now download and extract the snapshot:
rclone cat "$RCLONE_REMOTE:$RCLONE_PATH" | pv | sudo tar -zx -C "$DEST_DIR"
After extracting the files, ensure the correct ownership of the data directory:
sudo chown -R heimdall:nogroup /var/lib/heimdall
Restart the Heimdall service and keep checking the node status until the value of "catching_up" becomes false.
sudo systemctl restart heimdalld
sudo journalctl -u heimdalld.service -f
curl localhost:26657/status
Output{"jsonrpc":"2.0","id":-1,"result":{"node_info":{"protocol_version":{"p2p":"8","block":"11","app":"0"},"id":"a9b90cc7b44fca96bf419b5a72b9dd626b52f547","listen_addr":"54.171.220.164:26656","network":"heimdallv2-80002","version":"0.38.19","channels":"40202122233038606100","moniker":"ip-10-8-2-38","other":{"tx_index":"on","rpc_address":"tcp://127.0.0.1:26657"}},"sync_info":{"latest_block_hash":"AE3775586C3275B30AA2892C11E89E66FEA98E5B872244AD5FD8A7ED95DD23AB","latest_app_hash":"4C8F3615C27C23CAAF54F77B529A652E2BACFBE2CE10338AC8D6F96FCC868313","latest_block_height":"30334444","latest_block_time":"2026-03-25T16:40:28.357033933Z","earliest_block_hash":"F43F92F1C5AF581519E7BA9FF97D94A1A973DFC826E5402DC58E35D3920B9611","earliest_app_hash":"CC95F880B9C0C99F83ECF3B03845D39453DA937D14FF553FA7751D18F9FECFA2","earliest_block_height":"27780591","earliest_block_time":"2026-02-24T14:22:22.159843804Z","catching_up":false},"validator_info":{"address":"54960ED9047E3ACAE1BE2A92383CA84BB5280F61","pub_key":{"type":"cometbft/PubKeySecp256k1eth","value":"BEJlcgab5okQLejBvCWMBZ//Qjc5dF1bokWIZb/0L64qRISPOc030LlSDrvWGX0+itjcLUIQRutTU8DlH6ydpUc="},"voting_power":"0"}}}
Once catching_up is false, proceed to start the Bor service.
#Step 10: Start the Bor service
As with the Heimdall service, download a snapshot for the Bor node. If you have an existing chaindata directory, remove it first:
sudo rm -rf /var/lib/bor/data/bor/chaindata
Create the chaindata directory and set the environment variables. Replace <snapshot_filename> with the latest Bor Amoy snapshot filename from the Stakecraft snapshot page:
sudo mkdir -p /var/lib/bor/data/bor/chaindata
export RCLONE_REMOTE="r2"
export RCLONE_PATH="sc-snapshots/<snapshot_filename>"
export DEST_DIR="/var/lib/bor/data/bor/chaindata"
Download and extract the snapshot:
rclone cat "$RCLONE_REMOTE:$RCLONE_PATH" | pv | sudo tar -zx -C "$DEST_DIR"
Change the ownership of the entire Bor data directory to the bor user:
sudo chown -R bor:nogroup /var/lib/bor
Start the Bor service and monitor the logs:
sudo service bor start
sudo journalctl -u bor.service -f
OutputMar 25 17:34:31 demo bor[28210]: INFO [03-25|17:34:31.652] Fetching state updates from Heimdall fromID=4 to=2023-11-20T15:47:39Z
Mar 25 17:34:31 demo bor[28210]: INFO [03-25|17:34:31.652] Fetching state sync events queryParams="from_id=4&to_time=2023-11-20T15:47:39Z&pagination.limit=50"
Mar 25 17:34:31 demo bor[28210]: INFO [03-25|17:34:31.652] Fetching state updates from Heimdall fromID=4 to=2023-11-20T15:47:39Z
Mar 25 17:34:31 demo bor[28210]: INFO [03-25|17:34:31.652] Fetching state sync events queryParams="from_id=4&to_time=2023-11-20T15:47:39Z&pagination.limit=50"
Mar 25 17:34:31 demo bor[28210]: INFO [03-25|17:34:31.653] StateSyncData gas=0 number=46752 lastStateID=3 "total records"=0 "fetch time"=1 "process time"=0
Mar 25 17:34:31 demo bor[28210]: INFO [03-25|17:34:31.653] StateSyncData gas=0 number=46752 lastStateID=3 "total records"=0 "fetch time"=1 "process time"=0
Bor is running and syncing. The early timestamps in the logs are expected. Bor starts from the snapshot's beginning block and works forward to the current network height.
Latency from 30ms to 5ms with Cherry Servers
Read how ELSOUL LABO, leading Solana RPC provider, reduced latency from 30 ms to 5 ms with Cherry Servers' high-performance dedicated bare metal, ensuring optimal performance for their users.
#Conclusion
Your Polygon node is now fully synced and operational. It processes transactions and interacts with the network without relying on third-party RPC providers.
If you want to go further, you can set up your node as a validator. Validator nodes participate in consensus and earn staking rewards, but require staking POL tokens and meeting uptime requirements. The Polygon documentation covers the full validator setup process.
| Read Next |
|---|
| How to run an Solana node |
| How to become a Solana validator |
| How to run an Ethereum node |
| How to run a Bitcoin node |
| what is a blockchains server |
High egress costs and lost transactions?
Switch to blockchain-optimized dedicated bare metal—save up to 60% on your cloud bill and double the performance compared to hyperscale cloud.
We accept Bitcoin and other popular cryptocurrencies.