# Run a Node

#### 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
```

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

```
sudo ufw allow 26656
```

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

```
git clone https://github.com/0xPolygon/erigon.git
cd erigon
git checkout <latest-stable>
make erigon
```

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

```
erigon version
```

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

```
sudo ufw allow 30303
```

### Create a new erigon service file

```
sudo nano /lib/systemd/system/erigon.service
```

```
[Unit]
Description=erigon
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s
#WorkingDirectory=$HOME
ExecStart=/bin/bash /home/node/erigon-start.sh
Type=simple
User=node
KillSignal=SIGINT
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target

```

### The configuration below assumes that you are running it on amoy

```
sudo nano config.yaml
```

```
chain: "amoy"
bor.heimdall: "http://127.0.0.1:1317"
datadir: "/var/lib/erigon/data"
#ethstats: ""
http.api: [ "eth,net,web3,erigon,txpool,bor" ]
http.port: 8545
bodies.cache: 21474836480
db.pagesize: "16kb"
db.size.limit: "32TB"
#mine: true
miner.gaslimit: 30000000
#miner.etherbase: ""
#miner.sigfile: ""
#miner.recommit: "125s"
txpool.accountslots: 16
txpool.globalslots: 32768
txpool.globalqueue: 32768
maxpeers: 50
port: 30303
#bootnodes: [ ""]
#trustedpeers: [ "" ]

```

### Run erigon using configs provided in the config.toml

```
sudo nano erigon-start.sh
```

```
#!/usr/bin/env sh
set -x #echo on
/home/node/erigon/build/bin/erigon --config=/home/node/config.yaml

```

### 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 Erigon.

```
sudo service erigon start
```

* You can check Erigon logs here:

```
journalctl -u erigon.service -f
```
