# Aztec Sequencer- Public Testnet

By [GLCstaked](https://paragraph.com/@glcstaked) · 2025-05-27

---

**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](https://aztec.network/) 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](https://storage.googleapis.com/papyrus_images/f60f4b992655c4b849626c10bb67b88f6b37516e7e58d9ca1da96d71c889803d.png)

Public Testnet Live from 2025-05-01

[

Welcome | Privacy-first zkRollup | Aztec Documentation
------------------------------------------------------

Aztec introduces a privacy-centric zkRollup solution for Ethereum, enhancing confidentiality and scalability within the Ethereum ecosystem.

https://docs.aztec.network

![](https://storage.googleapis.com/papyrus_images/9a28b452e910b3c3e7b5e1d68f876a7e716fc69aa3998e106ae9532a69766552.png)

](https://docs.aztec.network/)

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](https://ethdocker.com/Usage/QuickStart) 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`

![](https://storage.googleapis.com/papyrus_images/4a2aae6fb38e5de13c0714c04dd885460e3a535c08d4003b12522d4a894d86d6.png)

Nimbus: `nimbus-cl-only.yml`

![](https://storage.googleapis.com/papyrus_images/e526a0710b19570d2a22b8fc3f9c5bf7b6e012530e25e170144a4f1b2efd921f.png)

**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](https://hub.docker.com/r/aztecprotocol/aztec/tags) & 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](https://storage.googleapis.com/papyrus_images/8ab405ca415d7f8920a3b39d1284e58ec5cca2f8ff845a52c4809ffffb9de62b.png)

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.

---

*Originally published on [GLCstaked](https://paragraph.com/@glcstaked/aztec-sequencer-public-testnet)*
