Regenerated from vibe-node context.yml (global nitro pin + robinhood, plume mainnet/testnet overrides). robinhood archive profiles (not rendered, no host runs them) bumped by hand for parity. alephzero stays on its own v3.5.3 pin. Regen also picked up the pending arc reference-rpc-endpoint list. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KjqejYycVyVvrxV9aTDhgX
144 lines
5.8 KiB
YAML
144 lines
5.8 KiB
YAML
---
|
|
x-logging-defaults: &logging-defaults
|
|
driver: json-file
|
|
options:
|
|
max-size: "512m"
|
|
max-file: "2"
|
|
|
|
# Usage:
|
|
#
|
|
# mkdir rpc && cd rpc
|
|
#
|
|
# git init
|
|
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
|
|
# git fetch origin vibe
|
|
# git checkout origin/vibe
|
|
#
|
|
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
|
|
#
|
|
# env
|
|
# ...
|
|
# IP=$(curl ipinfo.io/ip)
|
|
# DOMAIN=${IP}.traefik.me
|
|
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/arbitrum-sepolia-nitro-minimal-pebble-hash.yml
|
|
#
|
|
# docker compose up -d
|
|
#
|
|
# curl -X POST https://${IP}.traefik.me/arbitrum-sepolia-minimal \
|
|
# -H "Content-Type: application/json" \
|
|
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
|
|
services:
|
|
arbitrum-sepolia-minimal:
|
|
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_NITRO_VERSION:-v3.11.4-7d5ac27}
|
|
sysctls:
|
|
# TCP Performance
|
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
|
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
|
|
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
|
|
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
|
|
net.core.somaxconn: 32768 # Higher connection queue
|
|
# Memory/Connection Management
|
|
# net.core.netdev_max_backlog: 50000 # Increase network buffer
|
|
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
|
|
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
|
|
ulimits:
|
|
nofile: 1048576 # Max open files (for RPC/WS connections)
|
|
user: root
|
|
expose:
|
|
- 8545
|
|
command:
|
|
- --chain.id=421614
|
|
- --execution.caching.archive=${ARBITRUM_SEPOLIA_MINIMAL_ARCHIVE_DB:-false}
|
|
- --execution.caching.database-cache=${ARBITRUM_SEPOLIA_NITRO_MINIMAL_PEBBLE_HASH_DATABASE_CACHE:-2048}
|
|
- --execution.caching.snapshot-cache=${ARBITRUM_SEPOLIA_NITRO_MINIMAL_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
|
|
- --execution.caching.state-scheme=hash
|
|
- --execution.caching.trie-clean-cache=${ARBITRUM_SEPOLIA_NITRO_MINIMAL_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
|
|
- --execution.caching.trie-dirty-cache=${ARBITRUM_SEPOLIA_NITRO_MINIMAL_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
|
|
- --execution.rpc.gas-cap=5500000000
|
|
- --execution.rpc.log-history=0
|
|
- --execution.sequencer.enable=false
|
|
- --http.addr=0.0.0.0
|
|
- --http.api=eth,net,web3,arb,txpool,debug
|
|
- --http.corsdomain=*
|
|
- --http.port=8545
|
|
- --http.vhosts=*
|
|
- --init.prune=minimal
|
|
- --init.validate-genesis-assertion=false
|
|
- --metrics
|
|
- --metrics-server.addr=0.0.0.0
|
|
- --metrics-server.port=6070
|
|
- --node.batch-poster.enable=false
|
|
- --node.sequencer=false
|
|
- --node.staker.enable=false
|
|
- --parent-chain.blob-client.beacon-url=${ETHEREUM_SEPOLIA_BEACON_REST}
|
|
- --parent-chain.blob-client.secondary-beacon-url=${ETHEREUM_SEPOLIA_BEACON_REST_FALLBACK}
|
|
- --parent-chain.connection.url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
|
|
- --persistent.chain=/root/.arbitrum/arbitrum-sepolia-minimal
|
|
- --persistent.db-engine=pebble
|
|
- --ws.addr=0.0.0.0
|
|
- --ws.origins=*
|
|
- --ws.port=8545
|
|
restart: unless-stopped
|
|
stop_grace_period: 5m
|
|
networks:
|
|
- chains
|
|
volumes:
|
|
- ${ARBITRUM_SEPOLIA_NITRO_MINIMAL_PEBBLE_HASH_DATA:-arbitrum-sepolia-nitro-minimal-pebble-hash}:/root/.arbitrum
|
|
- ./tmp/arbitrum-sepolia-minimal:/tmp
|
|
- /slowdisk:/slowdisk
|
|
logging: *logging-defaults
|
|
labels:
|
|
- prometheus-scrape.enabled=true
|
|
- prometheus-scrape.port=6070
|
|
- prometheus-scrape.path=/debug/metrics/prometheus
|
|
- traefik.enable=true
|
|
- traefik.http.middlewares.arbitrum-sepolia-nitro-minimal-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-sepolia-minimal
|
|
- traefik.http.services.arbitrum-sepolia-nitro-minimal-pebble-hash.loadbalancer.server.port=8545
|
|
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-minimal-pebble-hash.entrypoints=websecure}
|
|
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-minimal-pebble-hash.tls.certresolver=myresolver}
|
|
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-minimal-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-sepolia-minimal`) || Path(`/arbitrum-sepolia-minimal/`))}
|
|
- ${NO_SSL:+traefik.http.routers.arbitrum-sepolia-nitro-minimal-pebble-hash.rule=Path(`/arbitrum-sepolia-minimal`) || Path(`/arbitrum-sepolia-minimal/`)}
|
|
- traefik.http.routers.arbitrum-sepolia-nitro-minimal-pebble-hash.middlewares=arbitrum-sepolia-nitro-minimal-pebble-hash-stripprefix, ipallowlist
|
|
|
|
volumes:
|
|
arbitrum-sepolia-nitro-minimal-pebble-hash:
|
|
|
|
x-upstreams:
|
|
- id: $${ID}
|
|
labels:
|
|
provider: $${PROVIDER}
|
|
connection:
|
|
generic:
|
|
rpc:
|
|
url: $${RPC_URL}
|
|
ws:
|
|
frameSize: 20Mb
|
|
msgSize: 50Mb
|
|
url: $${WS_URL}
|
|
chain: arbitrum-sepolia
|
|
method-groups:
|
|
enabled:
|
|
- debug
|
|
- filter
|
|
methods:
|
|
disabled:
|
|
enabled:
|
|
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
# standard geth only
|
|
- name: debug_getRawBlock
|
|
- name: debug_getRawTransaction
|
|
- name: debug_getRawReceipts
|
|
- name: debug_getRawHeader
|
|
- name: debug_getBadBlocks
|
|
# non standard geth only slightly dangerous
|
|
- name: debug_intermediateRoots
|
|
- name: debug_dumpBlock
|
|
# standard geth and erigon
|
|
- name: debug_accountRange
|
|
- name: debug_getModifiedAccountsByNumber
|
|
- name: debug_getModifiedAccountsByHash
|
|
# non standard geth and erigon
|
|
- name: eth_getRawTransactionByHash
|
|
- name: eth_getRawTransactionByBlockHashAndIndex
|
|
... |