# Prerequisites

### Hardware/OS Requirements

The minimum hardward requirements for running an Initia node:

* CPU: 4 cores
* Memory: 16GB RAM
* Disk: 1 TB SSD Storage
* Bandwidth: 100 Mbps

{% hint style="warning" %}
It is recommended to use Linux OS to run Initia nodes. Running Initia node has not been tested on other OS environments, and same environment settings and running conditions cannot be guaranteed.&#x20;

Node Operators guide is also based on Ubuntu Linux 20.04 LTS or Ubuntu Linux 22.04 LTS.
{% endhint %}

Installing Initia can be done in 2 different ways.&#x20;

1. Downloading the source and directly building Initia. (Go to [#building-initia](#building-initia "mention"))
2. Using prebuilt binaries (Go to [#using-prebuilt-initia](#using-prebuilt-initia "mention"))

### Oracle Requirements

{% hint style="warning" %}
Running an Initia node requires you to run an oracle sidecar as well.
{% endhint %}

You can install the oracle sidecar binary via one of the following:

1. Building from source (Go to [Oracle](/initia/kBNuZF5MglV9d3zOOUeW/node-operators/running-initia-node/oracle.md#building-from-source))
2. Prebuilt binaries (Go to [Oracle](/initia/kBNuZF5MglV9d3zOOUeW/node-operators/running-initia-node/oracle.md#binaries))

For complete information on the oracle, please see [Oracle](/initia/kBNuZF5MglV9d3zOOUeW/node-operators/running-initia-node/oracle.md)

### Building Initia

This section describes how to run Initia by downloading the source and building it.

#### Build-essential package

To build Initia, essential utilities must be installed. These utilities are provided on Linux distribution, and package components for Ubuntu can be found in the below link:

* Ubuntu [focal](https://packages.ubuntu.com/focal/build-essential) / [jammy](https://packages.ubuntu.com/jammy/build-essential)

```bash
sudo apt install -y build-essential
```

#### Golang

#### [golang v1.19 ](https://go.dev/doc/install)or above is required. Refer to the link to find out how to install golang.

The below command should print the current `go version`.

```bash
make --version # 3.8 or later
go version # 1.19 or later
```

#### Initia

Clone and build the [Initia source code repo.](https://github.com/initia-labs/initia)

```bash
# please execute following commands to access private repos
# $ gh auth login
# or
# $ git config --global url."https://x-access-token:{personal-access-token}@github.com/".insteadOf "https://github.com/"
# $ export GOPRIVATE="github.com/initia-labs/initiavm,github.com/initia-labs/OPinit"

git clone git@github.com:initia-labs/initia.git
cd initia
git checkout $TAG # Tag the desired version
make install
```

The below command line can be executed to check if the install has been successful.

If `initiad` is not found, run `go env` and check if $GOBIN or $GOPATH/bin directories are included in $PATH.

```bash
initiad version # Confirm that the correct version is installed
```

### Using prebuilt Initia

You can download pre-built binaries for each of Testnet or Mainnet(TBA) from [the network repository](https://github.com/initia-labs/networks). Download the compression file for your OS.

Below is an example of bash command line.

```bash
wget https://initia.s3.ap-southeast-1.amazonaws.com/${CHAINID}/initia_${VERSION}_${OS}_${ARCH}.tar.gz
tar -xzf ${CHAINID}/initia_${VERSION}_${OS}_${ARCH}.tar.gz && rm ${CHAINID}/initia_${VERSION}_${OS}_${ARCH}.tar.gz
mv initiad /usr/bin
mv libinitia.${ARCH}.so /usr/lib

initiad version # Confirm tha the correct version is installed
ldd `which initiad`  # Confirm that libinitia.x86_64.so is correctly linked
```

### Setup Environment

On Linux, the number of files that can be opened in a single process can be set on configuration. Many Linux distributions limit the number to 1024, which is smaller than the number of files opened by Initia. To use Initia, this configuration has to be modified.&#x20;

The current value can be checked with `ulimit -n` command, and root `/etc/security/limits.conf` file can be modified to change this parameter. By adding the below to `limits.conf` the maximum for all accounts can be increased to 65535. To only modify the number for the account running Initia, enter the account name instead of `*`.&#x20;

{% hint style="info" %}
The modified values are applied after re-logging in to the shell.
{% endhint %}

```
*                soft    nofile          65535
*                hard    nofile          65535
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://initia.gitbook.io/initia/kBNuZF5MglV9d3zOOUeW/node-operators/running-initia-node/prerequisites.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
