Prerequisites
Install Docker and the Compose plugin. Log out and back in afterwards for the group change to take effect.
curl -fsSL https://get.docker.com | sh && sudo usermod -aG docker $USER && sudo apt-get install -y docker-compose-plugin
Verify Docker is ready
docker --version
docker compose version
Authenticate with GHCR
The node image is private. Log in to GitHub Container Registry with a personal access token that has read:packages scope:
echo <GITHUB_TOKEN> | docker login ghcr.io -u <github_user> --password-stdin
Clone the Deploy Repository
The compose files, chain spec and .env templates live in the node-deploy repository:
git clone https://github.com/orbinum/node-deploy.git
cd node-deploy/testnet/rpc
testnet/rpc for a public RPC/bootnode, or testnet/validator to run a validator. Each role runs the same image with different flags.
Pull the Image
Download the pre-built node image — no build step, no circuit artifact download:
docker compose pull
This pulls ghcr.io/orbinum/node:testnet-latest.
Configure & Start
Copy the example environment file, set your node name and (for validators) telemetry level, then bring the stack up:
cp .env.example .env
# edit .env — set RPC_NAME / VALIDATOR_NAME and TELEMETRY_URL
docker compose up -d
30333 must be reachable for the node to join the network. Editing the container command line requires a recreate, not a restart:
docker compose up -d --force-recreate orbinum-rpc-node
Verify the Node
Run a throwaway node in development mode to confirm the image works (you should see Block #1, Block #2 …):
docker run --rm ghcr.io/orbinum/node:testnet-latest --dev --tmp
Check the version:
docker run --rm ghcr.io/orbinum/node:testnet-latest --version
Explorer
View network activity on the block explorer:
https://explorer.testnet.orbinum.network
Website
https://orbinum.network
Delete Node
cd node-deploy/testnet/rpc
docker compose down -v
Docker Management
Pull latest image & restart
cd node-deploy/testnet/rpc
docker compose pull && docker compose up -d
Recreate after editing .env / compose
docker compose up -d --force-recreate orbinum-rpc-node
Inspect the running command line
docker inspect orbinum-rpc-node --format '{{join .Config.Cmd " "}}'
View logs
docker compose logs -f --tail 50 orbinum-rpc-node
Database size (inside container)
docker exec orbinum-rpc-node du -sh /data/chains/
Resource usage
docker stats orbinum-rpc-node --no-stream
RPC Endpoints
Check RPC health
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"system_health","params":[]}' \
https://rpc-1.testnet.orbinum.io
Get node version
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"system_version","params":[]}' \
https://rpc-1.testnet.orbinum.io
Get chain name
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"system_name","params":[]}' \
https://rpc-1.testnet.orbinum.io
Get block number
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"chain_getBlock","params":[]}' \
https://rpc-1.testnet.orbinum.io
Get peers count
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"system_peers","params":[]}' \
https://rpc-1.testnet.orbinum.io
Get runtime version
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"state_getRuntimeVersion","params":[]}' \
https://rpc-1.testnet.orbinum.io
CodeBlockLabs