Run a localnet with Docker
Context
This document provides instructions on how to run a localnet with multiple validator/non-validator nodes. This can be useful if you are developing applications to work on cheqd network, or in automated testing pipelines.
The techniques described here are used in CI/CD contexts, for example, in this repository itself in the test.yml
Github workflow.
Pre-requisites
A clone of the
cheqd-node
repositoryEither a pre-built Docker image downloaded from Github Container Registry, or a custom-built Docker image (the latter is mandatory if you've modified any code in the repository cline).
Docker Engine and Docker Compose (same versions as described in configuration instructions for Docker setup)
A cheqd-node binary to run the network config generation script below.
Instructions
Our localnet setup instructions are designed to set up a local network with the following node types:
3x validator nodes
1x non-validator/observer node
1x seed node
The definition for this network is described in a localnet Docker Compose file, which can be modified as required for your specific use case. Since it's not possible to cover all possible localnet setups, the following instructions describe the steps necessary to execute a setup similar to that using in our Github test
workflow.
Generate localnet configuration (one-time)
Execute the bash script gen-network-config.sh
to generate validator keys and node configuration for the node types above.
You may modify the output if you want a different mix of node types.
Import the generated keys (one-time)
Import the keys generated using the import-keys.sh
bash script:
Bring up the localnet using Docker Compose
Modify the docker-compose.yml
file if necessary, along with the per-container environment variables under the container-env
folder.
Interacting with localnet
The default Docker localnet will configure a running network with a pre-built image or custom image.
Nodes
The five nodes and corresponding ports set up by the default Docker Compose setup will be:
Validator nodes
validator-0
P2P: 26656
RPC: 26657
validator-1
P2P: 26756
RPC: 26757
validator-2
P2P: 26856
RPC: 26857
validator-3
P2P: 26956
RPC: 26957
Seed node
seed-0
P2P: 27056
RPC: 27057
Observer node
observer-0
P2P: 27156
RPC: 27157
You can tests connection to a node using browser: http://localhost:<rpc_port>
. Example for the first node: http://localhost:26657
.
Accounts
Key and corresponding accounts will be placed in the network config folder by the import-keys.sh
script, which are used within the nodes configured above.
When connecting using CLI, provide the --home
parameter to any CLI command to point to the specific home directory of the corresponding node: --home network-config/validator-x
.
CLI commands
See the cheqd CLI guide to learn about the most common CLI commands.
Last updated