# Horus 2 node

Server specifications

<table><thead><tr><th width="317">Specification</th><th>Requirement</th></tr></thead><tbody><tr><td>CPU</td><td>2+ VCPU</td></tr><tr><td>RAM</td><td>4+ GB</td></tr><tr><td>Storage</td><td>40+ GB SSD</td></tr><tr><td>UBUNTU</td><td>20</td></tr></tbody></table>

**Installing essentials components**&#x20;

Before diving into the installation of your node, it's essential to update your VPS. To do this, simply run the following command in your VPS terminal :

```
sudo apt-get update && sudo apt-get upgrade -y
```

### Installing Docker

Run the following command in your terminal :

```
sudo apt install docker.io 
```

Check that Docker has been correctly installed :

```
docker --version 
```

### Installing Geth

Geth is a command-line tool for running a node.

```
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.8-b20b4a71.tar.gz
```

Extract the file :

```
tar -xvzf geth-linux-amd64-1.13.8-b20b4a71.tar.gz
```

Enter the Geth folder, and create your EVM wallet:

cd geth-linux-amd64-1.13.8-b20b4a71 ./geth account new --keystore ./keystore

Enter a password and keep it to one side, as you'll need it later. A wallet address will also be generated. Keep it to one side too.

### Installing Nulink

Get the NuLink image docker :

```
cd docker pull nulink/nulink:latest
```

Create a Nulink folder

```
cd /root mkdir nulink
```

Copy your private keys folder into the NuLink folder:

```
cp /root/geth-linux-amd64-1.13.8-b20b4a71/keystore/* /root/nulink
```

Give all permissions to your NuLink folder:

```
chmod -R 777 /root/nulink
```

### Node configuration&#x20;

You'll start by defining a password for your operator.&#x20;

```
export NULINK_KEYSTORE_PASSWORD=<YOUR_PASSWORD>
```

In the next command, enter the password you created in the previous step :

```
export NULINK_OPERATOR_ETH_PASSWORD=<YOUR_PASSWORD>
```

In the next command, enter the EVM wallet you generate in the previous step :

```
export WALLET=<YOUR_WALLET>
```

In the next command, enter the Keystore name you generate in the previous step :

```
export KEYSTORE=<YOUR_KEYSTORE>
```

### Node initialisation

Run the command :

```
docker run -it --rm \
-p 9151:9151 \
-v /root/nulink:/code \
-v /root/nulink:/home/circleci/.local/share/nulink \
-e $NULINK_KEYSTORE_PASSWORD \
nulink/nulink nulink ursula init \
--signer keystore:///code/$KEYSTORE \
--eth-provider https://data-seed-prebsc-2-s2.binance.org:8545 \
--network horus \
--payment-provider https://data-seed-prebsc-2-s2.binance.org:8545 \
--payment-network bsc_testnet \
--operator-address $WALLET \
--max-gas-price 10000000000
```

This will generate a seed phrase. Keep it safe.

### Node laucnh

Run your node with the following command :

```
docker run --restart on-failure -d \
--name ursula \
-p 9151:9151 \
-v /root/nulink:/code \
-v /root/nulink:/home/circleci/.local/share/nulink \
-e $NULINK_KEYSTORE_PASSWORD \
-e $NULINK_OPERATOR_ETH_PASSWORD \
nulink/nulink nulink ursula run --no-block-until-ready
```

### Check the log

```
docker logs -f ursula
```


---

# 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.starlightnode.com/services/testnets/nulink/horus-2-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.
