Environment Preparation
1. Install Docker
Kurtosis relies on Docker as its underlying container runtime. Install Docker based on your operating system and start the service:
$ systemctl start docker # Start Docker
$ systemctl enable docker # Enable auto-start 2. Install Kurtosis CLI
Choose the installation command for your OS:
MacOS:
$ brew install kurtosis-tech/tap/kurtosis-cliUbuntu/Debian:
$ echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list $ sudo apt update && sudo apt install kurtosis-cli- Verify Installation:
Ensure the CLI is functional by runningkurtosis --version.
Deploy a Default Ethereum Network
1. Start a Single-Node Test Chain
Quickly launch a local Ethereum network (execution + consensus layers) with default settings:
$ kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package enclave: Isolated environment name (e.g.,my-testnet).- Default clients: Geth (execution) + Lighthouse (consensus).
Verify Success: Output confirms service status:
Service 'el-1-geth-lighthouse' added with service UUID...
Custom Configuration Deployment
1. Create a Config File
Define parameters in network_params.yaml. Example:
participants:
- el_type: geth
cl_type: lighthouse
network_params:
network: "holesky-shadowfork" # Supports Shadowfork
persistent: true # Enable persistent storage
additional_services:
- apache # Enable file sharing Key Parameters:
el_type/cl_type: Choose clients (e.g., Nethermind/Teku).network: Public testnets (e.g.,holesky) or Shadowfork.persistent: Prevents data loss.
2. Run Custom Config
$ kurtosis run --enclave my-testnet github.com/ethpandaops/ethereum-package --args-file network_params.yaml Kubernetes Deployment (Optional)
1. Cluster Requirements
- Cloud services (AWS EKS, GCP GKE) or self-managed clusters.
- Optimize storage via
el_volume_sizeandcl_volume_size.
2. Container Scheduling
Define tolerations in network_params.yaml:
participants:
- el_type: reth
cl_type: teku
el_tolerations:
- key: "gpu-node"
operator: "Exists"
global_tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule" Management & Debugging
1. Access Logs
$ kurtosis service logs my-testnet el-1-geth-lighthouse 2. Download Genesis Files
$ kurtosis files download my-testnet el-genesis-data ~/Downloads 3. Enter Container Shell
$ kurtosis service shell my-testnet el-1-geth-lighthouse Advanced Features
1. Shadowforking
Simulate mainnet forks:
network_params:
network: "mainnet-shadowfork-verkle" # Test Verkle trees
electra_fork_epoch: 1 # Fork block
persistent: true 2. MEV-Boost Integration
Enable Flashbot’s MEV infrastructure:
mev_params:
mode: "full" # Or "mock" for simulation 3. Monitoring Tools
Includes Prometheus, Grafana, and Blobscan (EIP-4844 analysis).
Cleanup
$ kurtosis enclave rm -f my-testnet # Delete environment
$ kurtosis clean -a # Purge all resources FAQs
Q: How to troubleshoot slow sync issues?
A: Use SSD storage and ensure sufficient bandwidth.
Q: Can I switch clients post-deployment?
A: Yes, but reconfigure network_params.yaml and redeploy.
Q: Is Kubernetes mandatory?
A: No, Docker-only deployments are fully supported.
👉 Explore advanced Ethereum configurations
Note: For cloud deployments, prioritize high-performance storage. Client compatibility varies—check official docs for specifics.