Merge branch 'main' of github.com:StakeSquid/ethereum-rpc-docker into main

This commit is contained in:
squidbear
2025-03-26 11:22:50 +01:00
4 changed files with 252 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
services:
celo-mainnet-geth-archive:
image: us.gcr.io/celo-org/geth:1.8
image: us.gcr.io/celo-org/geth:1.8.9
restart: unless-stopped
stop_grace_period: 1m
command: >
@@ -34,7 +34,7 @@ services:
- "${NO_SSL:-traefik.http.routers.celo-mainnet-geth-archive.entrypoints=websecure}"
- "${NO_SSL:-traefik.http.routers.celo-mainnet-geth-archive.tls.certresolver=myresolver}"
- "${NO_SSL:-traefik.http.routers.celo-mainnet-geth-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-mainnet-geth-archive`)}"
- "${NO_SSL:+traefik.http.routers.celo-mainnet-geth-archive.rule=PathPrefix(`/celo-archive`)}"
- "${NO_SSL:+traefik.http.routers.celo-mainnet-geth-archive.rule=PathPrefix(`/celo-mainnet-geth-archive`)}"
- "traefik.http.routers.celo-mainnet-geth-archive.middlewares=celo-mainnet-geth-archive-stripprefix, ipwhitelist"

View File

