Running a Coqnet Node on Avalanche

Learn how to run a Coqnet Node.

This guide is part of a series covering the end-to-end process of participating in Coqnet as a hardware provider. It focuses on setting up and running a Coqnet node on the Avalanche Mainnet.

This guide is intended for developers familiar with Linux-based systems and command-line operations.

This guide is specifically for hardware providers. If you’re looking to become a validator by staking COQ, refer to the COQNet CLIMAX: How to Stake COQ and Become a Validator


Hardware Requirements

Below are the minimum hardware specifications for running a Coqnet node on Fuji testnet and Mainnet.

Component

Fuji Testnet

Mainnet

CPU vCores

4 (2 dedicated)

4 (2 dedicated)

RAM

4GB

8GB

Storage

200GB SSD

1000GB NVMe SSD

Network In/Out

100Mb/100Mb

5Gb/5Gb

Operating System

Ubuntu 22.04 LTS

Ubuntu 24.04 LTS

While ARM64 binaries are available, we recommend using x86 (AMD64) for Coqnet nodes at this time.

Over time, storage, CPU, and memory requirements will increase as the blockchain grows. These are baseline numbers for getting started today and are subject to change. Using a system that can be easily expanded is highly recommended. Nearly half of the recommended storage is allocated for the P-Chain.


Suggested Hosting Providers


Installing AvalancheGo

The first step is installing AvalancheGo, the client software for running Coqnet nodes. You can install it either manually or via the install script.

Before installing AvalancheGo via your preferred method, we recommend you read on below for your respective install method.

Once AvalancheGo is installed, proceed to configure your node using one of the methods below.


Manual Installation Steps

If you installed AvalancheGo manually, follow these steps to configure your node:

1

Download and Install the Subnet EVM Binary

Run the following commands to download and place the Subnet EVM binary in the correct directory:

# Fetch the latest release download URL and download the tarball
curl -s https://api.github.com/repos/ava-labs/subnet-evm/releases/latest | jq -r '.assets[] | select(.name | test("^subnet-evm_[0-9.]+_linux_amd64\\.tar\\.gz$")) | .browser_download_url' | xargs curl -L -O

# Create the plugins directory if it doesn't exist
mkdir -p "$HOME/.avalanchego/plugins"

# Extract the subnet-evm binary from the tarball
tar -xzf subnet-evm_*_linux_amd64.tar.gz subnet-evm

# Move the extracted binary to the plugins directory with a new name
mv subnet-evm "$HOME/.avalanchego/plugins/knwdavfavsrcds7PKZmVBd5iZGXkhRQsC9xUHzSNHdegDCWBL"

# Optionally, clean up the downloaded tarball
rm subnet-evm_*_linux_amd64.tar.gz
2

Start the Node with Required Flags

Add the flags --partial-sync-primary-network and --track-subnets with Coqnet’s Subnet ID to the startup command. Your command should look like this:

./avalanchego-<VERSION>-linux/avalanchego --partial-sync-primary-network --track-subnets=5moznRzaAEhzWkNTQVdT1U4Kb9EU7dbsKZQNmHwtN5MGVQRyT

For Fuji Testnet, use the Subnet ID 4YurNFwLzhGUrYyihDnUUc2L199YBnFeWP3fhJKmDDjkbvy8G

For more details on available configurations, see the AvalancheGo Configs and Flags documentation.

3

Set Up Automatic Startup

Configure your preferred method to ensure the node starts automatically by running the startup command on system boot. For example, you can use systemd to create a service unit file.


Script Installation Steps

If you used the AvalancheGo install script, follow these steps to configure your node:

1

Stop the AvalancheGo Process

Stop the avalanchego service before making changes:

sudo systemctl stop avalanchego
2

Download and Install the Subnet EVM Binary

Run the following commands to download and place the Subnet EVM binary in the correct directory:

# Fetch the latest release download URL and download the tarball
curl -s https://api.github.com/repos/ava-labs/subnet-evm/releases/latest | jq -r '.assets[] | select(.name | test("^subnet-evm_[0-9.]+_linux_amd64\\.tar\\.gz$")) | .browser_download_url' | xargs curl -L -O

# Create the plugins directory if it doesn't exist
mkdir -p "$HOME/.avalanchego/plugins"

# Extract the subnet-evm binary from the tarball
tar -xzf subnet-evm_*_linux_amd64.tar.gz subnet-evm

# Move the extracted binary to the plugins directory with a new name
mv subnet-evm "$HOME/.avalanchego/plugins/knwdavfavsrcds7PKZmVBd5iZGXkhRQsC9xUHzSNHdegDCWBL"

# Optionally, clean up the downloaded tarball
rm subnet-evm_*_linux_amd64.tar.gz
3

Update the Configuration File

Add the following attribute to the configuration file located at $HOME/.avalanchego/configs/node.json:

{
    "track-subnets": "5moznRzaAEhzWkNTQVdT1U4Kb9EU7dbsKZQNmHwtN5MGVQRyT",
    ... // rest of config file
}

For Fuji Testnet, use the Subnet ID 4YurNFwLzhGUrYyihDnUUc2L199YBnFeWP3fhJKmDDjkbvy8G

4

Enable Partial Sync in the Unit File

Edit the unit file located at /etc/systemd/system/avalanchego.service to include the --partial-sync-primary-network flag.

Simply add the --partial-sync-primary-network flag to the ExecStart command in the [Service] section. The updated file should look like this:

[Unit]
Description=AvalancheGo systemd service
StartLimitIntervalSec=0

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/home/ubuntu/avalanche-node/avalanchego --config-file=/home/ubuntu/.avalanchego/configs/node.json --partial-sync-primary-network
LimitNOFILE=32768
Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target

Why Updating the Unit File instead of the Configuration File?

Adding this flag to the unit file ensures it remains active even if the config file is reset or changed, preventing your storage from being overwhelmed by C-Chain data during restarts.

5

Reload and Restart the Service

Reload the systemd configuration and restart the avalanchego service:

sudo systemctl daemon-reload
sudo systemctl start avalanchego

And that's it! You now have a working Coqnet node running on the Avalanche Mainnet.


Monitoring Your Node

Once your node is running, you can monitor its status using standard systemctl commands:

sudo systemctl status avalanchego
journalctl -u avalanchego -f

Checking Sync Progress

To check the progress of syncing on the Avalanche Mainnet, you can execute the following command.

curl -X POST -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"info.isBootstrapped","params":{"chain":"EyWDF1cGmMKXRi4d5Mb1kVNnB1zHWvMPGQM5uHgizNGFTvsTn"}}' 127.0.0.1:9650/ext/info

Conclusion

If you encounter any issues, refer to the AvalancheGo documentation or reach out to GoGoPool support for assistance on Discord or via Live Support Chat on the GoGoPool website.

Last updated