Setup guide
Stand up a Solidus validator from a fresh VPS in ~10 minutes. Walks through prerequisites, installation, configuration, DID registration, staking, and verification.
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.
- 1docsSetup.prerequisite.kyc— docsSetup.prerequisite.kycDetail
- 2docsSetup.prerequisite.stake— docsSetup.prerequisite.stakeDetail
- 3docsSetup.prerequisite.hardware— docsSetup.prerequisite.hardwareDetail
- 4docsSetup.prerequisite.ports— docsSetup.prerequisite.portsDetail
Installation
Pick the install method that matches your environment. All three produce the same signed binary.
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
Configuration
docsSetup.configurationDescription
[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.key | docsSetup.configTable.default | docsSetup.configTable.whenChange |
|---|---|---|
| node.data_dir | /var/lib/solidus | docsSetup.config.dataDir.when |
| network.listen_port | 9651 | docsSetup.config.listenPort.when |
| network.max_peers | 50 | docsSetup.config.maxPeers.when |
| storage.pruning_mode | archive | docsSetup.config.pruning.when |
| updater.auto_update | true | docsSetup.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.
# 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
Stake SLDS
Lock the stake amount required for your tier. Stake unbonds 21 days after you initiate withdrawal.
# 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

