version: '3.1' services: geth-sepolia: image: ethereum/client-go:v1.14.3 expose: # HTTP server / GraphQL API - 8545 ports: - "49545:49545" - "49545:49545/udp" command: [ # Blockchain sync mode ("snap", "full" or "light") "--syncmode=snap", "--state.scheme=path", "--db.engine=pebble", "--port=49545", # Megabytes of memory allocated to internal caching "--cache=8192", # Enable the WS-RPC server "--ws", "--ws.api=eth,net,web3,personal,txpool", "--ws.port=8545", "--ws.addr=0.0.0.0", "--ws.origins=*", # Enable the HTTP-RPC server "--http", "--http.api=eth,net,web3,personal,txpool", "--http.port=8545", "--http.addr=0.0.0.0", "--http.vhosts=*", # Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well. "--graphql", "--graphql.vhosts=*", # Enable metrics collection and reporting "--metrics", "--metrics.addr=0.0.0.0", # Ethereum sepolia "--sepolia", # Maximum number of network peers (network disabled if set to 0) (default: 50) "--maxpeers=30", # The Merge "--authrpc.jwtsecret=/jwtsecret", "--authrpc.addr=0.0.0.0", "--authrpc.vhosts=*" ] networks: - chains volumes: - "geth-sepolia:/root/.ethereum" - "/slowdisk:/slowdisk" - ".jwtsecret:/jwtsecret" restart: unless-stopped stop_grace_period: 1m labels: - "traefik.enable=true" - "traefik.http.middlewares.sepolia-stripprefix.stripprefix.prefixes=/sepolia" - "traefik.http.services.sepolia.loadbalancer.server.port=8545" - "traefik.http.routers.sepolia.entrypoints=websecure" - "traefik.http.routers.sepolia.tls.certresolver=myresolver" - "traefik.http.routers.sepolia.rule=Host(`$DOMAIN`) && PathPrefix(`/sepolia`)" - "traefik.http.routers.sepolia.middlewares=sepolia-stripprefix, ipwhitelist" - "prometheus-scrape.enabled=true" - "prometheus-scrape.port=6060" - "prometheus-scrape.job_name=geth-sepolia" - "prometheus-scrape.metrics_path=/debug/metrics/prometheus" prysm-sepolia: image: prysmaticlabs/prysm-beacon-chain:v5.0.3 ports: #- "127.0.0.1:3500:3500" - "13000:13000" - "12000:12000/udp" command: [ "--datadir=/data", "--sepolia", "--jwt-secret=/jwtsecret", "--rpc-host=0.0.0.0", "--grpc-gateway-host=0.0.0.0", "--monitoring-host=0.0.0.0", "--checkpoint-sync-url=https://beaconstate-sepolia.chainsafe.io", "--execution-endpoint=http://geth-sepolia:8551", "--accept-terms-of-use" ] networks: - chains volumes: - "prysm-sepolia:/data" - ".jwtsecret:/jwtsecret" restart: unless-stopped stop_grace_period: 1m labels: - "traefik.enable=true" - "traefik.http.middlewares.prysm-sepolia-stripprefix.stripprefix.prefixes=/prysm-sepolia" - "traefik.http.services.prysm-sepolia.loadbalancer.server.port=3500" - "traefik.http.routers.prysm-sepolia.entrypoints=websecure" - "traefik.http.routers.prysm-sepolia.tls.certresolver=myresolver" - "traefik.http.routers.prysm-sepolia.rule=Host(`$DOMAIN`) && PathPrefix(`/prysm-sepolia`)" - "traefik.http.routers.prysm-sepolia.middlewares=prysm-sepolia-stripprefix, ipwhitelist" volumes: prysm-sepolia: geth-sepolia: