- Common release artifacts:
- Binary artifacts (part of the release):
dcld
: The binary used for both running a node and interacting with it.cosmovisor
: A small process manager that supports an automated process of Cosmos SDK based application upgrade (dcld
upgrade in our case).
- The service configuration file
cosmovisor.service
(either part of the release or deployment folder).
- Binary artifacts (part of the release):
- Additional generated data (for validators and observers):
- Genesis transactions file:
genesis.json
- The list of alive peers:
persistent_peers.txt
with the following format:<node id>@<ip:port>,<node2 id>@<ip:port>,...
.
- Genesis transactions file:
Please check Get the artifacts for the details how to get them.
Minimal:
- 1GB RAM
- 25GB of disk space
- 1.4 GHz CPU
Recommended (for highload applications):
- 2GB RAM
- 100GB SSD
- x64 2.0 GHz 2v CPU
Current delivery is compiled and tested under Ubuntu 20.04 LTS
so we recommend using this distribution for now.
In future, it will be possible to compile the application for a wide range of operating systems (thanks to Go language).
Notes:
- A part of the deployment commands below will try to enable and run
cosmovisor
as a systemd service, it means:
- that will require
sudo
for a user- you may consider to use non-Ubuntu systemd systems but it's not officially supported for the moment
- in case non systemd system you would need to take care about
cosmovisor
service enablement and run as well
Required if a host has been already used in another DCLedger setup.
Cleanup (click to expand)
sudo systemctl stop cosmovisor
sudo rm -f "$(which cosmovisor)"
sudo systemctl stop dcld
sudo rm -f "$(which dcld)"
rm -rf "$HOME/.dcl"
NOTE: Some of the commands above may fail depending on whether or not cosmovisor
was used in the previous setup.
- download
dcld
,cosmovisor
andcosmovisor.service
from GitHub release page - Get setup scripts either from release page or from repository if you need latest development version.
- (for validator and observer) Get the running DCLedegr network data:
genesis.json
can be found in a<chain-id>
sub-directory of the persistent_chains folderpersistent_peers.txt
: that file may be published there as well or can be requested from the DCLedger network admins otherwise
See this document for running node in existing network. Also, note that if the 3rd option is used, then a version at the time of genesis needs to be utilized.
Example (click to expand)
# release artifacts
curl -L -O https://github.com/zigbee-alliance/distributed-compliance-ledger/releases/download/<release>/dcld
curl -L -O https://github.com/zigbee-alliance/distributed-compliance-ledger/releases/download/<release>/cosmovisor
curl -L -O https://github.com/zigbee-alliance/distributed-compliance-ledger/releases/download/<release>/cosmovisor.service
# deployment scripts
# from release (if available)
curl -L -O https://github.com/zigbee-alliance/distributed-compliance-ledger/releases/download/<release>/run_dcl_node
# OR latest dev version
curl -L -O https://raw.githubusercontent.com/zigbee-alliance/distributed-compliance-ledger/master/deployment/scripts/run_dcl_node
# genesis file
curl -L -O https://raw.githubusercontent.com/zigbee-alliance/distributed-compliance-ledger/master/deployment/persistent_chains/<chain-id>/genesis.json
# persistent peers file (if available)
curl -L -O https://raw.githubusercontent.com/zigbee-alliance/distributed-compliance-ledger/master/deployment/persistent_chains/<chain-id>/persistent_peers.txt
Note:
run_dcl_node
script adds the cosmovisor-controlled directory containing the current version ofdcld
binary to$PATH
of current user. To do this the script adds a line doing the corresponding$PATH
assignment to$HOME/.profile
file. If for some reason it is not effective for your environment, please modify the corresponding line in the script in the way you need or just comment out the corresponding line and manually add$HOME/.dcl/cosmovisor/current/bin
to$PATH
of current user afterrun_dcl_node
script is executed (see below).
- put
cosmovisor
binary in a folder listed in$PATH
(e.g./usr/bin/
) - set owner of
cosmovisor
binary to the user who will be used forcosmovisor
service to run as - set executable permission on
cosmovisor
binary for owner
Example for ubuntu user (click to expand)
sudo cp -f ./cosmovisor -t /usr/bin
sudo chown ubuntu /usr/bin/cosmovisor
sudo chmod u+x /usr/bin/cosmovisor
- ports
26656
(p2p) and26657
(RPC) should be available for TCP connections - if you use IP filtering rules they should be in sync with the persistent peers list
Example for Ubuntu (click to expand)
sudo ufw allow 26656/tcp
sudo ufw allow 26657/tcp