---
# System prepended metadata

title: Installing Public Fullnode for Aptos Mainnet (Only for X86-64)

---

# Installing Public Fullnode for Aptos Mainnet (Only for X86-64)

## 1. Install Docker and Docker Compose.
```
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
sudo apt remove docker docker-engine docker.io containerd runc
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl status docker
sudo usermod -aG docker ${USER}
```

> Exit terminal and re-login.
```
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version
```

## 2. Install Public Fullnode.
```
cd
mkdir mainnet && cd mainnet
mkdir data
curl -O https://raw.githubusercontent.com/aptos-labs/aptos-core/mainnet/docker/compose/aptos-node/fullnode.yaml
curl -O https://raw.githubusercontent.com/aptos-labs/aptos-networks/main/mainnet/waypoint.txt
curl -O https://raw.githubusercontent.com/aptos-labs/aptos-networks/main/mainnet/genesis.blob
```

> Change "/ip4/0.0.0.0/tcp/6182" to "/ip4/0.0.0.0/tcp/6180" in fullnode.yaml and start Public Fullnode.
```
docker run --pull=always --rm -p 8080:8080 -p 9101:9101 -p 6180:6180 -v $(pwd):/opt/aptos/etc -v $(pwd)/data:/opt/aptos/data --workdir /opt/aptos/etc --name=aptos-fullnode aptoslabs/validator:mainnet aptos-node -f /opt/aptos/etc/fullnode.yaml
```

> Use ctrl+c exit process.

## 3. Create a static identity.
```
docker run -it aptoslabs/tools:devnet /bin/bash
```

> Open a new terminal.
```
cd
cd mainnet
aptos key generate --key-type x25519 --output-file ./private-key.txt
aptos key extract-peer --host your_IP_address:6180 --public-network-key-file ./private-key.txt.pub --output-file ./peer-info.yaml
```

> Use private-key.txt and peer-info.yaml, insert private-key and peer-id in fullnode.yaml like format below.
```
    full_node_networks:
    - network_id: "public"
      discovery_method: "onchain"
      identity:
        type: "from_config"
        key: "C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D"
        peer_id: "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
```

> Exit previous terminal.
## 4. Restart Public Fullnode with a static identity.
```
docker run --pull=always --rm -p 8080:8080 -p 9101:9101 -p 6180:6180 -v $(pwd):/opt/aptos/etc -v $(pwd)/data:/opt/aptos/data --workdir /opt/aptos/etc --name=aptos-fullnode aptoslabs/validator:mainnet aptos-node -f /opt/aptos/etc/fullnode.yaml
```