Movement Labs LogoMovement Docs
Nodes/Full Node/Run a Full Node/Deploy a Full Node

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.txt

For 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.txt

Genesis 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.yaml

Running 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.yaml

View 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/v1

You 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: ApplyTransactionOutputs

Don'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

PortPurpose
8080REST API
9101Metrics (Prometheus)
6180Internal use
6182P2P 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:

Next Steps