Quickstart

Your journey as a node runner starts here. For recommendations for system setup, please visit Setup & Recommendations.

triangle-exclamation

0. Dependencies

chevron-rightInstall Docker + Docker Compose V2hashtag
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# Add Docker’s official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Add Docker repo
echo \
  "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker Engine + CLI + Compose plugin
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
chevron-rightApache Utilshashtag

sudo apt install apache2-utils

chevron-rightMakehashtag

sudo apt install make

chevron-rightGithashtag

sudo apt install -y git

circle-info

Ensure you've read and satisfied Setup & Recommendations before doing quickstart!

1. Clone the deployments repo

The Canopy deployments repositoryarrow-up-right is the official source for setting up and operating validator infrastructure.

It contains the configuration, scripts, and monitoring tools required to participate in the Canopy network.

circle-check

2. Run the setup script to create the keys for your canopy validator

This will prompt you to input:

  1. Stack type: select option (2)

  2. A password: to encrypt the validator key in the keystore

  3. A nickname: for your validator key in the keystore, which will be the identity for your validator operator processes.

  4. A domain: With a DOMAIN variable defined, traefik will expose and validate SSL on this endpoints externally using the prefix shown in the first running section

  5. An email: This is simply the email address used when registering an account with an ACME certificate authority like Let’s Encrypt. We use this env variable to request SSL ACME certificate during traefik HTTPS validationarrow-up-right.

circle-exclamation

3. Configure Grafana

triangle-exclamation

4. Configure your DNS

Your domain should point to your production server using wildcard subdomains:

Domain propagation can take some time! Check it with the following commands:

5. Set up alerting (optional)

To receive infrastructure and canopy alerts, configure the Discord and PagerDuty notification channels:

/deployments/monitoring-stack/monitoring/grafana/provisioning/alerting /discord-alert.yaml

Pagerduty

/deployments/monitoring-stack/monitoring/grafana/provisioning/alerting /pagerduty-alert.yaml

6. Install Loki

Installing the loki-docker-driver lets your Docker containers stream logs directly to Loki, enabling real-time log aggregation and search in Grafana.

It's essential for end-to-end observability in your monitoring stack.

7. Run Canopy

Starting Canopy automatically pulls a snapshot of the latest blockchain.

circle-check
circle-exclamation

8. Explore Setup

With Canopy running, it is recommended for you to familiarize yourself with the created endpoints:

  • Grafana: https://monitoring.<YOUR_DOMAIN>

  • Web wallet for CNPY: https://node1.<YOUR_DOMAIN>/wallet

  • Block Explorer for CNPY: https://node1.<YOUR_DOMAIN>/explorer

  • Web wallet for CNRY: https://node2.<YOUR_DOMAIN>/wallet

  • Block Explorer for CNRY: https://node2.<YOUR_DOMAIN>/explorer

9. Sync the blockchain

While the snapshot is pretty close to the top of the blockchain, some syncing will be required in most cases.

Syncing status may be observed in the monitoring tab of your web wallet as well as logs and rpc.

⚠️ Importantly, both CNPY and CNRY should be fully synced and stable before staking.

If there's any sign of corruption or 'stuck' node or if there's any doubt, contact the community in discord.

10. Create an 'output' private key

Go to https://node1.<YOUR_DOMAIN>/wallet

Press "New Private Key" and fill out the form:

circle-info

Nickname: name to identify the new key

Password: used to encrypt the new key

This new key will later receive your validator rewards. It is recommended to download the keyfile.json and backup using the "Download Keys" button.

11. Get CNPY

circle-exclamation

12. Stake CNPY

At https://node1.<YOUR_DOMAIN>/wallet: click the STAKE button to initiate a STAKE transaction

Parameters:

  • Account: <nickname from step 2>

    • Important: ⚠️ use the key from step 2 not step 12 ⚠️

    • This account should be the 'funded' account from step 13

    • This is the operator address, where subsequent validator transactions like (edit-stake and unstake) should be sent from.

  • Delegate: false

    • Delegates are not active validators so is not applicable for this guide

  • Committees: 1,2

    • Chain IDs where stake should be allocated

  • Amount: CNPY to stake (6 decimals)

    • Leave a few CNPY unstaked for various transactions

  • Withdrawal: false to auto-compound rewards

    • You may use true to withdrawal the rewards automatically (comes with penalty)

  • Net-addr: tcp://<YOUR_DOMAIN>

    • validator's TCP address (<YOUR DOMAIN> defined in step 4)

  • Output: <nickname from step 12>

    • Important: ⚠️ use the key from step 12 not step 2 ⚠️

    • This address to receive staking rewards (recommended: use key from step 16)

  • Signer: <nickname from step 2>

    • Account that signs the transaction

  • Memo: optional

  • Txn-fee: <default is pre-filled>

    • transaction fee (default is pre-filled)

  • Password: <password from step 2>

    • Password of signer account

If successful, you'll see something like:

13. Watch for 10 minutes

  • If STAKED STATUS remains STAKED then it's a good sign that your Validator is online and healthy

circle-info

See Manage for monitoring and management details

Last updated