@@ -0,0 +1,114 @@
services:
celo-mainnet-archive:
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:${CELO_L2_VERSION:-celo-v2.0.0}
volumes:
- "${CELO_MAINNET_OP_GETH_ARCHIVE_LEVELDB_HASH_DATA:-celo-mainnet-op-geth-archive-leveldb-hash}:/datadir"
- ".jwtsecret:/shared/jwt.txt"
- "./celo/mainnet/:/chainconfig"
- "./celo/scripts/:/scripts"
ports:
- "10111:10111"
- "10111:10111/udp"
expose:
- 8545
- 8551
networks:
- chains
restart: always
stop_grace_period: 5m
entrypoint: /scripts/start-op-geth.sh
environment:
- NETWORK_NAME=mainnet
- GETH_BOOTNODES=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303
- BEDROCK_DATADIR=/datadir
- OP_GETH__SYNCMODE=full
- GETH_STATE_SCHEME=hash
- GETH_DB_ENGINE=leveldb
- GETH_NAT=extip:${IP}
- NODE_TYPE=archive
- BEDROCK_SEQUENCER_HTTP=https://cel2-sequencer.celo.org
- PORT__OP_GETH_P2P=10111
- IS_CUSTOM_CHAIN=true
- OP_GETH__HISTORICAL_RPC=${CELO_MAINNET_ARCHIVE_GETH:-http://celo-mainnet-geth-archive:8545}
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.celo-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/celo-mainnet-archive"
- "traefik.http.services.celo-mainnet-op-geth-archive-leveldb-hash-op-geth-pruned-pebble-path.loadbalancer.server.port=8545"
- "${NO_SSL:-traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure}"
- "${NO_SSL:-traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver}"
- "${NO_SSL:-traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-mainnet-archive`)}"
- "${NO_SSL:+traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.rule=PathPrefix(`/celo-mainnet-archive`)}"
- "traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.middlewares=celo-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist"
celo-mainnet-archive-node:
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:${CELO_L2_VERSION:-celo-v2.0.0}
depends_on:
- celo-mainnet-archive
expose:
- 9545 # RPC
- 7300 # metrics
- 6060 # pprof
networks:
- chains
ports:
- "15111:15111"
- "15111:15111/udp"
environment:
- HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org
- OP_NODE_ALTDA_DA_SERVER="http://celo-mainnet-archive-eigenda-proxy:4242"
- OP_NODE_P2P_LISTEN_TCP_PORT=15111
- OP_NODE_P2P_LISTEN_UDP_PORT=15111
- OP_NODE_P2P_STATIC=/ip4/34.83.180.111/tcp/9222/p2p/16Uiu2HAkxBYxPd4eDFJzwm84XPzymkXud847vu65eju4UCDRpDSM,/ip4/34.169.135.64/tcp/9222/p2p/16Uiu2HAm6oVW1YeKheAuhnJSySnVvbXZ5gXL4g36XrWb1imF9K3m,/ip4/34.169.201.36/tcp/9222/p2p/16Uiu2HAmCqAFUoq72tjGJfCkkzHoNbjTjshjEED4kWtRKMSxcMgb,/ip4/34.83.127.51/tcp/9222/p2p/16Uiu2HAmBqKBoxkk95CsZiXQmQHv9WMiHXU4Di6wzFuYEKo1i7dg,/ip4/35.227.175.30/tcp/9222/p2p/16Uiu2HAmTNVkin4vogHsqwJwShUkHtx48aDoxygGwgp9Tv5zQWTM,/ip4/34.82.198.98/tcp/9222/p2p/16Uiu2HAmS6CeFPUXMztLf4VDh9NLbauuXLSYx9YkXfyiscqoxsKt,/ip4/34.38.181.223/tcp/9222/p2p/16Uiu2HAmH3xfYGjaJDw6sxa8ds3bVwMYLZRpPzpTtTrYq7G4nZs3,/ip4/34.76.38.6/tcp/9222/p2p/16Uiu2HAm6yXZ9oRTSJfZzXe8wXJ165X3pfzAKdLB9sa27eRZgTwD,/ip4/35.187.106.54/tcp/9222/p2p/16Uiu2HAmPFucuARxzAqtXcD3evFoutKh7tSmfQCxwPKUXfkoyaqY,/ip4/34.76.16.183/tcp/9222/p2p/16Uiu2HAmS8NybNYedzHf4nuFfqyCDH9xiMpgMWxctMtau8dTUxeP,/ip4/104.199.39.59/tcp/9222/p2p/16Uiu2HAmGfwjf1XPikWYDN4NFpTBuuvs6C7eF2iyyKvvjK2MGrVM,/ip4/34.140.117.79/tcp/9222/p2p/16Uiu2HAkwSVN7WHohhoE1sh932y2q3Pv7AFiSugM8K6iFZLALq66
- OP_NODE_ALTDA_ENABLED=true
- OP_NODE_ALTDA_DA_SERVICE=true
- OP_NODE_ALTDA_VERIFY_ON_READ=false
- OP_NODE_ALTDA_DA_SERVER=http://celo-mainnet-archive-eigenda-proxy:4242
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
command: >
op-node
--l1="${ETHEREUM_MAINNET_EXECUTION_RPC}"
--l2=http://celo-mainnet-archive:8551
--rpc.addr=0.0.0.0
--rpc.port=9545
--l1.trustrpc
--l1.rpckind=basic
--l1.beacon="${ETHEREUM_MAINNET_BEACON_REST}"
--syncmode=execution-layer
--p2p.priv.path=/chainconfigs/p2p_node_key_txt
--rollup.config=/chainconfigs/rollup.json
--rollup.load-protocol-versions=true
--rollup.halt=major
restart: always
volumes:
- .jwtsecret:/jwtsecret
- ./celo/mainnet/:/chainconfigs/
stop_grace_period: 30s
celo-mainnet-archive-eigenda-proxy:
platform: linux/amd64
image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4
restart: unless-stopped
stop_grace_period: 5m
entrypoint: /scripts/start-eigenda-proxy.sh
environment:
- EIGENDA_LOCAL_DISPERSER_RPC=disperser.eigenda.xyz:443
- EIGENDA_LOCAL_SVC_MANAGER_ADDR=0x870679e138bcdf293b7ff14dd44b70fc97e12fc0
- OP_NODE__RPC_ENDPOINT=${ETHEREUM_MAINNET_EXECUTION_RPC}
volumes:
- ${CELO_MAINNET_OP_GETH_ARCHIVE_LEVELDB_HASH__EIGENDA_DATA:-celo-mainnet-op-geth-archive-leveldb-hash_eigenda}:/data
- ./celo/scripts:/scripts
celo-mainnet-archive-key-generator:
image: ghcr.io/foundry-rs/foundry
volumes:
- "./celo/mainnet:/config"
entrypoint: sh
command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt"
volumes:
celo-mainnet-op-geth-archive-leveldb-hash:
celo-mainnet-op-geth-archive-leveldb-hash_eigenda:

View File

@@ -0,0 +1,102 @@
services:
ethereum-firehose:
build:
context: ./ethereum-firehose/
args:
FIREHOSE_ETHEREUM: v2.11.2
FIREHOSE_GETH_VERSION: v1.15.5-fh3.0
command: -c /etc/firehose/config.yml start
# environment:
# - DOMAIN=${DOMAIN:-yourdomain.com}
# - ETHEREUM_ARCHIVE_RPC=${ETHEREUM_FIREHOSE_ETHEREUM_MAINNET_ARCHIVE_EXECUTION_RPC:-http://eth.drpc.org}
# - S3_BLOCKS_STORE_URL=${ETHEREUM_FIREHOSE_ETHEREUM_MAINNET_S3_BLOCKS_STORE:-/var/lib/eth-blocks}
expose:
- 8545 # firegeth
- 8551
- 9663
- 10015 # fireeth
- 10016 # substreams
ports:
- "10015:10015"
- "10016:10016"
- "24465:24465/tcp"
- "24465:24465/udp"
labels:
- "traefik.enable=true"
- "traefik.http.services.ethereum-mainnet-firehose-fireeth.loadbalancer.server.scheme=h2c"
- "traefik.http.routers.ethereum-mainnet-firehose-fireeth.service=ethereum-mainnet-firehose-fireeth"
- "traefik.http.services.ethereum-mainnet-firehose-fireeth.loadbalancer.server.port=10015"
- "traefik.http.routers.ethereum-mainnet-firehose-fireeth.entrypoints=grpc"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-fireeth.tls.certresolver=myresolver}"
- "traefik.http.routers.ethereum-mainnet-firehose-fireeth.rule=Host(`ethereum-mainnet-firehose-fireeth.${DOMAIN}`)"
- "traefik.http.routers.ethereum-mainnet-firehose-fireeth.middlewares=ipwhitelist"
- "traefik.http.services.ethereum-mainnet-firehose-substreams.loadbalancer.server.scheme=h2c"
- "traefik.http.routers.ethereum-mainnet-firehose-substreams.service=ethereum-mainnet-firehose-substreams"
- "traefik.http.services.ethereum-mainnet-firehose-substreams.loadbalancer.server.port=10016"
- "traefik.http.routers.ethereum-mainnet-firehose-substreams.entrypoints=grpc"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-substreams.tls.certresolver=myresolver}"
- "traefik.http.routers.ethereum-mainnet-firehose-substreams.rule=Host(`ethereum-mainnet-firehose-substreams.${DOMAIN}`)"
- "traefik.http.routers.ethereum-mainnet-firehose-substreams.middlewares=ipwhitelist"
- "traefik.http.middlewares.ethereum-mainnet-firehose-firegeth-stripprefix.stripprefix.prefixes=/ethereum-firehose-firegeth"
- "traefik.http.routers.ethereum-mainnet-firehose-firegeth.service=ethereum-mainnet-firehose-firegeth"
- "traefik.http.services.ethereum-mainnet-firehose-firegeth.loadbalancer.server.port=8545"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-firegeth.entrypoints=websecure}"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-firegeth.tls.certresolver=myresolver}"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-firegeth.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-firehose-firegeth`)}"
- "${NO_SSL:+traefik.http.routers.ethereum-mainnet-firehose-firegeth.rule=PathPrefix(`/ethereum-firehose-firegeth`)}"
- "traefik.http.routers.ethereum-mainnet-firehose-firegeth.middlewares=ethereum-mainnet-firehose-firegeth-stripprefix, ipwhitelist"
networks:
- chains
volumes:
- ./ethereum-firehose/config.yml:/etc/firehose/config.yml:ro
- ${ETHEREUM_MAINNET_FIREHOSE__FIREGETH_DATA:-ethereum-mainnet-firehose-fireeth}:/var/lib/firehose # Firehose data-dir
- ${ETHEREUM_MAINNET_FIREHOSE__BLOCKS_DATA:-ethereum-mainnet-firehose-blocks}:/var/lib/eth-blocks # Merged blocks store
- .jwtsecret:/jwtsecret:ro # JWT for authrpc
restart: unless-stopped
stop_grace_period: 5m
ethereum-firehose-beacon:
image: statusim/nimbus-eth2:multiarch-v25.3.0
restart: unless-stopped
user: root
command:
- --network=mainnet
- --data-dir=/data
- --tcp-port=6608
- --udp-port=6608
- --rest=yes
- --rest-port=5052
- --rest-address=0.0.0.0
- --metrics=yes
- --metrics-port=7071
- --web3-url=http://ethereum-firehose:9663
- --jwt-secret=/data/jwt.hex
- --external-beacon-api-url=https://beaconstate-mainnet.chainsafe.io
expose:
- "5052"
- "7071"
ports:
- "6608:6608/tcp"
- "6608:6608/udp"
networks:
- chains
volumes:
- ${ETHEREUM_MAINNET_FIREHOSE__NIMBUS_DATA:-ethereum-mainnet-firehose-nimbus}:/data # Beacon node data-dir
- .jwtsecret:/data/jwt.hex:ro # JWT (same as firehose)
labels:
- "traefik.http.middlewares.ethereum-mainnet-firehose-beacon-stripprefix.stripprefix.prefixes=/ethereum-firehose-beacon"
- "traefik.http.services.ethereum-mainnet-firehose-beacon.loadbalancer.server.port=5052"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-beacon.entrypoints=websecure}"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-beacon.tls.certresolver=myresolver}"
- "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-beacon.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-firehose-beacon`)}"
- "${NO_SSL:+traefik.http.routers.ethereum-mainnet-firehose-beacon.rule=PathPrefix(`/ethereum-firehose-beacon`)}"
- "traefik.http.routers.ethereum-mainnet-firehose-beacon.middlewares=ethereum-mainnet-firehose-beacon-stripprefix, ipwhitelist"
volumes:
ethereum-mainnet-firehose-firegeth:
ethereum-mainnet-firehose-blocks:
ethereum-mainnet-firehose-nimbus:

