Using Docker
Deploy a public fullnode (PFN) using Docker containers with automated configuration download and container setup for x86-64 systems.
This section describes how to configure and run your PFN using Docker.
Supported only on x86-64 CPUs
Running aptos-core via Docker is currently only supported on x86-64 CPUs. If you have an Apple M1/M2 (ARM64) Mac, use the source code approach instead.
Prerequisites
- Docker installed
- Sufficient storage space (~50-100GB)
Step 1: Download Configuration Files
Download the fullnode configuration and genesis files for your network:
For Mainnet
mkdir -p mainnet && cd mainnet
mkdir -p data
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/mainnet/configs/fullnode.yaml
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/mainnet/genesis.blob
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/mainnet/waypoint.txt
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/mainnet/genesis_waypoint.txtFor Testnet
mkdir -p testnet && cd testnet
mkdir -p data
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/testnet/configs/fullnode.yaml
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/testnet/genesis.blob
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/testnet/waypoint.txt
curl -O https://raw.githubusercontent.com/movementlabsxyz/movement-networks/main/testnet/genesis_waypoint.txtGenesis files repository
All configuration and genesis files are maintained at https://github.com/movementlabsxyz/movement-networks
Step 2: Run the Fullnode
Start the fullnode using Docker:
docker run --pull=always \
--rm -p 8080:8080 \
-p 9101:9101 -p 6180:6180 \
-v $(pwd):/opt/aptos \
-v $(pwd)/data:/opt/aptos/data \
--workdir /opt/aptos \
--name=aptos-fullnode \
ghcr.io/movementlabsxyz/aptos-node:f24a5bc \
-f /opt/aptos/fullnode.yamlRunning in Background
To run the node in the background, add the -d flag:
docker run --pull=always -d \
--rm -p 8080:8080 \
-p 9101:9101 -p 6180:6180 \
-v $(pwd):/opt/aptos \
-v $(pwd)/data:/opt/aptos/data \
--workdir /opt/aptos \
--name=aptos-fullnode \
ghcr.io/movementlabsxyz/aptos-node:f24a5bc \
-f /opt/aptos/fullnode.yamlView logs with: docker logs -f aptos-fullnode
Sudo access
You may need to prefix the docker command with sudo depending on your configuration.
Step 3: Verify the Node
Check that your node is running:
curl http://localhost:8080/v1You should see a JSON response with the node's status including chain_id, epoch, and ledger_version.
Configuration Details
The downloaded fullnode.yaml contains the following configuration:
base:
role: "full_node"
data_dir: "/opt/aptos/data"
waypoint:
from_file: "/opt/aptos/waypoint.txt"
execution:
genesis_file_location: "/opt/aptos/genesis.blob"
genesis_waypoint:
from_file: "/opt/aptos/genesis_waypoint.txt"
storage:
rocksdb_configs:
enable_storage_sharding: false
full_node_networks:
- network_id: "public"
discovery_method: "none"
listen_address: "/ip4/0.0.0.0/tcp/6182"
seeds:
# Network-specific seed node configuration
...
api:
enabled: true
address: 0.0.0.0:8080
state_sync:
state_sync_driver:
bootstrapping_mode: DownloadLatestStates
continuous_syncing_mode: ApplyTransactionOutputsDon't want to allow inbound connections?
Override the listen address in your config if you don't want other PFNs connecting to yours:
listen_address: "/ip4/127.0.0.1/tcp/6182"Ports
| Port | Purpose |
|---|---|
| 8080 | REST API |
| 9101 | Metrics (Prometheus) |
| 6180 | Internal use |
| 6182 | P2P networking (not exposed by default) |
Docker Tags
The latest tag always refers to the latest official Docker image. You can find the current version at:
- Mainnet: https://github.com/movementlabsxyz/movement-networks/tree/main/mainnet
- Testnet: https://github.com/movementlabsxyz/movement-networks/tree/main/testnet
Next Steps
- Verify your PFN - Check that your node is running correctly
- Archival Node - If you need complete historical data