# Rent a Blobber

The **Rent Blobber Registration** process is used within the Züs ecosystem to register blobber storage providers for **renting purposes**.

Blobbers are an essential component in the decentralized storage architecture of Züs, offering storage services that can be leased by users.&#x20;

By registering a rent blobber, storage providers can **participate in the network**, lease storage space, and manage their instances efficiently.

This guide provides a step-by-step approach for correctly setting up and registering a **rent blobber** via an API request. It includes:

* A detailed explanation of the API request structure.
* The required authentication headers and request body parameters.
* Configuration steps in `0box.yaml` to ensure correct integration.
* An overview of portainer management within the Züs network.

### **Registering a Rent Blobber**

To register a **rent blobber**, execute the following `curl` command:

```bash
curl -X POST \  
              -H "X-CSRF-TOKEN: ${X-CSRF-TOKEN}" \  
              -H "X-App-Client-ID: ${X-App-Client-ID}" \  
              -H "X-App-User-ID: ${X-App-User-ID}" \  
              -H "Content-Type: application/json" \  
              -d "{\"blobber_id\": \"${client_id}\", \"private_key\": \"${private_key}\", \"portainer_id\": \"${portainer_id}\", \"container_id\": \"${container_id}\", \"delegate_wallet\": \"${delegate_wallet}\"}" \  
              https://0box.dev.zus.network/v2/add-rent-blobber
```

### **Parameter Details**

The request requires several **header properties** and **body parameters**:

#### **Headers:**

* **X-CSRF-TOKEN** → The security token for authentication.
* **X-App-Client-ID** → This should match `wallets.team_wallet` in `0box.yaml`.
* **X-App-User-ID** → This should match `rent_blobbers.user_id` in `0box.yaml`.
* **Content-Type** → Must be set to `application/json`.

#### **Body Parameters:**

* **blobber\_id** → The unique identifier of the blobber being registered.
* **private\_key** → The private key associated with the blobber.
* **portainer\_id** → The identifier for the portainer instance. It must match an entry in `0box.yaml` under `portainer.rent_blobbers.hosts`.
* **container\_id** → The **name of the Docker container** within the selected portainer instance.
* **delegate\_wallet** → The delegate wallet of the blobber.

### **Portainer Configuration in 0box.yaml**

In `0box.yaml`, **portainer instances** should be defined as follows:

```bash
portainer:
  rent_blobbers:
    username: "******"
    password: "******"
    hosts: 
      - "dev1.zus.network"
      - "dev2.zus.network"
      - "dev3.zus.network"
```

The **`portainer_id`** used in the request should correspond to the **index of the host** in `portainer.rent_blobbers.hosts`.

For example:

* `portainer_id: 0` → corresponds to `dev1.zus.network`
* `portainer_id: 1` → corresponds to `dev2.zus.network`
* `portainer_id: 2` → corresponds to `dev3.zus.network`

### **Additional Configuration in 0box.yaml**

Ensure that the following properties exist in `0box.yaml` for proper registration:

```bash
kms:
  user_id: *******
  domain: *******

rent_blobbers:
  user_id: *******
```

These properties are necessary to ensure **secure key management** and **correct user identification** during the blobber registration process.