View File

@@ -1 +0,0 @@
fantom/opera/fantom-mainnet-opera-archive-trace.yml

View File

@@ -0,0 +1,34 @@
services:
fantom-archive-trace:
build:
args:
VERSION: release/txtracing/1.1.3-rc.5
context: ./fantom
stop_grace_period: 3m
environment:
- CACHE_SIZE=${FANTOM_ARCHIVE_TRACE_CACHE_SIZE:-16000}
- IP=${IP}
volumes:
- "${FANTOM_MAINNET_OPERA_ARCHIVE_TRACE_DATA:-fantom-mainnet-opera-archive-trace}:/datadir"
- "./fantom/config:/config"
expose:
- "18544"
- "19921"
ports:
- "19921:19921"
- "19921:19921/udp"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.fantom-mainnet-opera-archive-trace-stripprefix.stripprefix.prefixes=/fantom-archive-trace"
- "traefik.http.services.fantom-mainnet-opera-archive-trace.loadbalancer.server.port=18544"
- "${NO_SSL:-traefik.http.routers.fantom-mainnet-opera-archive-trace.entrypoints=websecure}"
- "${NO_SSL:-traefik.http.routers.fantom-mainnet-opera-archive-trace.tls.certresolver=myresolver}"
- "${NO_SSL:-traefik.http.routers.fantom-mainnet-opera-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-archive-trace`)}"
- "${NO_SSL:+traefik.http.routers.fantom-mainnet-opera-archive-trace.rule=PathPrefix(`/fantom-archive-trace`)}"
- "traefik.http.routers.fantom-mainnet-opera-archive-trace.middlewares=fantom-mainnet-opera-archive-trace-stripprefix, ipwhitelist"
volumes:
fantom-mainnet-opera-archive-trace: