Running a Development Node
How to run Orbinum on your own machine: a single dev node with instant seal, or a small local network with two validators.
This page covers local development only. To run a node on the testnet, see Becoming a Validator for validators, or RPC and Archive Nodes for public endpoints.
Make sure you've completed the Installation before continuing.
What development mode gives you
Development (--dev) | Local network (--chain local) | |
|---|---|---|
| Consensus | Instant seal — a block per transaction | Aura between the nodes you start |
| Data | Temporary with --tmp | Temporary or persistent |
| Accounts | Alice, Bob and Charlie, pre-funded | Same |
| EVM chain ID | 42 | 42 |
Neither talks to the testnet. Both give you a chain you fully control.
Development Mode
Mode for local development with instant seal (produces blocks without consensus). Everything runs from the published Docker image — no compilation.
The examples use ghcr.io/orbinum/node:testnet-latest. Export it once to keep
commands short: export ORB=ghcr.io/orbinum/node:testnet-latest.
Basic Development Node
docker run --rm ghcr.io/orbinum/node:testnet-latest --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
| Account | Substrate Address | Initial Balance |
|---|---|---|
| Alice | 5GrwvaEF... | 1,000,000 ORB |
| Bob | 5FHneW46... | 1,000,000 ORB |
| Charlie | 5FLSigC9... | 1,000,000 ORB |
With Persistent Data
To keep state between restarts, mount a host directory (or a named volume):
docker run --rm -v "$PWD/data:/data" ghcr.io/orbinum/node:testnet-latest \
--dev --base-path /data
Enable External RPC Access
To connect from Polkadot.js Apps or external wallets, publish the RPC port:
docker run --rm -p 9944:9944 ghcr.io/orbinum/node:testnet-latest \
--dev --tmp \
--rpc-cors all \
--rpc-methods Unsafe \
--rpc-external
--rpc-methods Unsafe enables dangerous methods, and -p 9944:9944 exposes the
RPC port. Local development only — never on a public node.
With Ethereum RPC APIs
For EVM development (MetaMask, Hardhat, etc.):
docker run --rm -p 9944:9944 ghcr.io/orbinum/node:testnet-latest \
--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)
Local Multi-Node Testnet
To simulate a small network locally with the well-known --alice / --bob
keys, run two containers on a shared Docker network:
docker network create orbinum-local
Node 1 (Alice — bootnode):
docker run --rm --name alice --network orbinum-local \
-p 9944:9944 ghcr.io/orbinum/node:testnet-latest \
--chain local --alice --tmp \
--port 30333 --rpc-port 9944
Copy the Local node identity from Alice's logs (format 12D3KooW...).
Node 2 (Bob):
docker run --rm --name bob --network orbinum-local \
-p 9945:9944 ghcr.io/orbinum/node:testnet-latest \
--chain local --bob --tmp \
--port 30333 --rpc-port 9944 \
--bootnodes /dns/alice/tcp/30333/p2p/<ALICE_PEER_ID>
Replace <ALICE_PEER_ID> with the identity from Alice's logs. Both nodes
discover each other over the orbinum-local network and finalize blocks
together.
Configuration Reference
Essential Flags
| Flag | Description | Default |
|---|---|---|
--chain | Chain specification | dev |
--base-path | Data directory | Platform-specific |
--port | P2P port | 30333 |
--rpc-port | RPC port | 9944 |
--ws-port | WebSocket port | 9944 |
--validator | Enable validation | false |
--pruning | State pruning mode | 256 blocks |
--name | Node name | Random |
RPC Configuration
| Flag | Description |
|---|---|
--rpc-external | Listen on all interfaces |
--rpc-cors | CORS origins (use all for dev) |
--rpc-methods | Safe, Unsafe, or Auto |
--rpc-max-connections | Max concurrent connections |
Logging
# Increase verbosity
docker run --rm -e RUST_LOG=debug $ORB --dev --tmp
# Specific module logging
docker run --rm -e RUST_LOG=pallet_shielded_pool=trace $ORB --dev --tmp
# Log to file
docker run --rm $ORB --dev --tmp 2>&1 | tee node.log
$ORBis the image shorthand from Development Mode (export ORB=ghcr.io/orbinum/node:testnet-latest).
Advanced Topics
Custom Chain Spec
To create a custom chain spec:
# Generate spec in JSON format
docker run --rm $ORB build-spec --chain local > custom-spec.json
# Convert to raw format
docker run --rm -v "$PWD:/specs" $ORB \
build-spec --chain /specs/custom-spec.json --raw > custom-spec-raw.json
# Use the spec
docker run --rm -v "$PWD:/specs" $ORB --chain /specs/custom-spec-raw.json
Database Backend
Orbinum uses RocksDB by default. To change:
# Use ParityDB (experimental)
docker run --rm $ORB --dev --tmp --database paritydb
Next Steps
- Quick Start — perform your first transaction
- Becoming a Validator — join the testnet validator set
- RPC and Archive Nodes — run a public endpoint