LogoLogo
HomeExplorerGitHub
  • 🗂️Introduction
    • 🧐5Ws-1H about CESS
    • ✨Technical Highlight
    • 🔨Use Cases
    • 📜Whitepaper
    • 💬Contact & Social Media
  • ⛏️CESS Nodes
    • Consensus Nodes
      • Running a Consensus Node
      • Reward Mechanism
    • Storage Nodes
      • Running a Storage Node
      • Running MultiNodes
      • Node Troubleshooting
      • Storage Miner Upgrade Guide
    • CDN Nodes
      • Running a Cacher
      • Running a Retriever
    • TEE Nodes
      • What is TEE Node
      • Running a TEE Node
  • 🌏Community Members
    • Ambassador Program
    • Community Governance
  • 🔥CESS User Guide
    • CESS Account
    • Testnet Faucet
    • Territory Operation
  • 💻Developers
    • CESS SDK
      • Golang SDK
        • Preface
        • Install
        • Initialization
        • Properties
        • Data Process
        • Object/File
          • StoreFile
          • StoreObject
          • RetrieveFile
          • RetrieveObject
          • StoreFileToMiners
          • RetrieveFileFromMiners
        • Chain Related
          • Audit
            • QueryChallengeSnapShot
            • QueryCountedClear
            • QueryCountedServiceFailed
            • SubmitIdleProof
            • SubmitServiceProof
            • SubmitVerifyIdleResult
            • SubmitVerifyServiceResult
          • Babe
            • QueryAuthorities
          • Balances
            • QueryInactiveIssuance
            • QueryTotalIssuance
            • TransferToken
          • CessTreasury
            • QueryCurrencyReward
            • QueryEraReward
            • QueryReserveReward
            • QueryRoundReward
          • DeOSS
            • Authorize
            • CancelAuthorize
            • DestroyOss
            • QueryAllOss
            • QueryAuthorityList
            • QueryOss
            • RegisterOss
            • UpdateOss
          • FileBank
            • QueryAllRestoralOrder
            • QueryUserHoldFileList
            • QueryUserFidList
            • QueryDealMap
            • QueryFile
            • QueryRestoralOrder
            • CalculateReport
            • CertIdleSpace
            • ClaimRestoralNoExistOrder
            • ClaimRestoralOrder
            • DeleteFile
            • GenerateRestoralOrder
            • PlaceStorageOrder
            • ReplaceIdleSpace
            • RestoralOrderComplete
            • TransferReport
            • UploadDeclaration
            • TerritoryFileDelivery
          • SchedulerCredit
            • QueryCurrentCounters
          • Session
            • QueryValidators
          • Sminer
            • IncreaseCollateral
            • IncreaseDeclarationSpace
            • MinerExitPrep
            • MinerWithdraw
            • QueryAllMiner
            • QueryAllRestoralTarget
            • QueryCompleteSnapShot
            • QueryCounterForMinerItems
            • QueryExpenders
            • QueryMinerItems
            • QueryPendingReplacements
            • QueryRestoralTarget
            • QueryRewardMap
            • QueryStakingStartBlock
            • ReceiveReward
            • RegisterPoisKey
            • RegnstkAssignStaking
            • RegnstkSminer
            • UpdateBeneficiary
            • UpdateSminerEndPoint
          • Staking
            • QueryAllBonded
            • QueryAllNominators
            • QueryCounterForValidators
            • QueryCurrentEra
            • QueryEraValidatorReward
            • QueryErasRewardPoints
            • QueryErasTotalStake
            • QueryLedger
            • QueryNominatorCount
            • QueryValidatorCommission
            • QueryValidatorsCount
            • QueryeErasStakers
            • QueryeNominators
          • StorageHandler
            • QueryPurchasedSpace
            • QueryTotalIdleSpace
            • QueryTotalServiceSpace
            • QueryUnitPrice
            • QueryTerritory
            • QueryConsignment
            • MintTerritory
            • ExpandingTerritory
            • RenewalTerritory
            • ReactivateTerritory
            • TerritoryConsignment
            • CancelConsignment
            • BuyConsignment
            • CancelPurchaseAction
          • System
            • QueryAccountInfo
            • QueryAccountInfoByAccountID
            • QueryBlockNumber
          • Tee
            • QueryAllWorkers
            • QueryEndpoints
            • QueryMasterPubKey
            • QueryWorkerAddedAt
            • QueryWorkers
          • RPC Calls
            • ChainGetBlock
            • ChainGetBlockHash
            • ChainGetFinalizedHead
            • NetListening
            • SystemChain
            • SystemProperties
            • SystemSyncState
            • SystemVersion
        • Toolset
      • Javascript SDK
      • Rust SDK
        • Preface
        • chain
          • Audit
            • Challenge Snapshot
            • Counted Clear
            • Counted Service Failed
            • Submit Idle Space Proof
            • Submit Service Proof
            • Submit Verify Idle Result
            • Submit Verify Service Result
          • File Bank
            • Bucket
            • Clear User List
            • deal Map
            • File
            • Restoral Order
            • User Bucket List
            • User Hold File List
            • Calculate Report
            • Certify Idle Space
            • Claim Restoral Noexist Order
            • Claim Restoral Order
            • Create Bucket
            • Delete Bucket
            • Delete File
            • Generate Restoral Order
            • Replace Idle Space
            • Restoral Order Complete
            • Territory File Delivery
            • Transfer Report
            • Upload Declaration
          • Oss
            • Authority List
            • Oss
            • Authorize
            • Cancel Authorize
            • Destroy
            • Register
            • Update
          • Storage Handler
            • Consignment
            • Pay Order
            • Purchased Space
            • Territory Expired
            • Territory Frozen Counter
            • Territory Frozen
            • Territory
            • Territory Key
            • Total Power
            • Total Space
            • Unit Price
            • Buy Consignment
            • Cancel Consignment
            • Cancel Purchase Action
            • Create Order
            • Expand Territory
            • Mint Territory
            • Reactivate Territory
            • Renew Territory
            • Territory Consignment
            • Territory Grants
            • Territory Rename
    • Smart Contract
      • Issue ERC20
      • Deploy an ink! Smart Contract
      • Deploy a Solidity Smart Contract
      • Build a Proof of Existence dApp (ink!)
      • Build a NFT Marketplace (ink!)
      • Build a Proof of Existence dApp (Solidity)
    • Advanced Guides
      • Substrate and EVM Address Conversion
      • Commonly Used Libs
      • CESS Code Overview
  • 📱CESS Products
    • DeOSS
      • Introduction
      • Technical Highlights
      • Architecture
      • Data Access Process
      • API Description
        • Prerequisites
        • Identity Signature
        • Upload File/Object
        • Range Upload
        • Download File
        • Preview File
        • Delete File
        • View File Metadata
        • View Version
  • 📚References
    • 📚Node Operations
      • Running RPC Node
    • 📚In-depth Technical Features
      • R²S
      • RRC
      • LBSS
      • VRF
    • Data Lifecycle
      • Data Upload
      • Data Download
      • Data Deletion
      • Data Restore
      • Data Audit
    • Distributed Storage
      • Identification
      • Consistency Guarantee
      • Node Discovery
      • Message Protocol
      • Storage Method
    • DePIN
      • The DePIN Portrait
    • AI
      • CESS: The Future of Decentralized Data Infrastructure for the AI-Driven World
      • Decentralized Solutions for AI: How CESS is Shaping a Trusted Future
      • CESS in CES: Insights from Jensen Huang’s CES 2025 Speech and CESS Network’s Role in the AI Era
      • CESS AI Agent Hub: The Intelligent Portal of the AI Times
  • 📖Glossary
Powered by GitBook
On this page
  • Server Requirement
  • Server Preparation
  • Install Docker
  • Firewall Configuration
  • Optional: Mount Additional Drive
  • Prepare CESS Accounts
  • Install CESS Client
  • Configure CESS Client
  • Setup a Running Network
  • Setup Configuration
  • Common Operations
  • Check CESS Chain Sync Status
  • Check Your Storage Node Status On-chain
  • View the Storage Node Log
  • View Storage Node Status
  • Increase Storage Node Staking
  • Withdraw Storage Node Staking
  • Query Reward Information
  • Claim Reward
  • Update All Service Images
  • Stop and Remove All Services
  • Update Earnings Account
  • Exit CESS Network
  • Upgrade CESS Client
  • Stop and Remove All Services
  • Remove All Chain Data
  • Update cess-nodeadm
  • Update All Service Images

Was this helpful?

Edit on GitHub
  1. CESS Nodes
  2. Storage Nodes

Running a Storage Node

Last updated 20 days ago

Was this helpful?

Server Requirement

The recommended requirement of a storage server:

Resource
Specification

Recommended OS

Linux 64-bit Intel / AMD

# of CPU Cores

≥ 4

Memory

≥ 8 GB

Bandwidth

≥ 20 Mbps

Public Network IP

required

Linux Kernel Version

5.11 or higher

Server Preparation

Install Docker

Please refer to the for Docker installation.

Firewall Configuration

The following commands are executed with root privileges. If error messages of permission denied appear, switch to root privilege or add sudo at the beginning of these commands.

By default, the storage node uses port 15001 for network connections, please ensure that the firewall or security group is configured to allow incoming traffic on this port.

Optional: Mount Additional Drive

This step is required only if you are mounting another disk / storage device to your server.

Check the hard disk status using the df -h command:

df -h

If the disk is not mounted, the hard drive for storage mining cannot be used. Use the commands below to view unmounted hard disks:

fdisk -l

# Output result
Disk /dev/vdb: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x331195d1

From the above, we can see that the unmounted disk is /dev/vdb. We will be using /dev/vdb to demonstrate the mounting operation.

Allocate the /dev/vdb disk:

fdisk /dev/vdb

Enter and press Enter:
n
p
1
2048
the value after default
w

Format the newly divided disk into ext4 format:

mkfs.ext4 /dev/vdb

Enter "y" to continue if the system asks to proceed:

Proceed anyway? (y,N) y

Create /cess directory to mount the disk. Using /cess as an example:

sudo mkdir /cess
sudo echo "/dev/vdb /cess ext4 defaults 0 0" >> /etc/fstab

Replace /dev/vdb with your own disk name. /cess has to remain the same as created in the previous step. If you are not under root privileges, try:

echo "/dev/vdb /cess ext4 defaults 0 0" | sudo tee -a /etc/fstab

Mount /cess:

mount -a

Check the disk mounting status:

df -h

If /cess appears, the disk has been successfully mounted.

Prepare CESS Accounts

Storage node need to create at least two wallet accounts.

  • Earning Account: Used to receive mining rewards.

  • Staking Account: Used to pay for staking TCESS.

  • Signature Account: Used to sign blockchain transactions. If no staking account is specified, this account will also be used to pay staking TCESS.

  • Storage Deposit: To keep the storage node in honoring its service commitment, the storage node account will have its native tokens locked for the storage amount pledged to offer. Currently in testnet, it is 4,000 TCESS per TB. The pledged space is round up to the closest TB unit and locked for that amount multiply with 4,000 TCESS. The minimum locked token is also 4,000 TCESS.

Note:Each signature account can only be used by one storage node, otherwise an exception will occur.

Install CESS Client

  1. Download and install

    wget https://github.com/CESSProject/cess-nodeadm/archive/v0.6.1.tar.gz
    tar -xvzf v0.6.1.tar.gz
    cd cess-nodeadm-0.6.1/
    ./install.sh

    If a message Install cess nodeadm success shows up at the end, it means the installation is completed.

  2. Stop and removing existing services

    Stop existing services:

    sudo cess stop
    # or
    sudo cess down

    Remove existing services:

    sudo cess purge

Configure CESS Client

Setup a Running Network

# Running the storage node on development network:
sudo cess profile devtnet

# or running the storage node on test network:
sudo cess profile testnet

Setup Configuration

sudo cess config set

Enter cess node mode from 'tee/storage/validator/rpcnode' (current: storage, press enter to skip): storage
Enter cess storage listener port (current: 15001, press enter to skip): 
Start configuring the endpoint to access Storage-Miner from the internet
  Do you need to automatically detect extranet address as endpoint? (y/n) y
  Try to get your extranet IP ...
  Your Storage-Miner endpoint is http://x.x.x.x:15001
Enter cess rpc ws-url (current: local-chain, to use an external chain, type WS-URL directly, or press enter to skip):
Enter cess storage earnings account: cXf5MAAmRm85fmZEJRBDVbwEWSfZmkHEGWgBsJBF5LstfKe2D
Enter cess storage signature account phrase: apple pen used tree divide popular force aunt actor text tourist abstract
Enter cess storage disk path (default: /opt/cess/storage/disk): /cess
Enter cess storage space, by GB unit (current: 300, press enter to skip):
Enter the number of CPU cores used for mining; Your CPU cores are 4
  (current: 0, 0 means all cores are used; press enter to skip):
Enter the staking account if you use one account to stake multiple nodes (if it is the same as the signature account, press enter to skip):
Enter the TEE worker endpoints if you have any (separate multiple values with commas, press enter to skip):
Set configurations successfully
  • If a staker payment account is provided, for testnet, the pledged space (answer to the Enter cess storage space) is round up to the closest TB unit and that amount multiply with 4,000 amount of TCESS will be locked as a miner deposit.

  • Default TEE Node endpoints for the chain will be used if you don't provide any TEE Node endpoints. This doesn't affect your reward as a storage miner.

Start CESS storage node

sudo cess start

[+] Running 3/0
 ✔ Container chain       Running                                                0.0s
 ✔ Container miner       Running                                                0.0s
 ✔ Container watchtower  Running                                                0.0s

Common Operations

Check CESS Chain Sync Status

docker logs -f -n 50 chain

Only when the chain synchronization is completed can you operate other functions such as increase the staking, view the status of the node, etc.

Check Your Storage Node Status On-chain

You can check your storage node status on-chain.

  1. On selected state query: select sminer pallet and allMiner() storage item

  2. Click the button on the right to query the state

  3. At the bottom of the returned list, you should find the storage node address that your mnemonic (with root path) generated from your answer to sudo cess config set. See below for an example.

  4. You can also check your detail miner info with selecting sminer pallet and minerItems(AccountId32) storage item. In the Option<AccountId32>, choose/input the storage node address. It will return your detail information on-chain. See below for an example.

View the Storage Node Log

docker logs -f -n 50 miner

As shown below, the storage node will sync the chain at first and then fetch key from tee node, finally start to generate idle files and start mining.

View Storage Node Status

sudo cess miner stat

An example of the returned result is shown below:

At the beginning of the storage node synchronization, all your validated space, used space, and locked space are 0. It is only when the validated space been incremented above 0 that the storage miner start earning rewards.

Please wait for chain synchronization if you get the output like you are not registered as a storage miner..., otherwise, please config a public chain node to skip local chain synchronization.

Increase Storage Node Staking

Make sure that the signatureAcc is the same as stakingAcc can use this command

sudo cess miner increase staking <deposit amount>

Withdraw Storage Node Staking

After your node has exited CESS Network (see below), run

sudo cess miner withdraw

Query Reward Information

sudo cess miner reward

Claim Reward

sudo cess miner claim

Update All Service Images

sudo cess pullimg

Stop and Remove All Services

sudo cess down

Update Earnings Account

sudo cess miner update earnings [earnings account]

Exit CESS Network

sudo cess miner exit

Upgrade CESS Client

Stop and Remove All Services

sudo cess stop
sudo cess down

Remove All Chain Data

Do not perform this operation unless the CESS network has been redeployed and it is confirmed that the data can be cleared.

sudo cess purge

Update cess-nodeadm

wget https://github.com/CESSProject/cess-nodeadm/archive/vx.x.x.tar.gz
tar -xvf vx.x.x.tar.gz
cd cess-nodeadm-x.x.x
sudo ./install.sh --skip-dep

Update All Service Images

sudo cess pullimg

Please refer to for creating a CESS account, goto to get our testnet tokens, TCESS, or to get assistance.

Check for the latest version at:

If the installation fails, please check the .

If a staker payment account is not provided, then the signature account will be used as the staking account. If the staking account different from signature account is provided, can only .

If you want to speed up your earnings, you can choose to deploy a Marker-type TEE Node to help storage nodes certify space and mark user service files. Please refer to the .

As shown below, if we see that the height of the block corresponding to "best" is about the latest height in , it means the local chain node synchronization is completed.

Goto

Go to and check your account details, you would see a certain amount of TCESS has been reserved as the storage deposit.

Refer to the on the names above.

⛏️
official documentation
Creating CESS Accounts
CESS faucet
contact us
https://github.com/CESSProject/cess-nodeadm/tags
troubleshoot procedures
increase stake in block browser manually
TEE Node User Guide
CESS Explorer
Polkadot-js Apps: Developer > Chain state
the Accounts page
Glossary
CESS Blockchain Synchronization Completed
CESS query on all miners
CESS query on my miner item
Token is reserved as a storage miner
Storage Node Log
CESS Miner Stat