|
| 1 | + |
| 2 | +This deployment guide walks you through starting and running a full node through various methods. For the system requirements, see the [Minimum Technical Requirements](../validator/validator-node-system-requirements.md) guide. |
| 3 | + |
| 4 | +!!!tip Snapshots |
| 5 | + |
| 6 | + Steps in these guide involve waiting for the Heimdall and Bor services to fully sync. This process takes several days to complete. |
| 7 | + |
| 8 | + Please use snapshots for faster syncing without having to sync over the network. For detailed instructions, see [<ins>Snapshot Instructions for Heimdall and Bor</ins>](../../how-to/snapshots.md). |
| 9 | + |
| 10 | + For snapshot download links, see the [<ins>Polygon Chains Snapshots</ins>](https://snapshots.polygon.technology/) page. |
| 11 | + |
| 12 | + |
| 13 | +## Overview |
| 14 | + |
| 15 | +- Prepare the machine |
| 16 | +- Install Heimdall and Bor binaries on the full node machine |
| 17 | +- Set up Heimdall and Bor services on the full node machine |
| 18 | +- Configure the full node machine |
| 19 | +- Start the full node machine |
| 20 | +- Check node health with the community |
| 21 | + |
| 22 | +!!!note |
| 23 | + |
| 24 | + You have to follow the exact outlined sequence of actions, otherwise you will run into issues. |
| 25 | + |
| 26 | + |
| 27 | +### Install `build-essential` |
| 28 | + |
| 29 | +This is **required** for your full node. In order to install, run the below command: |
| 30 | + |
| 31 | +```bash |
| 32 | +sudo apt-get update |
| 33 | +sudo apt-get install build-essential |
| 34 | +``` |
| 35 | + |
| 36 | +## Install Binaries |
| 37 | + |
| 38 | +Polygon node consists of 2 layers: Heimdall and Bor. Heimdall is a tendermint fork that monitors contracts in parallel with the Ethereum network. Bor is basically a Geth fork that generates blocks shuffled by Heimdall nodes. |
| 39 | + |
| 40 | +Both binaries must be installed and run in the correct order to function properly. |
| 41 | + |
| 42 | +### Heimdall |
| 43 | + |
| 44 | +Install the latest version of Heimdall and related services. Make sure you checkout to the correct [release version](https://github.com/maticnetwork/heimdall/releases). Note that the latest version, [Heimdall v1.0.3](https://github.com/maticnetwork/heimdall/releases/tag/v1.0.3), contains enhancements such as: |
| 45 | +1. Restricting data size in state sync txs to: |
| 46 | + * **30Kb** when represented in **bytes** |
| 47 | + * **60Kb** when represented as **string** |
| 48 | +2. Increasing the **delay time** between the contract events of different validators to ensure that the mempool doesn't get filled very quickly in case of a burst of events which can hamper the progress of the chain. |
| 49 | + |
| 50 | +The following example shows how the data size is restricted: |
| 51 | + |
| 52 | +``` |
| 53 | +Data - "abcd1234" |
| 54 | +Length in string format - 8 |
| 55 | +Hex Byte representation - [171 205 18 52] |
| 56 | +Length in byte format - 4 |
| 57 | +``` |
| 58 | + |
| 59 | +To install **Heimdall**, run the below commands: |
| 60 | + |
| 61 | +```bash |
| 62 | +curl -L https://raw.githubusercontent.com/maticnetwork/install/main/heimdall.sh | bash -s -- <heimdall_version> <network_type> <node_type> |
| 63 | +``` |
| 64 | + |
| 65 | +**heimdall_version**: `valid v1.0+ release tag from https://github.com/maticnetwork/heimdall/releases` |
| 66 | +**network_type**: `mainnet` and `mumbai` |
| 67 | +**node_type**: `sentry` |
| 68 | + |
| 69 | +That will install the `heimdalld` and `heimdallcli` binaries. Verify the installation by checking the Heimdall version on your machine: |
| 70 | + |
| 71 | +```bash |
| 72 | +heimdalld version --long |
| 73 | +``` |
| 74 | + |
| 75 | +### Configure heimdall seeds (Mainnet) |
| 76 | + |
| 77 | +```bash |
| 78 | +sed -i 's|^seeds =.*|seeds = "1500161dd491b67fb1ac81868952be49e2509c9f@52.78.36.216:26656,dd4a3f1750af5765266231b9d8ac764599921736@3.36.224.80:26656,8ea4f592ad6cc38d7532aff418d1fb97052463af@34.240.245.39:26656,e772e1fb8c3492a9570a377a5eafdb1dc53cd778@54.194.245.5:26656,6726b826df45ac8e9afb4bdb2469c7771bd797f1@52.209.21.164:26656"|g' /var/lib/heimdall/config/config.toml |
| 79 | +chown heimdall /var/lib/heimdall |
| 80 | +``` |
| 81 | + |
| 82 | +### Configure heimdall seeds (Mumbai) |
| 83 | + |
| 84 | +```bash |
| 85 | +sed -i 's|^seeds =.*|seeds = "9df7ae4bf9b996c0e3436ed4cd3050dbc5742a28@43.200.206.40:26656,d9275750bc877b0276c374307f0fd7eae1d71e35@54.216.248.9:26656,1a3258eb2b69b235d4749cf9266a94567d6c0199@52.214.83.78:26656"|g' /var/lib/heimdall/config/config.toml |
| 86 | +chown heimdall /var/lib/heimdall |
| 87 | +``` |
| 88 | + |
| 89 | +### Bor install |
| 90 | + |
| 91 | +Install the latest version of Bor, based on valid v1.0+ [released version](https://github.com/maticnetwork/bor/releases). |
| 92 | + |
| 93 | +```bash |
| 94 | +curl -L https://raw.githubusercontent.com/maticnetwork/install/main/bor.sh | bash -s -- <bor_version> <network_type> <node_type> |
| 95 | +``` |
| 96 | + |
| 97 | +**bor_version**: `valid v1.0+ release tag from https://github.com/maticnetwork/bor/releases` |
| 98 | +**network_type**: `mainnet` and `mumbai` |
| 99 | +**node_type**: `sentry` |
| 100 | + |
| 101 | +That will install the `bor` binary. Verify the installation by checking the Bor version on your machine: |
| 102 | + |
| 103 | +```bash |
| 104 | +bor version |
| 105 | +``` |
| 106 | + |
| 107 | +### Configure bor seeds (mainnet) |
| 108 | + |
| 109 | +```bash |
| 110 | +sed -i 's|.*\[p2p.discovery\]| \[p2p.discovery\] |g' /var/lib/bor/config.toml |
| 111 | +sed -i 's|.*bootnodes =.*| bootnodes = ["enode://b8f1cc9c5d4403703fbf377116469667d2b1823c0daf16b7250aa576bacf399e42c3930ccfcb02c5df6879565a2b8931335565f0e8d3f8e72385ecf4a4bf160a@3.36.224.80:30303", "enode://8729e0c825f3d9cad382555f3e46dcff21af323e89025a0e6312df541f4a9e73abfa562d64906f5e59c51fe6f0501b3e61b07979606c56329c020ed739910759@54.194.245.5:30303"]|g' /var/lib/bor/config.toml |
| 112 | +chown bor /var/lib/bor |
| 113 | +``` |
| 114 | + |
| 115 | +### Configure bor seeds (mumbai) |
| 116 | + |
| 117 | +```bash |
| 118 | +sed -i 's|.*\[p2p.discovery\]| \[p2p.discovery\] |g' /var/lib/bor/config.toml |
| 119 | +sed -i 's|.*bootnodes =.*| bootnodes = ["enode://bdcd4786a616a853b8a041f53496d853c68d99d54ff305615cd91c03cd56895e0a7f6e9f35dbf89131044e2114a9a782b792b5661e3aff07faf125a98606a071@43.200.206.40:30303", "enode://209aaf7ed549cf4a5700fd833da25413f80a1248bd3aa7fe2a87203e3f7b236dd729579e5c8df61c97bf508281bae4969d6de76a7393bcbd04a0af70270333b3@54.216.248.9:30303"]|g' /var/lib/bor/config.toml |
| 120 | +chown bor /var/lib/bor |
| 121 | +``` |
| 122 | + |
| 123 | +### Update service config user permission |
| 124 | + |
| 125 | +```bash |
| 126 | +sed -i 's/User=heimdall/User=root/g' /lib/systemd/system/heimdalld.service |
| 127 | +sed -i 's/User=bor/User=root/g' /lib/systemd/system/bor.service |
| 128 | +``` |
| 129 | + |
| 130 | +## Start Services |
| 131 | + |
| 132 | +Run the full Heimdall node with these commands on your Sentry Node: |
| 133 | + |
| 134 | +```bash |
| 135 | +sudo service heimdalld start |
| 136 | +``` |
| 137 | + |
| 138 | +Now, you need to make sure that **Heimdall is synced** completely, and then only start Bor. If you start Bor without Heimdall syncing completely, you will run into issues frequently. |
| 139 | + |
| 140 | +**To check if Heimdall is synced** |
| 141 | + 1. On the remote machine/VM, run `curl localhost:26657/status` |
| 142 | + 2. In the output, `catching_up` value should be `false` |
| 143 | + |
| 144 | +Once Heimdall is synced, run the below command: |
| 145 | + |
| 146 | +```bash |
| 147 | +sudo service bor start |
| 148 | +``` |
| 149 | + |
| 150 | +## Logs |
| 151 | + |
| 152 | +Logs can be managed by the `journalctl` linux tool. Here is a tutorial for advanced usage: [How To Use Journalctl to View and Manipulate Systemd Logs](https://www.digitalocean.com/community/tutorials/how-to-use-journalctl-to-view-and-manipulate-systemd-logs). |
| 153 | + |
| 154 | +**Check Heimdall node logs** |
| 155 | + |
| 156 | +```bash |
| 157 | +journalctl -u heimdalld.service -f |
| 158 | +``` |
| 159 | + |
| 160 | +**Check Heimdall Rest-server logs** |
| 161 | + |
| 162 | +```bash |
| 163 | +journalctl -u heimdalld-rest-server.service -f |
| 164 | +``` |
| 165 | + |
| 166 | +**Check Bor Rest-server logs** |
| 167 | + |
| 168 | +```bash |
| 169 | +journalctl -u bor.service -f |
| 170 | +``` |
| 171 | + |
| 172 | +## Ports and Firewall Setup |
| 173 | + |
| 174 | +Open ports 22, 26656 and 30303 to world (0.0.0.0/0) on sentry node firewall. |
| 175 | + |
| 176 | +You can use VPN to restrict access for port 22 as per your requirement and security guidelines. |
0 commit comments