Run a Delivery node from the CLI
Use the Delivery module to run a Logos Delivery node on the CLI
This document is accurate for Testnet v0.3.
This procedure covers how to install and start a logos-delivery-module node connected to the Logos testnet (v0.3). It is intended for node operators who want to run their own Delivery node and join the network.
- A supported OS:
- Linux
- macOS
- Network access so both node instances can reach each other.
- Inbound ports open:
- TCP
30303: P2P (tcpPort). - UDP
30303: P2P over QUIC, on by default at thetcpPortnumber. - UDP
9000: discv5 discovery (discv5UdpPort).
- TCP
logosctlinstalled.- Install it by running
curl -fsSL https://raw.githubusercontent.com/logos-co/logos-docs/main/resources/scripts/install-logosctl.sh | sudo sh
- Install it by running
curland a shell
What to expect
- You can start a
delivery_modulenode connected to the Logos Network. - You can confirm the node is running and has a live network identity by querying its discv5 ENR.
- You can configure the node for a different network preset by swapping the config file passed to
createNode.
Step 1: Install and start the daemon
-
Start
logosctl:logosctl daemon start -
In a new terminal window with the same user, refresh the official module catalogue:
logosctl catalog refresh -
Download and install the delivery module:
logosctl package install delivery_module \--version 0.3.0 \--yesnoteIndividual module package versions (for example, delivery module version 0.3.0) are pinned independently and do not necessarily match the testnet version number (0.3.0).
-
Write the testnet config:
cat > logos-test.json <<EOF{"entryLayer": "kernel","kernelConf": {"preset": "logos.test","relay": true,"logLevel": "INFO","tcpPort": 30303,"discv5UdpPort": 9000,"discv5Discovery": true,"nat": "extip:<public-ip>"}}EOFlogos-test.jsonincludes the following fields:
Field Purpose entryLayerDelivery stack layer; use kernelfor a node-operator servicekernelConfKernel node configuration kernelConf.presetNetwork preset kernelConf.relayEnable the Relay protocol kernelConf.logLevelLog verbosity kernelConf.tcpPortPublic TCP P2P port kernelConf.discv5UdpPortPublic UDP discovery port kernelConf.discv5DiscoveryEnable discv5 discovery kernelConf.natPublic IP advertisement mode
Step 2: Load the module and boot the node
Run these commands for your path.
-
Load the delivery module:
logosctl module load delivery_module -
Create the node with the testnet config:
logosctl call delivery_module createNode @logos-test.json -
Start the node:
logosctl call delivery_module start
Step 3: Verify the node is running
Query the node's discv5 ENR to confirm it booted with a network identity and joined the Logos Testnet.
-
Verify the status of the node:
logosctl daemon status -
Run the health query:
logosctl call delivery_module getNodeInfo MyENR --json | jqExpected output:
{"method": "getNodeInfo","module": "delivery_module","result": {"error": null,"success": true,"value": "enr:-LW4QItc5tHj3rWoFaaQIUWvaBYijDf2TJKW83SNdyylJVAYVoUlBl1h5..."},"status": "ok"}- The
"value"field is your node's live ENR and will differ from the example above. "success": trueand"status": "ok"confirm the delivery node is running.
- The
-
Stop the node when finished:
logosctl daemon stop
Troubleshooting delivery node setup
Why does logosctl call return an error after module load?
The daemon may not have finished starting. Wait a few seconds after logosctl daemon start returns and retry. For Path A, confirm the container is running with docker ps before calling docker exec logos-node logosctl ….