# Run a Full Node

## Requirements

### Linux Instance

OS - Ubuntu 22.04 or a higher version

### Specifications

| Specifications | Minimum    | Recommended                                                                                     |
| -------------- | ---------- | ----------------------------------------------------------------------------------------------- |
| CPU            | 4 Core     | 8 Core                                                                                          |
| RAM            | 16 GB      | 32 GB                                                                                           |
| Disk           | SSD 1.5 TB | <ul><li>SSD 1.5 TB 8,000 IOPS</li><li>250 MB/s throughput</li><li>Read latency < 1 ms</li></ul> |
| Network        | > 5 MB/s   | > 10 MB/s                                                                                       |

### Allowed Inbound and Outbound

* Protocol - TCP and UDP
* Port - 30303
* Source IP - 0.0.0.0/0

## Installation

Create a new directory for your validator node

```sh
mkdir -p kub-node && cd kub-node
```

Download the Genesis file and the configuration file using [wget](https://www.gnu.org/software/wget/)

{% tabs %}
{% tab title="KUB Mainnet" %}

<pre class="language-shell"><code class="lang-shell"><strong>wget https://raw.githubusercontent.com/kub-chain/bkc-node/main/mainnet/genesis.json
</strong>wget https://raw.githubusercontent.com/kub-chain/bkc-node/main/mainnet/config.toml
</code></pre>

{% endtab %}

{% tab title="KUB Testnet" %}

```shell
wget https://raw.githubusercontent.com/kub-chain/bkc-node/main/testnet/genesis.json
wget https://raw.githubusercontent.com/kub-chain/bkc-node/main/testnet/config.tom
```

{% endtab %}
{% endtabs %}

Download the [latest release](https://github.com/kub-chain/bkc/releases); the current version is `v2.4.0`

```sh
wget https://github.com/kub-chain/bkc/releases/download/v2.4.0-bkc/geth2.4.0.linux-amd64.tar.gz
```

{% hint style="warning" %}
Verify that the downloaded version is compatible with your device. KUB supports Darwin ARM64, Linux x86-64, and Linux ARM64. Visit the [latest release](https://github.com/kub-chain/bkc/releases) page to view the available versions under the assets section.
{% endhint %}

Extract the downloaded file

```sh
tar -xvf geth2.4.0.linux-amd64.tar.gz
```

Set the password, replace `YourPassword` with your password

```sh
echo "YourPassword" > ./password.sec
```

Create a new validator account

```sh
./geth --datadir ./data account new --password ./password.sec
```

{% hint style="info" %}
Your public address will be generated after creating the account. Please write it down, as you will need it in the later steps.
{% endhint %}

Initialize the Genesis file

```sh
./geth --datadir ./data init ./genesis.json
```

Run `geth` using the following command and replace `0xYourPublicAddress` with your public address retrieved in the earlier steps

```shell
./geth --datadir ./data \
    --config ./config.toml --password ./password.sec \
    --syncmode snap \
    --mine \
    --unlock 0xYourPublicAddress --allow-insecure-unlock 
```

Please allow some time for your system to download and sync the network data.
