diff --git a/geth-mainnet.yml b/geth-mainnet.yml new file mode 100644 index 00000000..0ea7d484 --- /dev/null +++ b/geth-mainnet.yml @@ -0,0 +1,44 @@ +geth-mainnet: + image: ethereum/client-go:stable + expose: + # HTTP server / GraphQL API + - 8545 + ports: + - "30303:30303" + - "30303:30303/udp" + command: + [ + # Blockchain sync mode ("snap", "full" or "light") + "--syncmode=snap", + # Megabytes of memory allocated to internal caching + "--cache=8192", + # Enable the WS-RPC server + "--ws", + "--ws.addr=0.0.0.0", + # Enable the HTTP-RPC server + "--http", + "--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", + # Ethereum mainnet + "--mainnet", + # Maximum number of network peers (network disabled if set to 0) (default: 50) + "--maxpeers=30" + ] + networks: + - chains + volumes: + - "geth-mainnet_data:/root/.ethereum" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST" + - "traefik.http.middlewares.mainnet-stripprefix.stripprefix.prefixes=/mainnet" + - "traefik.http.services.mainnet.loadbalancer.server.port=8545" + - "traefik.http.routers.mainnet.entrypoints=websecure" + - "traefik.http.routers.mainnet.tls.certresolver=myresolver" + - "traefik.http.routers.mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/mainnet`)" + - "traefik.http.routers.mainnet.middlewares=mainnet-stripprefix, ipwhitelist" \ No newline at end of file