> For the complete documentation index, see [llms.txt](https://docs.ravenode.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ravenode.xyz/testnet/dusk/installation.md).

# Installation

## **Hardware Specifications**

<table data-full-width="false"><thead><tr><th width="208">CPU</th><th width="109">RAM</th><th width="95">Storage</th><th>Network Connection</th></tr></thead><tbody><tr><td>2 cores; 2 GHz</td><td>4 GB</td><td>50 GB</td><td>10 Mbps</td></tr></tbody></table>

## **Prerequisites**

```
Rust 1.71 nightly or higher
GCC 13 or higher
Clang 16 or higher
```

## Setting up the Environment

Open a terminal and run the following command to check if Rust is available:

```
rustc --version
```

If this returns a command not found error, we’ll need to install and activate Rust. Run the following command to download and install Rust:

{% code title="# Download and Install" %}

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh
```

{% endcode %}

{% code title="# Activate rust" %}

```
source $HOME/.cargo/env
```

{% endcode %}

Install Clang

```
sudo apt-get install clang
```

Install Git

```
sudo apt-get install git
```

We’ve created an easy to use ITN installer. This installer will set up Rusk as a service on your droplet, preconfigure parts of the node, and provide a couple of helper scripts.

Install Rusk by pasting the following command in your droplet terminal:

```
curl --proto '=https' --tlsv1.2 -sSfL https://github.com/dusk-network/itn-installer/releases/download/v0.1.0/itn-installer.sh | sudo sh
```

## Configure Rusk

Once everything has been set up, you will be asked to add your consensus keys. These keys are used to sign and vote for blocks.

If you haven’t made a wallet yet, go to Dusk [Web Wallet](https://wallet.dusk.network/setup/) and create a new wallet. You can request funds from their [faucet here](https://faucet.dusk.network/). The faucet will give you 1100 tDUSK. The minimum to stake is 1000 tDUSK.

Once you have access to a Dusk mnemonic, run the following command:

```
rusk-wallet restore
```

You will be asked to provide your recovery phrase/mnemonic, **in lower caps**, and to enter a password for the wallet.

Once you’ve done so, run the following command to export a consensus key for the given wallet:

```
rusk-wallet export -d /opt/dusk/conf -n consensus.keys
```

You will be asked to set an encryption password for the consensus key. Remember it and run the following script to set it as an environment variable:

```
sh /opt/dusk/bin/setup_consensus_pwd.sh
```

If you’ve configured everything correctly, you can now start rusk:

```
service rusk start
```

Your node will now start syncing. You can check if it indeed is by running:

```
grep "block accepted" /var/log/rusk.log
```

Wait until your node is synced up. You can find the latest block height on [explorer](https://explorer.dusk.network/).

## Stake tDUSK

The final step is to stake. Once you received the faucet, you can stake by running:

```
rusk-wallet stake --amt 1000 # Or however much you want to stake
```

Once the transaction has gone through, you can view your staking information by running:

```
rusk-wallet stake-info
```

To see if your node is participating in consensus and creating blocks:

```
tail -F /var/log/rusk.log
```

Link to official docs: <https://docs.dusk.network/itn/node-running-guide/>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.ravenode.xyz/testnet/dusk/installation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
