Skip to content

Latest commit

 

History

History
154 lines (117 loc) · 5.53 KB

File metadata and controls

154 lines (117 loc) · 5.53 KB

Running a DCLedger Node manually (prerequisites)

Components

  • 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).
  • 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>,....

Please check Get the artifacts for the details how to get them.

Hardware requirements

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

Operating System

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

Deployment Preparation

(Optional) System cleanup

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.

Get the artifacts

  • download dcld, cosmovisor and cosmovisor.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 folder
    • persistent_peers.txt: that file may be published there as well or can be requested from the DCLedger network admins otherwise
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 of dcld 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 after run_dcl_node script is executed (see below).

Setup DCL binaries

  • 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 for cosmovisor 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

Configure the firewall

  • ports 26656 (p2p) and 26657 (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