Aztec Sequencer- Public Testnet
May 27th, 2025

This is a full guide to setup an Aztec Sequencer on Public Testnet, using Docker Compose and your own Sepolia Ethereum node (same device)

Aztec Network- A privacy first Layer 2 on Ethereum

Aztec is a zk-rollup allowing developers to build decentralised applications that preserve user privacy without compromising security or decentralisation.

Aztec team co-developed Plonk, a highly efficient and universal zk-SNARK proving system that has since become foundational across the ZK ecosystem. Plonk’s design drastically reduces proof size and verification time, making it one of the first ZK systems viable for real-world applications on Ethereum.

Unlike most Layer 2s today, where sequencer’s are centralised (often a single entity), Aztec is committed to launching with a fully decentralized, permissionless node operator set. This means solo stakers and independent operators can meaningfully participate in the network from day one—validating blocks, publishing encrypted state updates, and helping secure the rollup.

Aztec Sequencer Node

Public Testnet Live from 2025-05-01
Public Testnet Live from 2025-05-01

More information from Aztec official docs above, this guide is designed for Solo stakers with their own nodes and using Docker compose for easy deployment.

Requirements

Ethereum Full Node - Sepolia Network: Reported Working clients (so far) are Geth + Nimbus, Geth + Lodestar

Hardware Requirements: Aztec Only + Eth Node

  • CPU: 8 Cores (Aztec) + 4 Cores (Eth)

  • RAM: 16 GB + 16 GB (Eth)

  • Storage: 1TB + 1TB (Eth Sepolia)

    These are min requirements for Aztec Node for testnet, network connection of at least 25 Mbps up/down.

ETH Address: Recommend to create a fresh new Ethereum address (EOA) for this testnet, you need the “Private Key string” and “0x address”. Can easily create with Metamask and export the private key to get the correct format (not Seed words).

Ports: Open Aztec P2P port 40400 tcp/udp on firewall and Port Forward on your router for discovery.

1. Install Dependencies

Install Dependencies

sudo apt update 
sudo apt install git curl -y

Install Docker & Docker compose plugin

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Remove the install script and add $USER to docker group, to allow use without sudo

sudo rm -r get-docker.sh
sudo usermod -aG docker $USER

Restart the device to take effect.

2. Setup Ethereum Node - Sepolia

Ignore this Step if you already have your own full node, this guide is setup to run the node on the same device and allow docker to communicate with it.

Optional: (but not recommended) to use a public RPC, however the RPC requirements are high and can be very costly. Edit the appropriate variables with your endpoint API.

Easy Way- Eth Docker

Eth Docker is a great deployment tool to easily spin up Ethereum Nodes (especially for Testing)

Download eth docker

cd ~ && git clone https://github.com/eth-educators/eth-docker.git && cd eth-docker

Configure

./ethd config

For this deployment we only need the execution and consensus node, no validator is required, minimum configuration select: Sepolia Network > Ethereum RPC node >

Start Eth Node

./ethd up -d

Expose Ports

You must open 8545 and 5052 internally, if using eth-docker you can open in the .yml files by editing like so;

Geth: geth.yml

Nimbus: nimbus-cl-only.yml

Allow to Sync: with a fast NVMe SSD Storage, Sepolia Testnet data can sync overnight.

To check sync: this will return false when fully synced, or true while still syncing

curl -X POST -H "Content-type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545

3. Setup Aztec Working Folder

Create Working folder for Aztec

mkdir -p aztec/data

Set permissions

chmod 700 aztec/data

Create Environment file

cd aztec
nano .env

Copy to Environment file: fill in the parts in < >

DATA_DIRECTORY=./data
COINBASE=< ADDRESS HERE >
LOG_LEVEL=debug
YOUR_RPC_ENDPOINT="http://localhost:8545"
YOUR_CONSENSUS_ENDPOINT="http:localhost:5052"
YOUR_VALIDATOR_PRIVATE_KEY=< PRIVATE KEY STRING >
YOUR_IP_ADDRESS= < public IP address >

Save and close this file (once done), ctrl + o then ctrl + x

4. Setup Docker Compose

Inside aztec folder create file

nano docker-compose.yml

Paste the contents below

version: '3.8'

name: aztec-node

services:
  node:
    image: aztecprotocol/aztec:0.87.2
    restart: unless-stopped
    environment:
      ETHEREUM_HOSTS: "${YOUR_RPC_ENDPOINT}"
      L1_CONSENSUS_HOST_URLS: "${YOUR_CONSENSUS_ENDPOINT}"
      DATA_DIRECTORY: /data
      VALIDATOR_PRIVATE_KEY: "${YOUR_VALIDATOR_PRIVATE_KEY}"
      P2P_IP: "${YOUR_IP_ADDRESS}"
      LOG_LEVEL: "${LOG_LEVEL:-debug}"
    entrypoint: >
      sh -c 'node --no-warnings /usr/src/yarn-project/aztec/dest/bin/index.js start --network alpha-testnet start --node --archiver --sequencer'
    ports:
      - "40400:40400/tcp"
      - "40400:40400/udp"
      - "8080:8080"
    volumes:
      - ./data:/data
    network_mode: "host"

Note: Version can change check docker hub & discord announcements to ensure the correct version.

5. Run Node

Start Node from working directory aztec like so

docker compose up -d

Check logs:

docker compose logs -f node
Logs example once synced
Logs example once synced

Check Node Sync

Check the Rollup contract to fetch the latest Block

docker run --rm --network host \
  aztecprotocol/foundry:25f24e677a6a32a62512ad4f561995589ac2c7dc-amd64 \
  cast call 0xee6d4e937f0493fb461f28a75cf591f1dba8704e \
            "getPendingBlockNumber()(uint256)" \
            --rpc-url http://localhost:8545

Check your own node for latest block

docker logs --tail 2000 aztec-node-node-1 2>&1 \
| grep -Eo 'Cannot propose block [0-9]+' \
| awk '{print $4}' \
| tail -n1

Compare the results, your own should be +1 block ahead of the contract result, this means its the block your sequencer is trying to propose.

Subscribe to GLCstaked
Receive the latest updates directly to your inbox.
Nft graphic
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from GLCstaked

Skeleton

Skeleton

Skeleton