How to Run a Node
This guide provides a step-by-step walkthrough for running a Plume Mainnet or Testnet node with Celestia data availability using Docker Compose.
Hardware Requirements
Please visit the Minimum hardware configuration for checking the hardware requirements for running a orbit chain node.
Prerequisites
Run a Celestia DA Server
To integrate Celestia DA with a Plume node, follow the steps below to deploy the DAS server and DA Provider in Docker.
Create your celestia-da-server.yaml
file with the below config to run the Celestia DAS server and DA Provider.
Docker Compose Snippet
services:
celestia-server:
image: ghcr.io/celestiaorg/nitro-das-celestia:v0.5.4
container_name: celestia-server
entrypoint:
- /bin/celestia-server
- --das.enable
- --fallback-enabled
- --celestia.namespace-id
- "00000d048007a33abfeb" # Namespace ID for Plume Mainnet
- --rpc-addr
- "0.0.0.0"
- --rpc-port
- "26657"
- --das.rpc.url
- "http://daprovider:9880"
- --celestia.rpc
- "CELESTIA_ENDPOINT"
- --log-level
- "DEBUG"
ports:
- "1317:1317"
- "9090:9090"
- "26657:26657" # Celestia RPC Port
- "1095:1095"
- "8080:8080"
depends_on:
- daprovider
daprovider:
image: ghcr.io/celestiaorg/nitro:v3.6.8
entrypoint: /usr/local/bin/daprovider
ports:
- "127.0.0.1:9880:9880"
command:
- --das-server.addr
- "0.0.0.0"
- --das-server.port
- "9880"
- --das-server.data-availability.enable
- --das-server.data-availability.rest-aggregator.enable
- --das-server.data-availability.rest-aggregator.urls
- "https://das-plume-mainnet-1.t.conduit.xyz"
- --das-server.data-availability.parent-chain-node-url
- "ETH_RPC_URL"
- --das-server.data-availability.sequencer-inbox-address
- "0x85eC1b9138a8b9659A51e2b51bb0861901040b59" # <- get address from nitro node config
Replace
CELESTIA_ENDPOINT
with your Celestia RPC URL, we recommend you to use Quicknode for getting an Celestia Endpoint.Replace
ETH_RPC_URL
with your Ethereum RPC URL.
Start Celestia DA Server
docker-compose -f celestia-da-server.yaml up -d
Check logs
docker logs celestia-da-server
Run a Plume Nitro Node
Before running Plume Nitro Node, please check if the Celestia DA server is running with the correct Namespace ID.
Create your plume-mainnet.yaml
file with the below config to run the Plume Mainnet node.
Docker Compose Snippet
services:
plume-mainnet:
image: ghcr.io/celestiaorg/nitro:v3.6.8
container_name: plume-mainnet
restart: unless-stopped
ports:
- "8547:8547"
- "6070:6070"
command:
- --chain.id=98866
- --chain.name=conduit-orbit-deployer
- --http.addr=0.0.0.0
- --http.corsdomain=*
- --http.vhosts=*
- --ws.expose-all
- --ws.rpcprefix=/
- --ws.port=8547
- --ws.addr=0.0.0.0
- --ws.origins=*
- --http.api=net,web3,eth,txpool,debug,admin,arb,arbdebug,arbtrace
- --ws.api=net,web3,eth,txpool,debug
- --chain.info-json=[{"chain-id":98866,"parent-chain-id":1,"chain-name":"conduit-orbit-deployer","chain-config":{"chainId":98866,"homesteadBlock":0,"daoForkBlock":null,"daoForkSupport":true,"eip150Block":0,"eip150Hash":"0x0000000000000000000000000000000000000000000000000000000000000000","eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0,"istanbulBlock":0,"muirGlacierBlock":0,"berlinBlock":0,"londonBlock":0,"clique":{"period":0,"epoch":0},"arbitrum":{"EnableArbOS":true,"AllowDebugPrecompiles":false,"DataAvailabilityCommittee":true,"InitialArbOSVersion":32,"InitialChainOwner":"0x5Ec32984332eaB190cA431545664320259D755d8","GenesisBlockNum":0}},"rollup":{"bridge":"0x35381f63091926750F43b2A7401B083263aDEF83","inbox":"0x943fc691242291B74B105e8D19bd9E5DC2fcBa1D","sequencer-inbox":"0x85eC1b9138a8b9659A51e2b51bb0861901040b59","rollup":"0x35c60Cc77b0A8bf6F938B11bd3E9D319a876c2aC","validator-utils":"0x84eA2523b271029FFAeB58fc6E6F1435a280db44","validator-wallet-creator":"0x0A5eC2286bB15893d5b8f320aAbc823B2186BA09","deployed-at":21887008}}]
- --node.da-provider.enable=true
- --node.da-provider.rpc.url=http://celestia-server:26657
- --node.da-provider.with-writer=true
- --node.data-availability.enable=false
- --node.data-availability.rest-aggregator.enable=true
- --node.data-availability.rest-aggregator.urls=https://das-plume-mainnet-1.t.conduit.xyz
- --execution.forwarding-target=https://rpc.plume.org
- --execution.caching.archive
- --parent-chain.connection.url=<ETH_RPC_URL>
- --parent-chain.blob-client.beacon-url=<ETH_BEACON_RPC_URL>
- --node.staker.enable=false
- --node.feed.input.url=wss://relay-plume-mainnet-1.t.conduit.xyz
- --node.sequencer=false
- --execution.rpc.tx-fee-cap=100
- --execution.rpc.gas-cap=500000000
- --metrics
- --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070
- --metrics-server.update-interval=5s
Replace ETH_RPC_URL
and ETH_BEACON_RPC_URL
with your RPC URLs.
ETH_RPC_URL = execution layer client like Geth, Erigon, Nethermind, or Reth
ETH_BEACON_RPC_URL = consensus layer client like Lighthouse, Prysm, Nimbus, or Teku
Start Plume Mainnet Node
docker-compose -f plume-mainnet.yaml up -d
Check logs
docker logs plume-mainnet
Node Snapshot
To speed up syncing your node, you can use the latest Plume mainnet snapshot instead of syncing from genesis. Download and extract the snapshot from the link below before starting your node:
This provides a fast, reliable starting point and ensures your node is aligned with the current Plume mainnet state.
Troubleshooting
Running on MacOS/Linux
If you are running this setup on an Apple Silicon (M1/M2) Mac, add
platform: linux/amd64
to both Celestia Server and Plume Nitro Node service definitions in your YAML files to ensure compatibility.
Last updated