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.