Skip to main content
This page covers full/RPC nodes. Validator operators should consider the Slow & Safe Upgrade (rolling replacement with key rotation) described in the official guide.

Before you start

  • Check the latest version and release notes on the GitHub Releases page.
  • Plan a maintenance window if you expose RPC to users.
  • The procedure is identical for Mainnet and Turing; your --chain flag selects the network.

A) Upgrade — Pre-built binary

Replace the existing avail-node binary with the latest release, then restart the service.
# 1) Stop the service
sudo systemctl stop avail.service

# 2) Download & extract the latest binary (choose the right file for your OS/arch)
cd /usr/local/bin
curl -L -O https://github.com/availproject/avail/releases/download/<LATEST-TAG>/<YOUR-SYSTEM-BIN>.tar.gz
tar -xzvf <YOUR-SYSTEM-BIN>.tar.gz

# 3) Replace the old binary (keep a backup just in case)
sudo mv avail-node avail-node.bak || true
sudo mv ./avail-node /usr/local/bin/avail-node
sudo chmod +x /usr/local/bin/avail-node

# 4) Start and follow logs
sudo systemctl start avail.service
journalctl -u avail.service -f -o cat
Some packages/bundles name the binary data-avail. If that’s your case, replace avail-node in the commands above with data-avail.

B) Upgrade — Docker

# 1) Pull the new image tag
docker pull availj/avail:<LATEST-TAG>

# 2) Stop & remove the existing container (name it if you didn't before)
docker stop avail && docker rm avail

# 3) Start a new container with the same volumes/ports
docker run --name avail --restart=on-failure -d   -v /root/avail/node-data:/da/node-data   -p 9944:9944 -p 30333:30333   docker.io/availj/avail:<LATEST-TAG>   --chain mainnet -d ./output --name "<your-node-name>"
# For Turing, switch --chain to `turing` (or provide an explicit Turing chainspec path if needed)

C) Upgrade — Build from source

# 1) Ensure Rust toolchain is installed
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env

# 2) Update sources and build
cd /opt/avail || git clone https://github.com/availproject/avail.git /opt/avail && cd /opt/avail
git fetch --tags
git checkout <LATEST-TAG>
cargo build --release --locked

# 3) Replace the running binary and restart
sudo systemctl stop avail.service
sudo install -m 0755 ./target/release/avail-node /usr/local/bin/avail-node
sudo systemctl start avail.service
journalctl -u avail.service -f -o cat

Verify the upgrade

  • Logs show the new version near startup (e.g., version 2.x.x-<git-hash>).
  • Telemetry: find your node by --name on the correct network tab and confirm the reported version.
  • RPC (if enabled): curl http://127.0.0.1:9944 -H 'Content-Type: application/json' -d '{"id":1,"jsonrpc":"2.0","method":"system_version","params":[]}'
After protocol/runtime upgrades, nodes running an outdated client may fail to sync or build blocks. Keep up with release announcements and upgrade promptly.