# Requirements

### Understanding pruning

In order to run a full node, different hardware requirements should be met based on the pruning strategy you would like to use.

*Pruning* is the term used to identify the periodic action that can be taken in order to free some disk space on your full node. This is done by removing old blocks data from the disk, freeing up space.

Inside the Realio Network, there are various types of pruning strategies that can be applied. The main ones are:

* `default`: the last 100 states are kept in addition to every 500th state; pruning at 10 block intervals
* `nothing`: all historic states will be saved, nothing will be deleted (i.e. archiving node)
* `everything`: all saved states will be deleted, storing only the current state; pruning at 10 block intervals (At the moment this option is not recommended as it can easily corrupt the database and the node will halt)
* `custom`: allow pruning options to be manually specified through 'pruning-keep-recent', 'pruning-keep-every', and 'pruning-interval'[​](https://docs.realio.network/fullnode/overview#hardware-requirements)

### Hardware requirement

You can easily understand how using a pruning strategy of `nothing` will use more disk space than `everything`. For this reason, there are different disk space that we recommend based on the pruning strategy you choose:

| Pruning strategy | Minimum disk space | Recommended disk space |
| :--------------: | :----------------: | :--------------------: |
|   `everything`   |        20 GB       |          60 GB         |
|     `default`    |        80 GB       |         160 GB         |
|     `nothing`    |       120 GB       |        > 300 GB        |

Apart from disk space, the following requirements should be met:

| Minimum CPU cores | Recommended CPU cores |
| :---------------: | :-------------------: |
|         4         |           8           |

| Minimum RAM | Recommended RAM |
| :---------: | :-------------: |
|     8 GB    |      16 GB      |

### 1. Setup your environment[​](https://docs.realio.network/fullnode/overview#1-setup-your-environment) <a href="#id-1-setup-your-environment" id="id-1-setup-your-environment"></a>

In order to run a full node, you need to build `realio-networkd` which requires `Go`, `git`, `gcc` and `make` installed.

This process depends on your working environment.

**We officially support:**

* darwin/arm64
* darwin/x86\_64
* linux/arm64
* linux/amd64

{% tabs %}
{% tab title="OSX" %}

To install the required build tools, simple [install Xcode from the Mac App Store](https://apps.apple.com/hk/app/xcode/id497799835?l=en\&mt=12).

To install `Go` on **MacOS**, the best option is to install with [**Homebrew**](https://brew.sh/). To do so, open the `Terminal` application and run the following command:

```
# Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

After **Homebrew** is installed, run

```
# Install software using Homebrew
brew install go git curl jq

# Export environment variables
echo 'export GOPATH="$HOME/go"' >> ~/.profile
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile
source ~/.profile
```

{% endtab %}

{% tab title="Linux" %}

The following example is based on **Ubuntu (Debian)** and assumes you are using a terminal environment by default. Please run the equivalent commands if you are running other Linux distributions.

```
# Update the system
sudo apt update
sudo apt upgrade

# Install git, gcc and make
sudo apt install git build-essential ufw curl jq snapd --yes

# Install Go with Snap
sudo snap install go --classic

# Export environment variables
echo 'export GOPATH="$HOME/go"' >> ~/.profile
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile
source ~/.profile
```

{% endtab %}
{% endtabs %}

The following example is based on **Ubuntu (Debian)** and assumes you are using a terminal environment by default. Please run the equivalent commands if you are running other Linux distributions.

```
# Update the system
sudo apt update
sudo apt upgrade

# Install git, gcc and make
sudo apt install git build-essential ufw curl jq snapd --yes

# Install Go with Snap
sudo snap install go --classic

# Export environment variables
echo 'export GOPATH="$HOME/go"' >> ~/.profile
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile
source ~/.profile
```

### 2. Install the software[​](https://docs.realio.network/fullnode/overview#2-install-the-software) <a href="#id-2-install-the-software" id="id-2-install-the-software"></a>

Once you have set up your environment correctly, you are now ready to install the Realio Network software and start your full node.

In order to do so, you can follow our [setup guide](https://docs.realio.network/running-a-full-node/setup).


---

# 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://docs.realio.network/running-a-full-node/requirements.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.
