Skip to content

Espresso | Install

HardwareRequirement
CPU4 Cores
RAM8 GB
Disk500 GB
sudo apt update
sudo apt upgrade -y

maouam.xyz/tool/docker
docker pull ghcr.io/espressosystems/espresso-sequencer/sequencer:20260407
docker pull ghcr.io/espressosystems/espresso-sequencer/staking-cli:20260407
mkdir -p ~/espresso
cd ~/espresso
docker run -v ~/espresso/keys:/keys \
ghcr.io/espressosystems/espresso-sequencer/sequencer:20260407 \
keygen -o /keys
#save result
cat ~/espresso/keys/0.env
#give permission
chmod 600 ~/espresso/keys/0.env
#note your public ip
curl -s ifconfig.me -4
5. Create Metadata JSON on github (save raw url)
Section titled “5. Create Metadata JSON on github (save raw url)”
{
"pub_key": "BLS_VER_KEY~...",
"name": "your_val_name",
"description": "your_description",
"company_name": "your_comp",
"company_website": "https://yourweb.com",
"client_version": "1.0.0",
"icon": {
"14x14": {
"@1x": "https://example.com/icon-14-1x.png",
"@2x": "https://example.com/icon-14-2x.png",
"@3x": "https://example.com/icon-14-3x.png"
},
"24x24": {
"@1x": "https://example.com/icon-24-1x.png",
"@2x": "https://example.com/icon-24-2x.png",
"@3x": "https://example.com/icon-24-3x.png"
}
}
}
6. Register Validator (fill/buy for gasfee eth)
Section titled “6. Register Validator (fill/buy for gasfee eth)”
#your key
export CONSENSUS_PRIVATE_KEY=$(grep PRIVATE_STAKING ~/espresso/keys/0.env | cut -d= -f2)
export STATE_PRIVATE_KEY=$(grep PRIVATE_STATE ~/espresso/keys/0.env | cut -d= -f2)
#Fill your data
export L1_PROVIDER="https://ethereum-rpc.publicnode.com" #Fill your dedicated rpc
export STAKE_TABLE_ADDRESS="0xCeF474D372B5b09dEfe2aF187bf17338Dc704451" #Don't change, it's stake table address.
export MNEMONIC="your mnemonic" #12/24 your seed phrase ETH wallet
export ACCOUNT_INDEX=0 #Account mnemonic wallet, first account is index 0
export COMMISSION="10.00" #Commission 10%
export METADATA_URI="https://.." #URL github raw format
#Register
docker run \
-e L1_PROVIDER \
-e STAKE_TABLE_ADDRESS \
-e MNEMONIC \
-e ACCOUNT_INDEX \
-e CONSENSUS_PRIVATE_KEY \
-e STATE_PRIVATE_KEY \
ghcr.io/espressosystems/espresso-sequencer/staking-cli:20260407 \
staking-cli register-validator \
--commission $COMMISSION \
--metadata-uri $METADATA_URI
#Create docker compose
cat > ~/espresso/docker-compose.yml << 'EOF'
---
services:
espresso-node:
image: ghcr.io/espressosystems/espresso-sequencer/sequencer:20260407
command: sequencer -- http -- catchup -- status
restart: unless-stopped
sysctls:
net.ipv4.tcp_congestion_control: "bbr"
net.ipv4.tcp_rmem: "8192 262144 67108864"
net.ipv4.tcp_wmem: "4096 16384 536870912"
net.ipv4.tcp_adv_win_scale: "0"
net.ipv4.tcp_notsent_lowat: "131072"
net.ipv4.tcp_slow_start_after_idle: "0"
ports:
- "8080:8080"
- "9000:9000/udp"
volumes:
- ./store:/data/store
- ./keys/0.env:/keys/0.env:ro
environment:
ESPRESSO_SEQUENCER_CDN_ENDPOINT: "cdn.main.net.espresso.network:1737"
ESPRESSO_STATE_RELAY_SERVER_URL: "https://state-relay.main.net.espresso.network"
ESPRESSO_SEQUENCER_GENESIS_FILE: "/genesis/mainnet.toml"
ESPRESSO_SEQUENCER_EMBEDDED_DB: "true"
ESPRESSO_SEQUENCER_STATE_PEERS: "https://query.main.net.espresso.network"
RUST_LOG: "warn,libp2p=off"
RUST_LOG_FORMAT: "json"
ESPRESSO_SEQUENCER_L1_PROVIDER: "https://ethereum-rpc.publicnode.com" #Fill dedicated rpc
ESPRESSO_SEQUENCER_L1_WS_PROVIDER: "wss://ethereum-rpc.publicnode.com" #FIll dedicated wss
ESPRESSO_SEQUENCER_API_PORT: "8080"
ESPRESSO_SEQUENCER_STORAGE_PATH: "/data/store"
ESPRESSO_SEQUENCER_KEY_FILE: "/keys/0.env"
ESPRESSO_SEQUENCER_LIBP2P_BIND_ADDRESS: "0.0.0.0:9000"
ESPRESSO_SEQUENCER_LIBP2P_ADVERTISE_ADDRESS: "your-public-ip:9000" #Your public IP
ESPRESSO_SEQUENCER_CONFIG_PEERS: "https://cache.main.net.espresso.network"
ESPRESSO_SEQUENCER_IDENTITY_NODE_NAME: "my-espresso-node"
ESPRESSO_SEQUENCER_IDENTITY_COUNTRY_CODE: "ID"
ESPRESSO_SEQUENCER_IDENTITY_NETWORK_TYPE: "Hosted"
EOF
#Run node
docker compose up -d
#Check logs
docker compose logs -f
#Check block (node block vs network block)
echo "Node: $(curl -s http://localhost:8080/v0/status/metrics | grep 'consensus_last_synced_block_height' | awk '{print $2}') | Network: $(curl -s https://query.main.net.espresso.network/v0/node/block-height)"

lastUpdated: 2026-05-02