For the complete documentation index, see llms.txt. This page is also available as Markdown.

Install & Run PDP

This guide walks you through setting up a PDP-enabled Filecoin Storage Provider using Lotus, YugabyteDB, and Curio

πŸš€ Prerequisites

Before starting, make sure you have a user with sudo privileges. This section prepares your system for the PDP stack.


βš™οΈ Hardware requirements

  • RAM: 32 GiB+

  • CPU: 8 Core+

  • Storage:

    • 1 TiB Fast storage (NVMe/SSD)

    • 10 TiB Long-term storage (HDD)

  • GPU: Not required

  • Connectivity: Public HTTPS endpoint (domain)


🧰 System Package Installation

sudo apt update && sudo apt upgrade -y && sudo apt install -y \
  mesa-opencl-icd ocl-icd-opencl-dev gcc git jq pkg-config curl clang \
  build-essential hwloc libhwloc-dev libarchive-dev wget ntp python-is-python3 aria2

πŸ”¨ Install Go (v1.24.0)


πŸ”§ Install Rust

When prompted, choose the option 1) Proceed with standard installation (default β€” just press Enter).


⛓️ Installing and Running Lotus

🧠 Lotus is your gateway to the Filecoin network. It syncs the chain, manages wallets, and is required for Curio to interact with your node.

πŸ”§ Build Lotus Daemon

Clone and check out Lotus:

Build and Install for Mainnet

Build and Install for Calibration


πŸ“¦ Import a Snapshot and Start the Daemon

Download the Snapshot

Mainnet:

Calibration:

Import and Start the Daemon

If you encounter errors related to EnableEthRPC or EnableIndexer, run the following command and restart Lotus

Monitor Sync Progress

To monitor continuously:

Monitor Logs


🐘 Running YugabyteDB

🧠 Curio uses YugabyteDB to store metadata about deals, sealing operations, and PDP submissions.

πŸ›  Set ulimit configuration

To do this:

πŸ” Persist new limits across reboots

Add these lines to /etc/security/limits.conf:

This ensures the increased limits are automatically applied to future sessions.

⚑ Apply limit immediately (for current shell only)

Verify:

βš™οΈ Install Yugabyte

πŸš€ Start the DB

You can also check your Yugabyte cluster details directly in the CLI with:


🧱 Installing and Configuring Curio

🧠 Curio is the core PDP client that coordinates sealing, interacts with Lotus and submits PDP proofs.

βš™οΈ System Configuration

Before you proceed with the installation, you should increase the UDP buffer size:

To make this change persistent across reboots:

πŸ”¬ Build Curio

Clone the repository and switch to the latest branch:

Curio is compiled for a specific Filecoin network at build time. Choose the appropriate build command below.

Mainnet

Calibration

This step will take a few minutes to complete.

βœ… Install and Verify Curio

Run the following to install the compiled binary:

This will place curio in /usr/local/bin

Verify the installation:

Expected example output:


πŸ”§ Guided Setup

Curio provides a utility to help you set up a new miner interactively. Run the following command:

1️⃣ Select Curio Installation Type

Use the arrow keys to navigate the guided setup menu and select "Setup non-Storage Provider cluster".

2️⃣ Enter Your YugabyteDB Connection Details

If you used the default installation steps from this guide, the following values should work:

  • Host: 127.0.0.1

  • Port: 5433

  • Username: yugabyte

  • Password: yugabyte

  • Database: yugabyte

You can verify these settings by running the following command from the Yugabyte directory:

After selecting "Continue to connect and update schema", Curio will automatically create the required tables and schema in the database.

3️⃣ Telemetry (Optional)

You'll be asked whether to share anonymised or signed telemetry with the Curio team to help improve the software.

Select your preference and continue.

4️⃣ Save Database Configuration

At the final step of the guided setup, you'll be prompted to choose where to save your database configuration file.

Use the arrow keys to select a location. A common default is:

Once selected, setup will complete, and the miner configuration will be stored.

5️⃣ Launch the Curio Web GUI

To explore the Curio interface visually, start the GUI layer:

