This guide installs a Public Fullnode (PFN). Choose mainnet or testnet by downloading the matching genesis & waypoint files.
1) Prerequisites
- Linux x86_64
- Docker (for the Docker path) or Rust toolchain (for source build)
- 1TB+ SSD recommended for longevity; see official requirements page if needed.
2) Create a PFN working directory
mkdir -p ~/aptos-pfn && cd ~/aptos-pfn
3) Download network files (genesis & waypoint)
Mainnet:
curl -O https://raw.githubusercontent.com/aptos-labs/aptos-networks/main/mainnet/genesis.blob
curl -O https://raw.githubusercontent.com/aptos-labs/aptos-networks/main/mainnet/waypoint.txt
Testnet (use the matching paths under aptos-networks/testnet/):
# Example (confirm the exact filenames in the repo):
# https://github.com/aptos-labs/aptos-networks/tree/main/testnet
4) Create a PFN config
Copy the template and edit paths:
# If building from source, after cloning aptos-core:
# cp config/src/config/test_data/public_full_node.yaml fullnode.yaml
# Alternatively, create a minimal fullnode.yaml and set:
# base:
# waypoint:
# from_file: "./waypoint.txt"
# data_dir: "/var/lib/aptos/data" # choose your data dir
# execution:
# genesis_file_location: "./genesis.blob"
Path A — Run with Docker
A1) Prepare a local config file
Place fullnode.yaml in ~/aptos-pfn (as shown above).
A2) Start the container
docker pull aptoslabs/validator:mainnet
docker run -d --name aptos-pfn -v $(pwd):/opt/aptos/etc -p 8080:8080 -p 9101:9101 aptoslabs/validator:mainnet aptos-node -f /opt/aptos/etc/fullnode.yaml
-p 8080:8080 exposes the REST API.
-p 9101:9101 exposes metrics.
You can swap the image tag to the testnet variant if running on testnet.
Path B — Build and run from source
B1) Clone and build
git clone https://github.com/aptos-labs/aptos-core.git
cd aptos-core
git checkout --track origin/mainnet # or 'testnet'
cargo build -p aptos-node --release
B2) Copy config and run
cp config/src/config/test_data/public_full_node.yaml ~/aptos-pfn/fullnode.yaml
cd ~/aptos-pfn
# Edit fullnode.yaml so:
# - base.data_dir points to your data dir
# - base.waypoint.from_file points to ./waypoint.txt
# - execution.genesis_file_location points to ./genesis.blob
# Start the node
cargo run -p aptos-node --release -- -f ./fullnode.yaml
5) Verify the node
Once running, check health:
curl -s http://localhost:8080/v1 | jq
Or follow the Verify PFN guide from Aptos docs.