Upgrade your PFN
This document outlines the process for updating your PFN with new Aptos releases. All PFNs will need to be updated
when new releases are available. For PFNs running in devnet
, an additional data wipe step is required as devnet
is wiped on every new release.
Source code deployment
If you run your PFN from the aptos-core source code, you can update your PFN by following these steps:
-
Stop your PFN by running the command below (or killing the
aptos-node
process manually):cargo stop aptos-node
-
Fetch the latest release appropriate for your network, e.g.,
devnet
,testnet
, ormainnet
. Be sure to replace[network_branch]
with the appropriate branch name below:git checkout [network_branch] && git pull
-
Rebuild the binary as you did during the initial setup.
-
If your PFN is running in
devnet
, follow the additional steps in the Data Wipe and Reset section below. -
Restart your PFN by running the same deployment command as before. For example:
cargo run -p aptos-node --release -- -f ./fullnode.yaml
(Devnet) Data Wipe and Reset
Only follow these additional steps if your PFN is running in devnet
. Other networks (e.g., testnet
and mainnet
)
don't require this step (as data is never wiped)!
If your PFN is running in devnet
, follow these additional steps after stopping your PFN (and before restarting it!):
-
Delete the data folder (the directory path is what you specified in the configuration file, e.g.,
fullnode.yaml
).- The default data folder is
/opt/aptos/data
.
- The default data folder is
-
Delete the
genesis.blob
file andwaypoint.txt
file (depending on how you configured it, you might not have this file and may instead have awaypoint
directly in your configuration file). -
Download the new genesis.blob file and the new waypoint.
-
Update the configuration file (e.g.,
fullnode.yaml
) with the new genesis.blob and waypoint files. -
Restart your PFN by running the same deployment command as before.
Docker deployment
If you run your PFN from a Docker image, you can update your PFN by:
- Stop your PFN by running the command below:
docker compose down --volumes
- (Devnet only!) If your PFN is running in
devnet
, delete the entire directory which holds your PFN config and data directory. - Re-install and configure those files as during the original setup.
- Restart your PFN by running the same deployment command as before. For example:
docker compose up -d
GCP deployment
If you run your PFN in GCP, follow the steps below to update your PFN. Note: if your PFN is
running in devnet
, an additional data wipe step is required.
Upgrade with data wipe (devnet only)
Only follow these steps if your PFN is running in devnet
. Other networks don't require this step (as data is never wiped)
and we recommend not wiping your data in these networks.
If you are running a devnet
PFN, follow these steps to update:
-
Increase the
era
number inmain.tf
to trigger a new data volume creation, which will start the PFN on a new DB. -
Update the
image_tag
inmain.tf
to contain the new release version. -
Update the Terraform module for the PFN (run this in the same directory of your
main.tf
file):
terraform get -update
- Apply the Terraform changes:
terraform apply
Upgrade without data wipe
If you are not running a devnet
PFN, follow these steps to update:
-
Update the
image_tag
inmain.tf
. -
Update the Terraform module for the PFN (run this in the same directory of your
main.tf
file):
terraform get -update
- Apply the Terraform changes:
terraform apply
# If you didn't update the image tag, terraform will show nothing to change, in this case, force a helm update
terraform apply -var force_helm_update=true