# Setting Up a Validation Node

## Become a Validator

Follow these simple steps to setup a Vola Validator Node:

{% hint style="warning" icon="cloud-question" %}

#### Before You Begin - **Validator Node Staking Requirement**

Running a Validation Node requires a stake of 50,000 $VOLA.

This threshold is intentionally set high to ensure only operators with serious infrastructure commitments secure the chain. The Vola Faucet does not distribute enough test $VOLA to meet this requirement.

If you are interested in running a Validation Node during testnet, please reach out to the Nuvola team directly via [Discord →](https://discord.gg/qnMSwT3Pvx)
{% endhint %}

{% stepper %}
{% step %}

#### **Get $VOLA**

Validator stake cannot be obtained via the Vola Faucet. To receive the necessary allocation for testnet validation, you must contact the Vola team directly via [Discord →](https://discord.gg/TbgCsDrS)
{% endstep %}

{% step %}

#### Install Docker Engine

<details>

<summary>Uninstall old versions</summary>

Before you can install Docker Engine, you need to uninstall any conflicting packages.

Copy-paste the following command to uninstall all conflicting packages:

```
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
```

You may be prompted for a Yes/No answer, press `y` & `enter`.

</details>

<details>

<summary>Install Docker Engine</summary>

Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker `apt` repository. Afterward, you can install and update Docker from the repo.

Copy-paste the following commands to set it up:

```
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
```

Continue to install the latest Docker packages:

```
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

You may be prompted for a Yes/No answer, press `y` & `enter`.

</details>

<details>

<summary>Start Docker &#x26; Verify Installation</summary>

Start the Docker Service:

```
sudo systemctl start docker
```

Verify that Docker is running:

```
sudo systemctl status docker
```

Verify that the installation is successful:

```
docker --version
docker compose version
```

</details>
{% endstep %}

{% step %}

#### Clone the Repository

```
git clone https://github.com/Nuvola-Digital/vola-node-docker
cd vola-node-docker
```

{% endstep %}

{% step %}

#### Configure Environment Variables

Copy the example environment file:

```
cp .env.example .env
```

Open .env in your editor to update the values:

```
nano .env
```

Update it with your values:

```
## Choose your mode as 'validator'
MODE="validator"

## A name for your node (visible on the network)
NODE_NAME="MyVolaValidator"

## Network to join
CHAIN="testnet"

## Ports (defaults are fine for most setups)
PORT=30333
RPC_PORT=9944
PROMETHEUS_PORT=9615

## Your server's public IP, replace <YOUR_IP> with your actual public IP
## Ex: "/ip4/123.45.67.89/tcp/30333"
PUBLIC_ADDR="/ip4/<YOUR_IP>/tcp/30333"

## Optional extra args (defaults are sensible)
EXTRA_ARGS="--no-telemetry --rpc-methods unsafe"
```

Press `ctrl+s` to save and `ctrl+x` to exit.
{% endstep %}

{% step %}

#### Start Your Node

Run the below command to start your node in the background (detached), remove the `-d` from the command to run it in the foreground (not recommended)

```
docker compose up -d
```

Use `docker logs -f <container id>` to check the logs.
{% endstep %}

{% step %}

#### Generate Session Keys

Run this command on the validator:

```
curl -H "Content-Type: application/json" \
     -d '{"id":1,"jsonrpc":"2.0","method":"author_rotateKeys","params":[]}' \
     http://localhost:9944
```

output: `{"jsonrpc":"2.0","result":"0xabcdef1234...","id":1}`

Copy the `result` hex string, you will need it in the next step.

The hex string is the concatenation of your Aura and GRANDPA public keys. The private half never leaves your machine.
{% endstep %}

{% step %}

#### Register Your Node On-chain

1. Open [Vola Nodes Dashboard](https://testnet.vola.network/).
2. Confirm & approve your wallet connection to the dashboard.
3. Go to Nodes → Validator Node.
4. Click on **'Add Validator Node'**
5. A dialog box will appear.

   Enter or paste your Session Key from above and click on **'Register'** button
6. Sign the transaction and wait for it to go to next step.
   {% endstep %}

{% step %}

#### Commit & Validate Your Stake

1. Select **'Stake Amount'** and **'Reward Destination'** *(rewards behavior)* and click on **'Confirm Stake & Activate'**.
2. Sign the staking TX, wait for another TX, sign the TX to validate the stake.

{% hint style="success" icon="cloud-check" %}
**Wait for the next era to start producing blocks.**

Once you declare intent to validate, your node becomes eligible for selection at the next era boundary (currently every ≈ 7 hours).&#x20;
{% endhint %}
{% endstep %}
{% endstepper %}

## Unstaking Your Validator Node

1. Open [Vola Testnet Dashboard](https://testnet.vola.network/).
2. Go to Nodes → Validator Node.
3. Click on Deregiste&#x72;*.*
4. Follow on-screen instructions to deregister the node.
5. After the deregistration, you will see an Unstake button.
6. Once the funds are available to be claimed, click on Claim Unlocked Funds and sign the TX to claim your $VOLA.

{% hint style="success" icon="cloud-check" %}
**Funds are available to be claimed after 7 eras.**

If your $VOLA is not unlocked yet, it will show estimated time remaining for the unlock.
{% endhint %}

## What's Next?

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Node Staking Requirements</strong></td><td><em>Understand the staking formula and how your stake affects your position in the network.</em></td><td><a href="/pages/1Z3WvSS7obhDHKQnv0JD">/pages/1Z3WvSS7obhDHKQnv0JD</a></td></tr><tr><td><strong>Node Rewards</strong></td><td><em>How validator rewards are calculated and when they are distributed.</em></td><td><a href="/pages/3Xr3L81JEkDpfquNCjaW">/pages/3Xr3L81JEkDpfquNCjaW</a></td></tr><tr><td><strong>Vola Smart Nodes (Storage)</strong></td><td><em>Looking to earn storage fees on top of staking rewards? Explore running a Vola Smart Node.</em></td><td><a href="/pages/GsrLAfwWLWaMNhVQ2sph">/pages/GsrLAfwWLWaMNhVQ2sph</a></td></tr></tbody></table>


---

# 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://wp.vola.network/docs/vola-node-economy/vola-nodes-overview/validation-nodes/setting-up-a-validation-node.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.
