services: mantle-fullnode: image: mantlenetworkio/mantle-op-geth:v1.1.1 expose: - 8545 # RPC / Websocket - 3851 # P2P TCP (currently unused) - 3851/udp # P2P UDP (currently unused) - 6060 # metrics - 8551 ports: - "3851:3851" - "3851:3851/udp" environment: USING_BVM: "true" BLOCK_SIGNER_KEY: 9f50ccaebd966113a0ef09793f8a3288cd0bb2c05d20caa3c0015b4e665f1b2d BLOCK_SIGNER_ADDRESS: 0x000000b36A00872bAF079426e012Cf5Cd2A74E8b entrypoint: geth command: - --datadir=/data - --verbosity=3 - --port=3851 - --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=8545 - --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=full - --metrics - --metrics.addr=0.0.0.0 - --metrics.port=9001 - --snapshot=false restart: always stop_grace_period: 5m volumes: - mantle-fullnode:/data - ".jwtsecret:/jwtsecret" labels: - "traefik.enable=true" - "traefik.http.middlewares.mantle-fullnode-stripprefix.stripprefix.prefixes=/mantle-fullnode" - "traefik.http.services.mantle-fullnode.loadbalancer.server.port=8545" - "traefik.http.routers.mantle-fullnode.entrypoints=websecure" - "traefik.http.routers.mantle-fullnode.tls.certresolver=myresolver" - "traefik.http.routers.mantle-fullnode.rule=Host(`$DOMAIN`) && PathPrefix(`/mantle-fullnode`)" - "traefik.http.routers.mantle-fullnode.middlewares=mantle-fullnode-stripprefix, ipwhitelist" networks: - chains mantle-fullnode-node: image: mantlenetworkio/mantle-op-node:v1.1.1 depends_on: - mantle-key-generator - mantle-fullnode expose: - 8545 # RPC - 25713 # P2P TCP - 25713/udp # P2P UDP - 7300 # metrics - 6060 # pprof ports: - "25713:25713" - "25713:25713/udp" volumes: - "./mantle/mainnet/:/config" - .jwtsecret:/jwtsecret restart: always stop_grace_period: 5m environment: OP_NODE_L1_ETH_RPC: ${MANTLE_ETHEREUM_ENDPOINT} OP_NODE_L2_ENGINE_RPC: 'http://mantle-fullnode: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: 25713 OP_NODE_P2P_LISTEN_UDP_PORT: 25713 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-fullnode: