DocsGetting startedSetup guide

Setup guide

Stand up a Solidus validator from a fresh VPS in ~10 minutes. Walks through prerequisites, installation, configuration, DID registration, staking, and verification.

~10 min · 7 stepsPre-release · v0.1.0

Prerequisites

Before you start, make sure you have these in place. The hardest requirement is KYC L2 — without it the chain will refuse your validator DID registration.

  • 1
    docsSetup.prerequisite.kycdocsSetup.prerequisite.kycDetail
  • 2
    docsSetup.prerequisite.stakedocsSetup.prerequisite.stakeDetail
  • 3
    docsSetup.prerequisite.hardwaredocsSetup.prerequisite.hardwareDetail
  • 4
    docsSetup.prerequisite.portsdocsSetup.prerequisite.portsDetail

Installation

Pick the install method that matches your environment. All three produce the same signed binary.

docsSetup.install.curlFilename
docsSetup.install.curlComment1
curl -fsSL https://releases.solidus.network/install.sh | sh

docsSetup.install.curlComment2
curl -fsSL https://releases.solidus.network/install.sh -o install.sh
shasum -a 256 install.sh
less install.sh && sh install.sh

Why pipe-to-sh is fine here

docsSetup.installCalloutText

Configuration

docsSetup.configurationDescription

/etc/solidus/config.toml
[node]
name = "my-validator-01"
data_dir = "/var/lib/solidus"
log_level = "info"

[network]
listen_port = 9651
rpc_port = 9652            # bound to 127.0.0.1 only
max_peers = 50

[validator]
did = "did:sol:..."         # set after registration
reward_address = "0x..."
tier = "subnet"             # light | subnet | core

[storage]
pruning_mode = "archive"    # archive | pruned
prune_keep_blocks = 256000  # only used if pruning_mode = "pruned"

[updater]
auto_update = true
channel = "stable"          # stable | beta
docsSetup.configTable.keydocsSetup.configTable.defaultdocsSetup.configTable.whenChange
node.data_dir/var/lib/solidusdocsSetup.config.dataDir.when
network.listen_port9651docsSetup.config.listenPort.when
network.max_peers50docsSetup.config.maxPeers.when
storage.pruning_modearchivedocsSetup.config.pruning.when
updater.auto_updatetruedocsSetup.config.autoUpdate.when

Register validator DID

Once you have KYC L2, bind a validator DID to your node. The DID is your on-chain identity — it's what receives rewards and accumulates reputation.

solidus-cli
# Generate a new validator DID (writes to ~/.solidus/keys/)
solidus-cli did create --tier subnet

# → did:sol:b3d1f8c4a7f2e91c5b... (copy this)

# Register the DID on-chain (requires KYC L2 binding)
solidus-cli did register \
  --did did:sol:b3d1f8c4a7f2e91c5b... \
  --kyc-credential ~/.solidus/kyc/level2.vc.jwt

Keep ~/.solidus/keys/ off shared storage

Your validator signing key is in this directory. Loss = inability to validate. Theft = ability to sign as you (slashing risk). Back it up offline; never sync it to cloud storage.

Stake SLDS

Lock the stake amount required for your tier. Stake unbonds 21 days after you initiate withdrawal.

solidus-cli
# Stake 100,000 SLDS to your validator DID (Subnet tier)
solidus-cli stake \
  --did did:sol:b3d1f8c4a7f2e91c5b... \
  --amount 100000

docsSetup.stakeGUIText

Start the node

docsSetup.startDescription

# Enable + start
sudo systemctl enable --now solidus-node

# Confirm it's running
sudo systemctl status solidus-node

# Tail logs (real-time)
sudo journalctl -u solidus-node -f

Verify operation

Once the node has been up for 1-2 minutes, check that it's syncing and connected to peers.

# Block height (should grow over time)
curl -s http://127.0.0.1:9652 -d '{"jsonrpc":"2.0","method":"solidus_blockNumber","id":1}' | jq

# Peer count (>= 3 expected within first 5 minutes)
curl -s http://127.0.0.1:9652 -d '{"jsonrpc":"2.0","method":"solidus_peerCount","id":1}' | jq

# Validator status — should show "active" once stake confirms (~1 epoch)
solidus-cli validator status --did did:sol:b3d1f8c4a7f2e91c5b...

You're live

docsSetup.verifyCalloutText
Setup Guide