Then, open your browser and go to:

This will launch the Curio web GUI locally.


πŸ§ͺ Enabling PDP

🧠 This section enables Proof of Data Possession (PDP) on your storage provider node using Curio. PDP is the verification layer used by the Filecoin Warm Storage Service (FWSS) within Filecoin Onchain Cloud. These steps guide you through running a standalone PDP service using Curio and pdptool.

πŸ“¦ Attach Storage Locations

With Curio running with the GUI layer:

Run the following commands in your Curio CLI to attach storage paths:

Your fast-storage path should point to high-performance storage media such as NVMe or SSD


πŸ”§ Add a PDP Configuration Layer

Browse to the Configurations page of the Curio GUI.

Create a new layer named pdp and enable the following under Subsystems:

You may find it helpful to search for the setting names in your browser.

  • βœ… EnableParkPiece

  • βœ… EnablePDP

  • βœ… EnableCommP

  • βœ… EnableMoveStorage

  • βœ… NoUnsealedDecode

In the HTTP section:

  • βœ… Enable: true

  • 🌐 DomainName: your domain (e.g., pdp.mydomain.com)

  • πŸ“‘ ListenAddress: 0.0.0.0:443

Tip: You must point your domain's A record to your server's public IP address for Let's Encrypt to issue a certificate.


πŸ’° Import your Filecoin Wallet Private Key:

Create a new delegated wallet:

You can display your Lotus wallets at any time by running:

Export & convert your new delegated wallet address private key:

Browse to the PDP page of the Curio GUI and in the Owner Address section:

  • Select Import Key

  • Copy the previously generated private wallet key into the Private Key (Hex) field.

  • Select Import Key

Make sure to send a small amount of FIL or tFIL (testnet FIL) to your 0x wallet - we recommend 8 FIL for Mainnet & 5 tFIL for Calibration to ensure uninterrupted PDP operation during initial setup and testing. Calibration test FIL faucet information.


πŸš€ Restart and Verify

Restart Curio with both layers:

If you encounter errors related to EnableEthRPC or EnableIndexer, run the following command and restart Lotus

If you encounter errors binding to port 443 when starting Curio with the pdp configuration layer, run:


πŸ”— Test Connectivity

Browse to your PDP node's domain name in your browser. You should see the following message in your browser window:


πŸ—³οΈ Register Your PDP Calibration Node With The Filecoin Warm Storage Service

Browse to the PDP page of the Curio GUI and locate the Filecoin Service Registry section.

STEP 1 β€” Update Details

Select Update Details and fill in:

Field
Notes

Name

≀ 128 chars

Description

≀ 256 chars

Select Update to submit your node details to the on-chain FWSS contract.

You can review the names and descriptions of other FWSS providers at https://filecoin.cloud/service-providers.

STEP 2 β€” Update PDP Offering

Select Update PDP Offering and set:

Field
Recommended value

Minimum Piece Size (Bytes)

1048576

Maximum Piece Size (Bytes)

1073741824

Storage Price (USDFC per TiB per day)

0.833

Minimum Proving Period (Epochs)

30

Location

e.g. C=US;ST=California;L=San Francisco (only C= is required)

Then use Add Capability to add the following key/value pairs:

Key
Value

serviceStatus

prod

capacityTib

your available storage capacity in TiB

Select Update PDP to submit your offering to the on-chain FWSS contract.

You can revisit Update PDP Offering at any time to change the Service URL, piece size range, IPNI toggles, price, proving period, location, or custom capabilities.


πŸŽ‰ You're Done!

You've successfully launched a PDP-enabled Filecoin Storage Provider stack. Your system is now:

  • βœ… Syncing with the Filecoin network via Lotus

  • βœ… Recording deal and piece metadata in YugabyteDB

  • βœ… Operating Curio to manage sealing and coordination

  • βœ… Enabled Proof of Data Possession (PDP)

  • βœ… Connected to your PDP-enabled storage provider

  • βœ… Registered with the Filecoin Warm Storage Service onchain contract


πŸ”œ Next Steps

Last updated