137 lines
6.7 KiB
YAML
137 lines
6.7 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:rootstock/rskj/rootstock-mainnet-rskj-archive.yml
|
|
#
|
|
# docker compose up -d
|
|
#
|
|
# curl -X POST https://${IP}.traefik.me/rootstock-mainnet \
|
|
# -H "Content-Type: application/json" \
|
|
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
|
|
services:
|
|
rootstock-mainnet-client:
|
|
image: ${ROOTSTOCK_RSKJ_IMAGE:-rsksmart/rskj}:${ROOTSTOCK_MAINNET_RSKJ_VERSION:-VETIVER-9.0.1}
|
|
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
|
|
ports:
|
|
- 3234:3234
|
|
- 3234:3234/udp
|
|
expose:
|
|
- 8545
|
|
- 8546
|
|
environment:
|
|
DEFAULT_JVM_OPTS: -Xms4G -Xmx8G
|
|
DOMAIN: ${DOMAIN}
|
|
RSKJ_SYS_PROPS: -Drpc.providers.web.http.bind_address=0.0.0.0 -Dpeer.active.0.url=enode://1da4ff6f289b3cc724a9565b4aea614991d405a400073083f1ca7911828c68992826f9981d6026552854db76c44aa29fc638eb64b0ceb44f34320c90fe8bf646@178.156.223.98:5050 -Dpeer.active.1.url=enode://ab6e6bc7f2b56b14bef693513e78423d1025a5acd7eb821e7f9df1fb825748535164a161512a49127ee3d6d0ea4df36601657841dbf9c3ed1ee057ee0f073b4c@178.105.196.185:5050 -Dpeer.active.2.url=enode://9611ea7ddd078de0e6a0fe9e6733f0ed484b1163bac7abf0d1cedb4687d140fbda6c2838902419eb33ca3412f9f5f4a1d86f79aa7e658697aa0402ce7702db64@178.105.155.122:5050 -Dpeer.active.3.url=enode://044314b976aae205d75ce54db57289e8fc580b6475bc3af6759b558e6d73cd035134aeaf841755c81f23efd84958c5fd0f6b49645bba4f08e4885eaf778a491d@178.105.213.138:5050 -Dpeer.active.4.url=enode://03d2015cd0b7fa03f2e846540749cbc43d865dce0e7dc5f780139dc49b4278c3607e6102cd4c7ac2d18ce970894481f958fa6adbcca6a43f7e02476102cf3f25@77.42.125.140:5050 -Dpeer.active.5.url=enode://b84c1d3c0d43958487efc3d77638e42a74ce26437a03ae0cbd8bb0948c6f73517a4fd0fe7a8a3503b9c26be97395d54defa6e4f7d5535b1a5c77430b6bbcfaec@5.78.194.169:5050 -Dpeer.active.6.url=enode://81471846e79afde2b49ede4a475e180676ae579c8ad86e677a465555b6eddaf381aea96d58fa17eed0d454a9c47d6aaf42ce3b554e920c9888d427b5064ac889@91.98.175.212:5050 -Dpeer.active.7.url=enode://4c777c3f3339b46caafa20932cd91d7d1cd23ed4c80d68419161a6479eb0949cccda62c400094514791996edd12d918de651ab2d7fe806e4ea85be44cf1f5ad2@5.223.72.83:5050
|
|
restart: unless-stopped
|
|
stop_grace_period: 5m
|
|
networks:
|
|
- chains
|
|
volumes:
|
|
- ${ROOTSTOCK_MAINNET_RSKJ_ARCHIVE_DATA:-rootstock-mainnet-rskj-archive}:/var/lib/rsk/database/mainnet
|
|
- ./rootstock/mainnet/node.conf:/etc/rsk/node.conf
|
|
- ./rootstock/mainnet:/config
|
|
- /slowdisk:/slowdisk
|
|
logging: *logging-defaults
|
|
labels:
|
|
- prometheus-scrape.enabled=false
|
|
|
|
rootstock-mainnet:
|
|
image: nginx
|
|
expose:
|
|
- '80'
|
|
environment:
|
|
PROXY_HOST: rootstock-mainnet-client
|
|
RPC_PATH: /
|
|
RPC_PORT: 8545
|
|
WS_PATH: /
|
|
WS_PORT: 8546
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- rootstock-mainnet-client
|
|
networks:
|
|
- chains
|
|
volumes:
|
|
- ./nginx-proxy:/etc/nginx/templates
|
|
logging: *logging-defaults
|
|
labels:
|
|
- prometheus-scrape.enabled=false
|
|
- traefik.enable=true
|
|
- traefik.http.middlewares.rootstock-mainnet-rskj-archive-host.headers.customrequestheaders.Host=localhost
|
|
- traefik.http.middlewares.rootstock-mainnet-rskj-archive-stripprefix.stripprefix.prefixes=/rootstock-mainnet
|
|
- traefik.http.services.rootstock-mainnet-rskj-archive.loadbalancer.server.port=80
|
|
- ${NO_SSL:-traefik.http.routers.rootstock-mainnet-rskj-archive.entrypoints=websecure}
|
|
- ${NO_SSL:-traefik.http.routers.rootstock-mainnet-rskj-archive.tls.certresolver=myresolver}
|
|
- ${NO_SSL:-traefik.http.routers.rootstock-mainnet-rskj-archive.rule=Host(`$DOMAIN`) && (Path(`/rootstock-mainnet`) || Path(`/rootstock-mainnet/`))}
|
|
- ${NO_SSL:+traefik.http.routers.rootstock-mainnet-rskj-archive.rule=Path(`/rootstock-mainnet`) || Path(`/rootstock-mainnet/`)}
|
|
- traefik.http.routers.rootstock-mainnet-rskj-archive.middlewares=rootstock-mainnet-rskj-archive-stripprefix, rootstock-mainnet-rskj-archive-host, ipallowlist
|
|
- traefik.http.routers.rootstock-mainnet-rskj-archive.priority=50
|
|
- traefik.http.routers.rootstock-mainnet-rskj-archive-ws.priority=100
|
|
- traefik.http.services.rootstock-mainnet-rskj-archive-ws.loadbalancer.server.port=8546
|
|
- traefik.http.routers.rootstock-mainnet-rskj-archive-ws.service=rootstock-mainnet-rskj-archive-ws
|
|
- traefik.http.routers.rootstock-mainnet-rskj-archive.service=rootstock-mainnet-rskj-archive
|
|
- ${NO_SSL:-traefik.http.routers.rootstock-mainnet-rskj-archive-ws.entrypoints=websecure}
|
|
- ${NO_SSL:-traefik.http.routers.rootstock-mainnet-rskj-archive-ws.tls.certresolver=myresolver}
|
|
- ${NO_SSL:-traefik.http.routers.rootstock-mainnet-rskj-archive-ws.rule=Host(`$DOMAIN`) && (Path(`/rootstock-mainnet`) || Path(`/rootstock-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
|
|
- ${NO_SSL:+traefik.http.routers.rootstock-mainnet-rskj-archive-ws.rule=(Path(`/rootstock-mainnet`) || Path(`/rootstock-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
|
|
- traefik.http.routers.rootstock-mainnet-rskj-archive-ws.middlewares=rootstock-mainnet-rskj-archive-stripprefix, rootstock-mainnet-rskj-archive-host, ipallowlist
|
|
|
|
volumes:
|
|
rootstock-mainnet-rskj-archive:
|
|
|
|
x-upstreams:
|
|
- id: $${ID}
|
|
labels:
|
|
provider: $${PROVIDER}
|
|
connection:
|
|
generic:
|
|
rpc:
|
|
url: $${RPC_URL}
|
|
ws:
|
|
frameSize: 20Mb
|
|
msgSize: 50Mb
|
|
url: $${WS_URL}
|
|
chain: rootstock
|
|
method-groups:
|
|
enabled:
|
|
- debug
|
|
- filter
|
|
methods:
|
|
disabled:
|
|
enabled:
|
|
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
options:
|
|
validate-syncing: false
|
|
... |