Skip to main content

Running a Node

Complete operational guide for running Orbinum nodes in development, testnet, and production modes.

Prerequisites

Make sure you've completed the Installation before continuing.


Node Modes Overview


ModeUse CaseData PersistenceConsensusPre-funded Accounts
DevelopmentLocal testingTemporal (with --tmp)Instant sealAlice, Bob, Charlie
TestnetIntegration testingPersistentMulti-validatorNo (requires faucet)
ProductionMainnetPersistentMulti-validatorNo

Development Mode

Mode for local development with instant seal (produces blocks without consensus).

Basic Development Node

./target/release/orbinum-node --dev --tmp

Flags:

  • --dev: Activates development chain spec with pre-funded accounts
  • --tmp: Stores data in temporary directory (cleared on restart)

Features:

  • Produces blocks instantly (doesn't wait for consensus)
  • Clean chain state on each start
  • Ideal for quick testing

Pre-funded Development Accounts

AccountSubstrate AddressBalance Inicial
Alice5GrwvaEF...1,000,000 ORB
Bob5FHneW46...1,000,000 ORB
Charlie5FLSigC9...1,000,000 ORB

With Persistent Data

To maintain state between restarts:

./target/release/orbinum-node --dev --base-path ./data

Enable External RPC Access

To connect from Polkadot.js Apps or external wallets:

./target/release/orbinum-node \
--dev \
--tmp \
--rpc-cors all \
--rpc-methods Unsafe \
--rpc-external
Development Only

--rpc-methods Unsafe enables dangerous methods. Never use this in production.

With Ethereum RPC APIs

For EVM development (MetaMask, Hardhat, etc.):

./target/release/orbinum-node \
--dev \
--tmp \
--rpc-cors all \
--rpc-external \
--ethapi=debug,trace,txpool

Available endpoints:

  • Substrate RPC: ws://127.0.0.1:9944
  • Ethereum RPC: http://127.0.0.1:9944 (JSON-RPC compatible)

Testnet Mode

The simplest way to run a testnet node:

cd docker/testnet
docker-compose up -d

Container management:

# View logs in real-time
docker-compose logs -f

# Stop node
docker-compose down

# Restart node
docker-compose restart

# View status
docker-compose ps

Configuration: The docker-compose.yml file includes pre-configured testnet settings.

Join Existing Testnet (Binary)

If you compiled from source:

./target/release/orbinum-node \
--chain testnet \
--name "MyNode" \
--base-path /data/orbinum \
--rpc-cors all

Local Multi-Node Testnet

To simulate a multi-node network locally:

Node 1 (Alice - Bootnode):

./target/release/orbinum-node \
--chain local \
--alice \
--base-path /tmp/alice \
--port 30333 \
--rpc-port 9944

Copy the Local node identity from the output (format: 12D3KooW...).

Node 2 (Bob):

./target/release/orbinum-node \
--chain local \
--bob \
--base-path /tmp/bob \
--port 30334 \
--rpc-port 9945 \
--bootnodes /ip4/127.0.0.1/tcp/30333/p2p/<ALICE_PEER_ID>

Replace <ALICE_PEER_ID> with Alice's node identity.


Production Mode

Mainnet Status

Orbinum mainnet is not yet in production (Q1 2026: MVP/Testnet). This section is for future reference.

Validator Node

Validator node with staking:

./target/release/orbinum-node \
--chain mainnet \
--validator \
--name "MyValidator" \
--base-path /data/orbinum \
--rpc-methods Safe \
--rpc-cors all \
--state-pruning 256

Requirements:

  • Minimum stake (TBD)
  • Session keys configured
  • 99%+ uptime

Archive Node

Stores complete blockchain history:

./target/release/orbinum-node \
--chain mainnet \
--pruning archive \
--base-path /data/orbinum-archive \
--db-cache 4096

Requirements: 200+ GB storage, grows continuously.

Public RPC Node

Public RPC endpoint for dApps:

./target/release/orbinum-node \
--chain mainnet \
--rpc-external \
--rpc-cors all \
--rpc-methods Safe \
--rpc-max-connections 1000

Configuration Reference

Essential Flags

FlagDescriptionDefault
--chainChain specificationdev
--base-pathData directoryPlatform-specific
--portP2P port30333
--rpc-portRPC port9944
--ws-portWebSocket port9944
--validatorEnable validationfalse
--pruningState pruning mode256 blocks
--nameNode nameRandom

RPC Configuration

FlagDescription
--rpc-externalListen on all interfaces
--rpc-corsCORS origins (use all for dev)
--rpc-methodsSafe, Unsafe, or Auto
--rpc-max-connectionsMax concurrent connections

Logging

# Increase verbosity
RUST_LOG=debug ./target/release/orbinum-node --dev

# Specific module logging
RUST_LOG=pallet_shielded_pool=trace ./target/release/orbinum-node --dev

# Log to file
./target/release/orbinum-node --dev 2>&1 | tee node.log

Systemd Service

For production deployments:

# /etc/systemd/system/orbinum.service
[Unit]
Description=Orbinum Node
After=network.target

[Service]
Type=simple
User=orbinum
ExecStart=/usr/local/bin/orbinum-node \
--chain mainnet \
--base-path /data/orbinum \
--validator \
--name "MyValidator"
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Enable and start:

sudo systemctl enable orbinum
sudo systemctl start orbinum
sudo systemctl status orbinum

Monitoring and Observability

Prometheus Metrics

Enable metrics endpoint:

./target/release/orbinum-node \
--dev \
--prometheus-port 9615 \
--prometheus-external

Access: http://localhost:9615/metrics

Available metrics:

  • Block height, finalization lag
  • Transaction pool size
  • Peer connections
  • Memory usage, CPU

RPC Health Check

curl -H "Content-Type: application/json" \
-d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
http://localhost:9944

Response:

{
"jsonrpc": "2.0",
"result": {
"peers": 5,
"isSyncing": false,
"shouldHavePeers": true
},
"id": 1
}

Advanced Topics

Custom Chain Spec

To create a custom chain spec:

# Generate spec in JSON format
./target/release/orbinum-node build-spec --chain local > custom-spec.json

# Convert to raw format
./target/release/orbinum-node build-spec --chain custom-spec.json --raw > custom-spec-raw.json

# Use the spec
./target/release/orbinum-node --chain custom-spec-raw.json

Database Backend

Orbinum uses RocksDB by default. To change:

# Use ParityDB (experimental)
./target/release/orbinum-node --dev --database paritydb

Telemetry

Send telemetry to public server:

./target/release/orbinum-node \
--chain mainnet \
--name "MyNode" \
--telemetry-url "wss://telemetry.polkadot.io/submit/ 0"

Next Steps