Introduction
These instructions will show you how to upgrade nodes installed as systemd instances.
Please read the instructions all the way through first, before applying the changes.
Prepare to update
First, if you haven’t already done so, ensure that you have backed up your keystore file (e.g. keystore.ks
). This key file contains the private key that determines your node’s unique address. If anything goes wrong in the update process, if you have your key file, you can always reinstall the node from scratch and use it to recover access to your node with its previous network identity.
Next, you may want to consider using a backup node to perform a switch to the updated node with minimal interruption (especially if running a validator node) – or to provide a quick recovery if something goes wrong during the update. See our recommendations for Maintaining Uptime for more.
Download the latest node distribution
Go to https://github.com/radixdlt/babylon-node/releases and look for the entry with the [ Latest release ] marker.
Download the corresponding node distribution zip file and the native library file (see the Node Setup instructions “Downloading the Radix node software” section for details)
Unzip both files and place them in some directory on your system (e.g.
/opt/radixdlt/babylon-node/core-v1.2.1
), again, this is analogous to node setup docs
An example folder structure could looks like this:
tree /opt/radixdlt/babylon-node -L 2
/opt/radixdlt/babylon-node
├── core-v1.2.0
│ ├── bin
│ └── lib
└── libcorerust.so
├── core-v1.2.1
│ ├── bin
│ └── lib
└── libcorerust.so
where core-v1.2.0
is the old (current) version and core-v1.2.1
is the new one. Make sure to put a correct libcorerust.so
file in a new directory! Always use the one that comes with the rest of the node dist, don’t copy it from the previous version!
Make sure that all new files have a correct owner:
sudo chown -R radixdlt:radixdlt /opt/radixdlt
Stop the node process
Before upgrading the software, you’ll need to shut the node down:
sudo systemctl stop babylon-node
Update the systemd unit file
We can now point the systemd service to use a new binary. Update the ExecStart=
line in your systemd unit file (e.g. /etc/systemd/system/babylon-node.service
) to point to a directory you’ve created in the previous step. E.g.:
ExecStart=/opt/radixdlt/babylon-node/core-v1.2.1/bin/core -config=/srv/radixdlt/babylon-mainnet/mainnet.config
And reload the configuration:
sudo systemctl daemon-reload
Save your existing nginx configuration
If you still have an existing nginx
configuration from your previous installation then it’s a good idea to move it to another location, e.g.:
sudo mv babylon-nginx-fullnode-conf.zip babylon-nginx-fullnode-conf.zip.spare
Download the latest nginx configuration
Go to https://github.com/radixdlt/babylon-nginx/releases and look for the entry with the [ Latest release ] marker.
Download the
babylon-nginx-fullnode-conf.zip
file.
Install the new nginx configuration
Unzip the nginx configuration. (You can overwrite all the files)
unzip babylon-nginx-fullnode-conf.zip
Copy the files to the nginx setup directory.
sudo cp -r conf.d/ /etc/nginx/
And now copy the nginx configuration files for your node type. If you are running a full node then execute:
sudo cp nginx-fullnode.conf /etc/nginx/nginx.conf
Restart nginx and the node
sudo systemctl restart babylon-node
sudo systemctl restart nginx
Verify that the node has been upgraded
You can check the version of the node software by sending an information request using curl
:
curl -k -u admin:nginx-password "https://localhost/system/version"
The response is a JSON string that carries the version number as its payload, e.g.:
{"version":"v1.2.1"}