Skip to main content
1

Review release notes & confirm target image

Open the Decaf release page and note the latest Docker image tag for the sequencer. For example, the current tag is:
ghcr.io/espressosystems/espresso-sequencer/sequencer:20251106-patch1
Also check for any changes to endpoints, genesis file, or staking rules.
2

Backup data & keys

Back up your mounted directories (adjust paths if different):
sudo systemctl stop docker || true
# or just stop the container:
docker stop espresso-sequencer || true

# back up sqlite store (non-DA) or any local data
rsync -aH /opt/espresso/store/ /opt/espresso/backup/store-$(date +%F)/

# back up key material
rsync -aH /opt/espresso/keys/ /opt/espresso/backup/keys-$(date +%F)/
If you operate a DA node, back up your PostgreSQL database per your DB’s backup procedure.
3

Pull new images

export NEW_TAG="20251106-patch1"   # replace with the tag from release notes
docker pull ghcr.io/espressosystems/espresso-sequencer/sequencer:${NEW_TAG}
docker pull ghcr.io/espressosystems/espresso-sequencer/staking-cli:main
4

Update environment & restart

Confirm your environment is still valid for Decaf (notably, the genesis file and endpoints):
export ESPRESSO_SEQUENCER_GENESIS_FILE="/genesis/decaf.toml"
export ESPRESSO_SEQUENCER_CONFIG_PEERS="https://cache.decaf.testnet.espresso.network"
export ESPRESSO_SEQUENCER_ORCHESTRATOR_URL="https://orchestrator-UZAFTUIMZOT.decaf.testnet.espresso.network/"
export ESPRESSO_SEQUENCER_CDN_ENDPOINT="cdn.decaf.testnet.espresso.network:1737"
export ESPRESSO_STATE_RELAY_SERVER_URL="https://state-relay.decaf.testnet.espresso.network"
Then restart the container using the new tag:
docker rm -f espresso-sequencer || true
docker run -d --name espresso-sequencer --restart unless-stopped       -v /opt/espresso/store:/mount/sequencer/store       -v /opt/espresso/keys:/mount/sequencer/keys:ro       -e ESPRESSO_SEQUENCER_L1_PROVIDER -e ESPRESSO_SEQUENCER_L1_WS_PROVIDER       -e ESPRESSO_SEQUENCER_CONFIG_PEERS -e ESPRESSO_SEQUENCER_ORCHESTRATOR_URL       -e ESPRESSO_SEQUENCER_CDN_ENDPOINT -e ESPRESSO_STATE_RELAY_SERVER_URL       -e ESPRESSO_SEQUENCER_GENESIS_FILE       ghcr.io/espressosystems/espresso-sequencer/sequencer:${NEW_TAG}         sequencer -- http -- catchup -- status
5

Validate the upgrade

  • Watch logs: docker logs -f espresso-sequencer and ensure the node joins and syncs.
  • Confirm /status and/or metrics are exposed on your configured API port.
  • Check libp2p connectivity (UDP port reachable, peers listed).
6

Rollback (if needed)

export PREV_TAG="202510XX-some-previous"  # your last known good tag
docker rm -f espresso-sequencer || true
docker run -d --name espresso-sequencer       -v /opt/espresso/store:/mount/sequencer/store       -v /opt/espresso/keys:/mount/sequencer/keys:ro       ghcr.io/espressosystems/espresso-sequencer/sequencer:${PREV_TAG}         sequencer -- http -- catchup -- status
Restore from your store/ and keys/ backups if corruption is suspected.
Supported networks: Espresso Decaf testnet.