version: '3.1' services: mantle: image: mantlenetworkio/op-geth:v1.0.0-alpha.1 expose: - 8545 # RPC / Websocket - 25637 # P2P TCP (currently unused) - 25637/udp # P2P UDP (currently unused) - 6060 # metrics - 8551 ports: - "25637:25637" - "25637:25637/udp" environment: USING_BVM: "true" BLOCK_SIGNER_KEY: 9f50ccaebd966113a0ef09793f8a3288cd0bb2c05d20caa3c0015b4e665f1b2d BLOCK_SIGNER_ADDRESS: 0x000000b36A00872bAF079426e012Cf5Cd2A74E8b entrypoint: geth command: - --datadir=/data - --verbosity=3 - --port=25637 - --http - --http.corsdomain=* - --http.vhosts=* - --http.addr=0.0.0.0 - --http.port=8545 - --http.api=web3,eth,debug,txpool,net - --ws - --ws.addr=0.0.0.0 - --ws.port=8546 - --ws.origins=* - --ws.api=web3,eth,debug,txpool,net - --syncmode=full - --maxpeers=0 - --networkid=5003 - --rpc.allow-unprotected-txs - --authrpc.addr=0.0.0.0 - --authrpc.port=8551 - --authrpc.vhosts=* - --authrpc.jwtsecret=/jwtsecret - --pprof - --pprof.addr=0.0.0.0 - --pprof.port=6060 - --gcmode=archive - --metrics - --metrics.addr=0.0.0.0 - --metrics.port=9001 - --snapshot=false restart: always stop_grace_period: 30s volumes: - mantle:/data - ".jwtsecret:/jwtsecret" labels: - "traefik.enable=true" - "traefik.http.middlewares.mantle-stripprefix.stripprefix.prefixes=/mantle" - "traefik.http.services.mantle.loadbalancer.server.port=8545" - "traefik.http.routers.mantle.entrypoints=websecure" - "traefik.http.routers.mantle.tls.certresolver=myresolver" - "traefik.http.routers.mantle.rule=Host(`$DOMAIN`) && PathPrefix(`/mantle`)" - "traefik.http.routers.mantle.middlewares=mantle-stripprefix, ipwhitelist" networks: - chains mantle-node: image: mantlenetworkio/op-node:v1.0.0-alpha.1 depends_on: - mantle expose: - 8545 # RPC - 10788 # P2P TCP - 10788/udp # P2P UDP - 7300 # metrics - 6060 # pprof ports: - "10788:10788" - "10788:10788/udp" volumes: - "./mantle/mainnet/:/config" - .jwtsecret:/jwtsecret restart: always stop_grace_period: 30s environment: OP_NODE_L1_ETH_RPC: ${MANTLE_ETHEREUM_ENDPOINT} OP_NODE_L2_ENGINE_RPC: 'http://mantle:8551' OP_NODE_L2_ENGINE_AUTH: /jwtsecret OP_NODE_ROLLUP_CONFIG: '/config/rollup.json' OP_NODE_P2P_PRIV_PATH: /config/p2p_node_key_txt OP_NODE_VERIFIER_L1_CONFS: '3' OP_NODE_RPC_ADDR: '0.0.0.0' OP_NODE_RPC_PORT: 8545 OP_NODE_P2P_LISTEN_IP: '0.0.0.0' OP_NODE_P2P_LISTEN_TCP_PORT: 10788 OP_NODE_P2P_LISTEN_UDP_PORT: 10788 OP_NODE_P2P_PEER_SCORING: 'light' OP_NODE_P2P_PEER_BANNING: 'true' OP_NODE_METRICS_ENABLED: 'true' OP_NODE_METRICS_ADDR: '0.0.0.0' OP_NODE_METRICS_PORT: 7300 OP_NODE_PPROF_ENABLED: 'true' OP_NODE_PPROF_PORT: 6060 OP_NODE_PPROF_ADDR: '0.0.0.0' OP_NODE_P2P_DISCOVERY_PATH: '/op-node/opnode_discovery_db' OP_NODE_P2P_PEERSTORE_PATH: '/op-node/opnode_peerstore_db' OP_NODE_INDEXER_SOCKET: 'da-indexer-api.mantle.xyz:443' OP_NODE_INDEXER_ENABLE: 'true' OP_NODE_L2_BACKUP_UNSAFE_SYNC_RPC: https://rpc.mantle.xyz OP_NODE_P2P_STATIC: '/dns4/peer0.mantle.xyz/tcp/9003/p2p/16Uiu2HAmKVKzUAns2gLhZAz1PYcbnhY3WpxNxUZYeTN1x29tNBAW,/dns4/peer1.mantle.xyz/tcp/9003/p2p/16Uiu2HAm1AiZtVp8f5C8LvpSTAXC6GtwqAVKnB3VLawWYSEBmcFN,/dns4/peer2.mantle.xyz/tcp/9003/p2p/16Uiu2HAm2UHVKiPXpovs8VbbUQVPr7feBAqBJdFsH1z5XDiLEvHT' OP_NODE_SEQUENCER_ENABLED: 'false' OP_NODE_P2P_AGENT: 'mantle' OP_NODE_L2_ENGINE_SYNC_ENABLED: 'true' OP_NODE_L2_SKIP_SYNC_START_CHECK: 'true' OP_NODE_P2P_SYNC_REQ_RESP: 'true' networks: - chains mantle-key-generator: image: ghcr.io/foundry-rs/foundry volumes: - "./mantle/mainnet/:/config" - "./mantle/generate-node-key:/generate-node-key" entrypoint: sh command: /generate-node-key volumes: mantle: