Skip to main content

Running a Node

This guide explains how to run an Orbinum node in development, testnet, or production modes.


Table of Contents


Node Modes

ModePurposePersistenceNetwork
DevelopmentLocal testingTemporarySolo
TestnetIntegration testingPersistentMulti-node
ProductionMainnetPersistentMulti-node

Development Node

The fastest way to start testing:

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

Flags Explained

FlagDescription
--devUse development chain spec with pre-funded accounts
--tmpStore data in temporary directory (cleared on restart)

Development Accounts

The --dev flag provides pre-funded accounts:

AccountAddressBalance
Alice5GrwvaEF...1,000,000 ORB
Bob5FHneW46...1,000,000 ORB
Charlie5FLSigC9...1,000,000 ORB

Enable RPC

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

Enable Ethereum RPC

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

Testnet Node

Join Existing Testnet

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

Docker Deployment

Start a testnet node using Docker:

cd docker/testnet
docker-compose up -d

View logs:

docker-compose logs -f

Stop node:

docker-compose down

Manual Multi-Node Setup

Or configure multiple nodes manually:

Node 1 (Bootnode):

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

Node 2:

./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>

Production Node

Validator Node

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

Archive Node

Store complete blockchain history:

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

RPC Node

Public RPC endpoint:

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

Configuration

Command Line 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

Prometheus Metrics

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

Access metrics at http://localhost:9615/metrics

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
}

Next Steps