System Requirements
What You Need
To ensure a smooth experience, considering the following:
- Hardware Configuration: Verify that your hardware meets the Avail node's requirements.
- Methods to Run a Node: Familiarize yourself with the different Avail node types and the methods to run them.
- Prerequisites & Installation: Ensure you have the necessary prerequisites and packages installed on your machine.
- Notable System Configuration: Pay attention to system configuration details, including port settings and disk setup.
Hardware
This is the hardware configuration required to set up an Avail node:
Component | Minimum | Recommended |
---|---|---|
RAM | 4GB | 8GB |
CPU (amd64/x86 architecture) | 2 core | 4 core |
Storage (SSD) | 20-40 GB | 200-300 GB |
While we do not favor any operating system, more secure and stable Linux server distributions (like CentOS) should be preferred over desktop operating systems (like Mac OS and Windows). Also, the minimum storage requirements will change over time as the network grows. It is recommended to use more than the minimum requirements to run a robust full node.
Methods to Run an Avail Node
There are two primary methods to run an Avail node, each with its own set of instructions:
Using Binaries: You can follow the instructions provided here for setting up an Avail node using binary releases. This method is suitable for users who prefer manual installation and configuration. For reference, you can also explore the GitHub Releases page for binary releases.
Using Docker: Alternatively, if you're comfortable with Docker, you can pull Avail node images from the DockerHub Repository. Docker provides a convenient way to containerize and deploy Avail nodes.
The Avail team offers official Docker images specifically designed for running nodes on the Goldberg testnet.
Setting Up Your Environment
The node deployment guides provide specific instructions tailored for Linux distributions with apt support, such as Debian. Additionally, it's common practice to run nodes on cloud servers.
Installation
- Pre-Built Release
- Build from Source
- Docker
Download the client binary and config file for the node you want to run:
Node Type | Repository Name | Latest Release |
---|---|---|
Full Node | avail | v1.10.0.0 |
Common Dependencies
Before proceeding, install the required dependencies:
sudo apt update
sudo apt install make clang pkg-config libssl-dev build-essential
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
rustc --version # Verify Rust installation by displaying the version
Clone the node repository you would like to run:
Node Type | Build Steps |
---|---|
Full Node | cargo build --release -p data-avail |
Relay Node | cd avail-light-relay && cargo build --release |
Bootstrap Node | cd avail-light-bootstrap && cargo build --release |
The available Docker images are compatible exclusively with Linux/amd64 or x86_64 based CPUs.
Install Docker
Node Type | Docker Repository Name | Latest Version |
---|---|---|
Full Node | availj/avail | v1.10.0.0 |
Notable Configurations
Ports
Port 30333 is typically required for peer exchange. Ensure that this port, along with any others needed for machine access, is open when configuring your firewall or your cloud provider's security groups.
Disk Setup
You'll typically have a root partition for the operating system on one device, and one or more separate devices for storing blockchain data. In these guides, we'll assume the additional storage device is mounted at /mnt/avail
.
Before mounting the additional disk, it's advisable to format it and create a filesystem. For guidance, you can follow these instructions.
Here's an example of working with a 300 GB device located at /dev/nvme1n1
. Mount the device with these steps:
sudo mkdir /mnt/avail
sudo mount -a /dev/nvme1n1 /mnt/avail
Use df -h
to verify the successful configuration.
If everything looks good, create sub-directories for data and configuration files:
sudo mkdir /mnt/avail/config
sudo mkdir /mnt/avail/state
sudo mkdir /mnt/avail/keystore
Depending on your use case and operating system, you may need to add an entry to /etc/fstab
to ensure the device remains mounted after system reboots.
In our scenario, we'll proceed as follows:
# Use blkid to get the UUID for the device that we're mounting
blkid
# Edit the fstab file and add a line to mount your device
# UUID={your uuid} /mnt/data {your filesystem} defaults 0 1
sudo emacs /etc/fstab
# you can use any test editor based on your preference to edit the file here we have used emacs.
# use this to verify the fstab actually works
sudo findmnt --verify --verbose