# Step-by-Step Instructions to Install   Silo Node Using Docker

***

## **Step 1: Understand Prerequisites**

Before setting up a Silo node, ensure the following:

1. **Hardware Requirements**:
   * Minimum **500 GB of free storage**.
   * Minimum **2 TB of bandwidth per month**.
   * Stable and consistent **internet connection**.
2. **Operating System**:
   * Linux or Windows (Docker support is required).
3. **Docker**:
   * Ensure Docker is installed. Follow the [Docker installation guide](https://docs.docker.com/get-docker/) if needed.
4. **Public IP Address**:
   * A public IP or properly configured Dynamic DNS.
5. **Wallet Address**:
   * A [Larissa Network](https://play.google.com/store/apps/details?id=network.larissa.wallet\&hl=en_IN) wallet address for Silo payouts.

***

## **Step 2: Get an Authorization Token**

1. Open **Silo** registration page on the [Silo website](https://silos3.com/signup/).
2. Enter your email to generate an **authorization token**.
3. Save this token securely, as it will be used to authenticate your node.

***

## **Step 3: Setup Port Forwarding**

1. Access your router’s configuration page:
   * Typically accessed via `http://192.168.1.1` (or your router's IP address).
2. Forward the following ports:
   * **TCP Port 28967**: Default Silo node communication port.
   * **UDP Port 28967** (if QUIC is enabled, see Step 4).
3. Ensure the forwarded ports point to the local IP address of the machine hosting the Silo node.

***

## **Step 4: Configure QUIC**

QUIC improves performance and is recommended for Silo nodes.

1. Forward **UDP Port 28967** (as per Step 3).
2. Confirm with your ISP that **UDP traffic** is not blocked.
3. No additional configuration is required on the node for QUIC if the port is open.

***

## **Step 5: Create an Trustkey**

**Download the Trustkey Tool**:

{% tabs %}
{% tab title="Windows" %}
PowerShell:

```
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; curl https://github.com/silos3/silo-release/releases/download/v1.0.0-P/trustkey_windows_amd64.exe.zip -o trustkey_windows_amd64.exe.zip; Expand-Archive ./trustkey_windows_amd64.exe.zip . -Force; Rename-Item -Path ./trustkey_windows_amd64.exe -NewName trustkey.exe
```

**Generate an Trustkey**:

```bash
./trustkey.exe create silonode
```

**Authorize the Trustkey**:

```bash
./trustkey.exe authorize silonode <email:your-authorization-token>
```

{% endtab %}

{% tab title="Linux" %}

```
curl -L https://github.com/silos3/silo-release/releases/download/v1.0.0-P/trustkey_linux_amd64.zip -o trustkey_linux_amd64.zip
unzip -o trustkey_linux_amd64.zip
chmod +x trustkey_linux_amd64
sudo mv trustkey_linux_amd64 /usr/local/bin/trustkey
```

**Generate an Identity**:

```bash
trustkey create silonode
```

**Authorize the Identity**:

```bash
trustkey authorize silonode <email:your-authorization-token>
```

{% endtab %}
{% endtabs %}

**Store Securely**:

* Ensure the trustkey  files are saved in a secure and accessible location.

***

## **Step 6: Install Silo Node Software - Docker**

**Pull the Silo Docker Image**:

* Use the following command to download the official Silo node Docker image:

  ```bash
  docker pull silos3/silo-node:latest
  ```

{% tabs %}
{% tab title="Windows" %}
Paste the command into a plain text editor, such as Notepad++ (highly recommended), avoiding any word processing software.

```
docker run --rm -e SETUP="true" --mount type=bind,source="<trustkey-dir>",destination=/app/trustkey --mount type=bind,source="<storage-dir>",destination=/app/config --name storagenode silos3/silo-node:latest
```

Substitute `<trustkey-dir>` and `<storage-dir>` with your specific parameters, execute the revised command in a terminal, and confirm that your node is now successfully configured.
{% endtab %}

{% tab title="Linux" %}
Copy the command into a plain text editor like a `nano`:

```
docker run --rm -e SETUP="true" \
    --user $(id -u):$(id -g) \
    --mount type=bind,source="<trustkey-dir>",destination=/app/trustkey \
    --mount type=bind,source="<storage-dir>",destination=/app/config \
    --name storagenode silos3/silo-node:latest
```

Substitute `<trustkey-dir>` and `<storage-dir>` with your specific parameters, execute the revised command in a terminal, and confirm that your node is now successfully configured.
{% endtab %}
{% endtabs %}

**Run the Docker Container**:

{% tabs %}
{% tab title="Windows" %}
Paste the command into a text editor, such as Notepad++ (highly recommended), avoiding the use of any word processing software.

```
docker run -d --restart unless-stopped --stop-timeout 300 -p 28967:28967/tcp -p 28967:28967/udp -p 127.0.0.1:14002:14002 -e WALLET="0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -e EMAIL="username@domain.com" -e ADDRESS="domain.ddns.net:28967" -e STORAGE="2TB" --mount type=bind,source="<trustkey-dir>",destination=/app/trustkey --mount type=bind,source="<storage-dir>",destination=/app/config --name storagenode silos3/silo-node:latest
```

Modify the values for WALLET, EMAIL, ADDRESS, and STORAGE, replacing `<trustkey-dir>` and `<storage-dir>` with your specific parameters.

Execute the updated command in your terminal.

Congratulations, you are now operating as a Storage Node!&#x20;
{% endtab %}

{% tab title="Linux" %}
Copy the command into a plain text editor, like a `nano`:

```
docker run -d --restart unless-stopped --stop-timeout 300 \
  -p 28967:28967/tcp \
  -p 28967:28967/udp \
  -p 127.0.0.1:14002:14002 \
  -e WALLET="0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -e EMAIL="username@domain.com" \
  -e ADDRESS="domain.ddns.net:28967" \
  -e STORAGE="2TB" \
  --user $(id -u):$(id -g) \
  --mount type=bind,source="<trustkey-dir>",destination=/app/trustkey \
  --mount type=bind,source="<storage-dir>",destination=/app/config \
  --name storagenode silos3/silo-node:latest
```

Update the WALLET, EMAIL, ADDRESS, and STORAGE fields with your specific parameters, replacing `<identity-dir>` and `<storage-dir>` accordingly.

After making the necessary changes, copy the revised command and execute it in your terminal.

Congratulations, you are now operating as a Storage Node!
{% endtab %}
{% endtabs %}

**Check Node Status**: Verify the Silo node is running by listing Docker containers:

```bash
docker ps -a
```

**Monitor** : Your node stats

```bash
http://127.0.0.1:14002
```

***


---

# 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.silos3.com/node/overview/step-by-step-instructions-to-install-silo-node-using-docker.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.
