Skip to main content

Run Beacon Node: Teku

Version check

This page's content is up-to-date for Teku v23.3.0.


The Beacon Node requires an Execution client in order to operate. See Step 2: Run Execution Client for more information.


Teku is a consensus client built to meet institutional needs and security requirements. Built by PegaSys, an arm of ConsenSys, who are dedicated to building enterprise-ready clients and tools for interacting with the core Ethereum platform. More information on Teku.

Download Teku

Visit Teku's page on how to download Teku.


Gnosis' maintains a repo with sample Teku Dockerfiles and configs

Release Page
Docker Images
Teku Docs
Teku CLI Reference

Checkpoint Sync

We recommend the use of Checkpoint sync to sync your Beacon Node quickly, and avoid long range attacks.

Gnosis provides a checkpoint sync server at

# Usage
$ teku
More about Checkpoint Sync

Option 1: Run as a System Process

Refer to Guide

Option 2: Run using Docker

Images are referenced under the following pattern consensys/teku:{image-tag} with the image-tag referring to the image available on Docker Hub.

1. Folder Structure

Create new folders:

mkdir -p /home/$USER/gnosis/consensus/data

Including the folders from your Execution client, your folder structure should now look like:

├── jwtsecret/
├── execution/
└── consensus/
└── data/

2. Docker Compose

Modify your docker-compose file with your favorite text editor and add the consensus container. The file should now look like:

version: "3"

# From Step 2
# ...

user: "${PUID:-1000}"
container_name: consensus
image: consensys/teku:latest
restart: always
- gnosis_net
- 9000:9000/tcp # p2p
- 9000:9000/udp # p2p
- 8008:8008/tcp # metrics
- 4000
- /home/$USER/gnosis/consensus:/data
- /home/$USER/gnosis/jwtsecret/jwt.hex:/jwt.hex
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- JAVA_OPTS=-Xmx4g
command: |
driver: "local"

name: gnosis_net

3. Environment Variables

Add an .env file with your user id (id --user) in /home/$USER/gnosis/.env.


4. Start Containers

Start the consensus layer client listed in the compose file:

cd /home/$USER/gnosis
docker-compose up -d

5. Monitor Logs

Check your logs for each service (execution or consensus) with:

docker logs -f --tail 500 execution

6. Updating your Node

To update, just pull the new images, then stop and restart your docker-compose file:

cd /home/$USER/gnosis
docker-compose pull
docker-compose stop
docker-compose up -d