# Run a Node

Hardware Requirements:[​](https://docs.celestia.org/nodes/bridge-validator-node#hardware-requirements)

The following hardware minimum requirements are recommended for running the node:

* Memory: 64 GB RAM
* CPU: 16-Core
* Disk: 6 TB SDD Storage
* Bandwidth: 1 Gbps for Download/100 Mbps for Upload

#### Setting Up Your Node:[​](https://docs.celestia.org/nodes/bridge-validator-node#setting-up-your-bridge-node) <a href="#setting-up-your-bridge-node" id="setting-up-your-bridge-node"></a>

The following tutorial is done on an Ubuntu Linux 20.04 (LTS) x64 instance machine.

#### Node Installation:

This guide shows how to install and run an Polygon full node.

#### How to install Polygon from source:

* Before you start, you might want to ensure your system is updated. You can also install a utility named `jq` to read and navigate in JSON files and outputs (other utilities could be installed too).

  ```
  sudo apt update && sudo apt upgrade -y && sudo apt install -y build-essential curl wget jq
  ```

To install **Heimdall**, run the below commands:

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

That will install the `heimdalld` and `heimdallcli` binaries. Verify the installation by checking the Heimdall version on your machine:

```
heimdalld version --long
```

#### Configure heimdall seeds (mainnet)[​](https://wiki.polygon.technology/docs/pos/operate/node/full-node-binaries/#configure-bor-seeds-mainnet) <a href="#configure-bor-seeds-mainnet" id="configure-bor-seeds-mainnet"></a>

```
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
chown heimdall /var/lib/heimdall
```

#### Configure heimdall seeds (amoy)[​](https://wiki.polygon.technology/docs/pos/operate/node/full-node-binaries/#configure-bor-seeds-mumbai) <a href="#configure-bor-seeds-mumbai" id="configure-bor-seeds-mumbai"></a>

```
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
chown heimdall /var/lib/heimdall
```

**Open the P2P port (26656 by default)**

```
sudo ufw allow 26656
```

### To install **Bor**, run the below commands:

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

That will install the `bor` binary. Verify the installation by checking the Bor version on your machine:

```
bor version
```

#### Configure bor seeds (mainnet)[​](https://wiki.polygon.technology/docs/pos/operate/node/full-node-binaries/#configure-bor-seeds-mainnet) <a href="#configure-bor-seeds-mainnet" id="configure-bor-seeds-mainnet"></a>

```
sed -i 's|.*\[p2p.discovery\]|  \[p2p.discovery\] |g' /var/lib/bor/config.toml
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
chown bor /var/lib/bor
```

#### Configure bor seeds (amoy)[​](https://wiki.polygon.technology/docs/pos/operate/node/full-node-binaries/#configure-bor-seeds-mumbai) <a href="#configure-bor-seeds-mumbai" id="configure-bor-seeds-mumbai"></a>

```
sed -i 's|.*\[p2p.discovery\]|  \[p2p.discovery\] |g' /var/lib/bor/config.toml
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
chown bor /var/lib/bor
```

**Open the port (30303 by default)**

```
sudo ufw allow 30303
```

### Once the has been configured, we are ready to start the node and sync the data:

**Start Heimdall Service.**

```
sudo service heimdalld start
```

* Check logs in real tim&#x65;**.**

```
journalctl -u heimdalld.service -f
```

* To verify that the heimdall node is synced before proceeding.

```
curl -s localhost:26657/status | jq .result | jq .sync_info
```

Make sure that you have <mark style="color:orange;">`"catching_up": false`</mark>, otherwise leave it running until it is in sync.

Now once Heimdall is synced, run.

#### Start Bor.

```
sudo service bor start
```

* You can check Bor logs here:

```
journalctl -u bor.service -f
```

* To verify that the bor node is synced before proceeding.

```
curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545
```

Make sure that you have <mark style="color:orange;">"catching\_up": false</mark>, otherwise leave it running until it is in sync.
