diff --git a/avalanche/go/avalanche-fuji-go-archive-leveldb.yml b/avalanche/go/avalanche-fuji-go-archive-leveldb.yml deleted file mode 100644 index 044f83e0..00000000 --- a/avalanche/go/avalanche-fuji-go-archive-leveldb.yml +++ /dev/null @@ -1,119 +0,0 @@ ---- -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:avalanche/go/avalanche-fuji-go-archive-leveldb.yml -# -# docker compose up -d -# -# curl -X POST https://${IP}.traefik.me/avalanche-fuji-archive \ -# -H "Content-Type: application/json" \ -# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' - -services: - avalanche-fuji-archive: - image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.15.0-fuji} - 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: - - 10046:10046 - - 10046:10046/udp - expose: - - 9650 - entrypoint: [/avalanchego/build/avalanchego] - command: - - --chain-config-dir=/config/archive - - --db-type=leveldb - - --http-allowed-hosts=* - - --http-host= - - --network-id=fuji - - --public-ip=${IP} - - --staking-port=10046 - restart: unless-stopped - stop_grace_period: 5m - networks: - - chains - volumes: - - ${AVALANCHE_FUJI_GO_ARCHIVE_LEVELDB_DATA:-avalanche-fuji-go-archive-leveldb}:/root/.avalanchego - - ./avalanche/fuji:/config - - /slowdisk:/slowdisk - logging: *logging-defaults - labels: - - prometheus-scrape.enabled=false - - traefik.enable=true - - traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-set-path.replacepath.path=/ext/bc/C/rpc - - traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-stripprefix.stripprefix.prefixes=/avalanche-fuji-archive - - traefik.http.services.avalanche-fuji-go-archive-leveldb.loadbalancer.server.port=9650 - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`))} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-archive-leveldb.rule=Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)} - - traefik.http.routers.avalanche-fuji-go-archive-leveldb.middlewares=avalanche-fuji-go-archive-leveldb-stripprefix, avalanche-fuji-go-archive-leveldb-set-path, ipallowlist - - traefik.http.routers.avalanche-fuji-go-archive-leveldb.priority=50 # gets any request that is not GET with UPGRADE header - - traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.priority=100 # answers GET requests first - - traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws - - traefik.http.services.avalanche-fuji-go-archive-leveldb-ws.loadbalancer.server.port=9650 - - traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.service=avalanche-fuji-go-archive-leveldb-ws - - traefik.http.routers.avalanche-fuji-go-archive-leveldb.service=avalanche-fuji-go-archive-leveldb - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.tls.certresolver=myresolver} - # case-insensitive Upgrade: python websocket-client sends "WebSocket" (capital W) - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.rule=(Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.middlewares=avalanche-fuji-go-archive-leveldb-stripprefix, avalanche-fuji-go-archive-leveldb-set-ws-path, ipallowlist - -volumes: - avalanche-fuji-go-archive-leveldb: - -x-upstreams: - - id: $${ID} - labels: - provider: $${PROVIDER} - connection: - generic: - rpc: - url: $${RPC_URL} - ws: - frameSize: 20Mb - msgSize: 50Mb - url: $${WS_URL} - chain: avalanche-fuji - method-groups: - enabled: - - debug - - filter - methods: - disabled: - enabled: - - name: txpool_content # TODO: should be disabled for rollup nodes -... \ No newline at end of file diff --git a/avalanche/go/avalanche-fuji-go-pruned-pebbledb.prune.yml b/avalanche/go/avalanche-fuji-go-pruned-firewood.prune.yml similarity index 66% rename from avalanche/go/avalanche-fuji-go-pruned-pebbledb.prune.yml rename to avalanche/go/avalanche-fuji-go-pruned-firewood.prune.yml index 9914ad09..9755bb8a 100644 --- a/avalanche/go/avalanche-fuji-go-pruned-pebbledb.prune.yml +++ b/avalanche/go/avalanche-fuji-go-pruned-firewood.prune.yml @@ -20,7 +20,7 @@ x-logging-defaults: &logging-defaults # ... # IP=$(curl ipinfo.io/ip) # DOMAIN=${IP}.traefik.me -# COMPOSE_FILE=base.yml:rpc.yml:avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml +# COMPOSE_FILE=base.yml:rpc.yml:avalanche/go/avalanche-fuji-go-pruned-firewood.yml # # docker compose up -d # @@ -46,54 +46,54 @@ services: nofile: 1048576 # Max open files (for RPC/WS connections) user: root ports: - - 10350:10350 - - 10350:10350/udp + - 14507:14507 + - 14507:14507/udp expose: - 9650 entrypoint: [/bin/sh, -c, mkdir -p /root/.avalanchego/offline-pruning && exec /avalanchego/build/avalanchego "$@", --] command: - --chain-config-dir=/config/prune - - --db-type=pebbledb + - --db-type=firewood - --http-allowed-hosts=* - --http-host= - --network-id=fuji - --public-ip=${IP} - - --staking-port=10350 + - --staking-port=14507 restart: unless-stopped stop_grace_period: 5m networks: - chains volumes: - - ${AVALANCHE_FUJI_GO_PRUNED_PEBBLEDB_DATA:-avalanche-fuji-go-pruned-pebbledb}:/root/.avalanchego + - ${AVALANCHE_FUJI_GO_PRUNED_FIREWOOD_DATA:-avalanche-fuji-go-pruned-firewood}:/root/.avalanchego - ./avalanche/fuji:/config - /slowdisk:/slowdisk logging: *logging-defaults labels: - prometheus-scrape.enabled=false - traefik.enable=true - - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-set-path.replacepath.path=/ext/bc/C/rpc - - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-fuji - - traefik.http.services.avalanche-fuji-go-pruned-pebbledb.loadbalancer.server.port=9650 - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, avalanche-fuji-go-pruned-pebbledb-set-path, ipallowlist - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.priority=50 # gets any request that is not GET with UPGRADE header - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.priority=100 # answers GET requests first - - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-set-ws-path.replacepath.path=/ext/bc/C/ws - - traefik.http.services.avalanche-fuji-go-pruned-pebbledb-ws.loadbalancer.server.port=9650 - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.service=avalanche-fuji-go-pruned-pebbledb-ws - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.service=avalanche-fuji-go-pruned-pebbledb - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.tls.certresolver=myresolver} + - traefik.http.middlewares.avalanche-fuji-go-pruned-firewood-set-path.replacepath.path=/ext/bc/C/rpc + - traefik.http.middlewares.avalanche-fuji-go-pruned-firewood-stripprefix.stripprefix.prefixes=/avalanche-fuji + - traefik.http.services.avalanche-fuji-go-pruned-firewood.loadbalancer.server.port=9650 + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} + - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-firewood.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} + - traefik.http.routers.avalanche-fuji-go-pruned-firewood.middlewares=avalanche-fuji-go-pruned-firewood-stripprefix, avalanche-fuji-go-pruned-firewood-set-path, ipallowlist + - traefik.http.routers.avalanche-fuji-go-pruned-firewood.priority=50 # gets any request that is not GET with UPGRADE header + - traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.priority=100 # answers GET requests first + - traefik.http.middlewares.avalanche-fuji-go-pruned-firewood-set-ws-path.replacepath.path=/ext/bc/C/ws + - traefik.http.services.avalanche-fuji-go-pruned-firewood-ws.loadbalancer.server.port=9650 + - traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.service=avalanche-fuji-go-pruned-firewood-ws + - traefik.http.routers.avalanche-fuji-go-pruned-firewood.service=avalanche-fuji-go-pruned-firewood + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.tls.certresolver=myresolver} # case-insensitive Upgrade: python websocket-client sends "WebSocket" (capital W) - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, avalanche-fuji-go-pruned-pebbledb-set-ws-path, ipallowlist + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} + - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} + - traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.middlewares=avalanche-fuji-go-pruned-firewood-stripprefix, avalanche-fuji-go-pruned-firewood-set-ws-path, ipallowlist volumes: - avalanche-fuji-go-pruned-pebbledb: + avalanche-fuji-go-pruned-firewood: x-upstreams: - id: $${ID} diff --git a/avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml b/avalanche/go/avalanche-fuji-go-pruned-firewood.yml similarity index 65% rename from avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml rename to avalanche/go/avalanche-fuji-go-pruned-firewood.yml index 40847448..a0d4447b 100644 --- a/avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml +++ b/avalanche/go/avalanche-fuji-go-pruned-firewood.yml @@ -20,7 +20,7 @@ x-logging-defaults: &logging-defaults # ... # IP=$(curl ipinfo.io/ip) # DOMAIN=${IP}.traefik.me -# COMPOSE_FILE=base.yml:rpc.yml:avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml +# COMPOSE_FILE=base.yml:rpc.yml:avalanche/go/avalanche-fuji-go-pruned-firewood.yml # # docker compose up -d # @@ -46,54 +46,54 @@ services: nofile: 1048576 # Max open files (for RPC/WS connections) user: root ports: - - 10350:10350 - - 10350:10350/udp + - 14507:14507 + - 14507:14507/udp expose: - 9650 entrypoint: [/avalanchego/build/avalanchego] command: - --chain-config-dir=/config/pruned - - --db-type=pebbledb + - --db-type=firewood - --http-allowed-hosts=* - --http-host= - --network-id=fuji - --public-ip=${IP} - - --staking-port=10350 + - --staking-port=14507 restart: unless-stopped stop_grace_period: 5m networks: - chains volumes: - - ${AVALANCHE_FUJI_GO_PRUNED_PEBBLEDB_DATA:-avalanche-fuji-go-pruned-pebbledb}:/root/.avalanchego + - ${AVALANCHE_FUJI_GO_PRUNED_FIREWOOD_DATA:-avalanche-fuji-go-pruned-firewood}:/root/.avalanchego - ./avalanche/fuji:/config - /slowdisk:/slowdisk logging: *logging-defaults labels: - prometheus-scrape.enabled=false - traefik.enable=true - - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-set-path.replacepath.path=/ext/bc/C/rpc - - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-fuji - - traefik.http.services.avalanche-fuji-go-pruned-pebbledb.loadbalancer.server.port=9650 - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, avalanche-fuji-go-pruned-pebbledb-set-path, ipallowlist - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.priority=50 # gets any request that is not GET with UPGRADE header - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.priority=100 # answers GET requests first - - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-set-ws-path.replacepath.path=/ext/bc/C/ws - - traefik.http.services.avalanche-fuji-go-pruned-pebbledb-ws.loadbalancer.server.port=9650 - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.service=avalanche-fuji-go-pruned-pebbledb-ws - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.service=avalanche-fuji-go-pruned-pebbledb - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.tls.certresolver=myresolver} + - traefik.http.middlewares.avalanche-fuji-go-pruned-firewood-set-path.replacepath.path=/ext/bc/C/rpc + - traefik.http.middlewares.avalanche-fuji-go-pruned-firewood-stripprefix.stripprefix.prefixes=/avalanche-fuji + - traefik.http.services.avalanche-fuji-go-pruned-firewood.loadbalancer.server.port=9650 + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} + - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-firewood.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} + - traefik.http.routers.avalanche-fuji-go-pruned-firewood.middlewares=avalanche-fuji-go-pruned-firewood-stripprefix, avalanche-fuji-go-pruned-firewood-set-path, ipallowlist + - traefik.http.routers.avalanche-fuji-go-pruned-firewood.priority=50 # gets any request that is not GET with UPGRADE header + - traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.priority=100 # answers GET requests first + - traefik.http.middlewares.avalanche-fuji-go-pruned-firewood-set-ws-path.replacepath.path=/ext/bc/C/ws + - traefik.http.services.avalanche-fuji-go-pruned-firewood-ws.loadbalancer.server.port=9650 + - traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.service=avalanche-fuji-go-pruned-firewood-ws + - traefik.http.routers.avalanche-fuji-go-pruned-firewood.service=avalanche-fuji-go-pruned-firewood + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.tls.certresolver=myresolver} # case-insensitive Upgrade: python websocket-client sends "WebSocket" (capital W) - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, avalanche-fuji-go-pruned-pebbledb-set-ws-path, ipallowlist + - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} + - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} + - traefik.http.routers.avalanche-fuji-go-pruned-firewood-ws.middlewares=avalanche-fuji-go-pruned-firewood-stripprefix, avalanche-fuji-go-pruned-firewood-set-ws-path, ipallowlist volumes: - avalanche-fuji-go-pruned-pebbledb: + avalanche-fuji-go-pruned-firewood: x-upstreams: - id: $${ID} diff --git a/avalanche/go/avalanche-fuji-go-pruned-leveldb.prune.yml b/avalanche/go/avalanche-fuji-go-pruned-leveldb.prune.yml deleted file mode 100644 index d91ca4f7..00000000 --- a/avalanche/go/avalanche-fuji-go-pruned-leveldb.prune.yml +++ /dev/null @@ -1,119 +0,0 @@ ---- -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:avalanche/go/avalanche-fuji-go-pruned-leveldb.yml -# -# docker compose up -d -# -# curl -X POST https://${IP}.traefik.me/avalanche-fuji \ -# -H "Content-Type: application/json" \ -# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' - -services: - avalanche-fuji: - image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.15.0-fuji} - 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: - - 12059:12059 - - 12059:12059/udp - expose: - - 9650 - entrypoint: [/bin/sh, -c, mkdir -p /root/.avalanchego/offline-pruning && exec /avalanchego/build/avalanchego "$@", --] - command: - - --chain-config-dir=/config/prune - - --db-type=leveldb - - --http-allowed-hosts=* - - --http-host= - - --network-id=fuji - - --public-ip=${IP} - - --staking-port=12059 - restart: unless-stopped - stop_grace_period: 5m - networks: - - chains - volumes: - - ${AVALANCHE_FUJI_GO_PRUNED_LEVELDB_DATA:-avalanche-fuji-go-pruned-leveldb}:/root/.avalanchego - - ./avalanche/fuji:/config - - /slowdisk:/slowdisk - logging: *logging-defaults - labels: - - prometheus-scrape.enabled=false - - traefik.enable=true - - traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-set-path.replacepath.path=/ext/bc/C/rpc - - traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-stripprefix.stripprefix.prefixes=/avalanche-fuji - - traefik.http.services.avalanche-fuji-go-pruned-leveldb.loadbalancer.server.port=9650 - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-leveldb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb.middlewares=avalanche-fuji-go-pruned-leveldb-stripprefix, avalanche-fuji-go-pruned-leveldb-set-path, ipallowlist - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb.priority=50 # gets any request that is not GET with UPGRADE header - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.priority=100 # answers GET requests first - - traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws - - traefik.http.services.avalanche-fuji-go-pruned-leveldb-ws.loadbalancer.server.port=9650 - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.service=avalanche-fuji-go-pruned-leveldb-ws - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb.service=avalanche-fuji-go-pruned-leveldb - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.tls.certresolver=myresolver} - # case-insensitive Upgrade: python websocket-client sends "WebSocket" (capital W) - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.middlewares=avalanche-fuji-go-pruned-leveldb-stripprefix, avalanche-fuji-go-pruned-leveldb-set-ws-path, ipallowlist - -volumes: - avalanche-fuji-go-pruned-leveldb: - -x-upstreams: - - id: $${ID} - labels: - provider: $${PROVIDER} - connection: - generic: - rpc: - url: $${RPC_URL} - ws: - frameSize: 20Mb - msgSize: 50Mb - url: $${WS_URL} - chain: avalanche-fuji - method-groups: - enabled: - - debug - - filter - methods: - disabled: - enabled: - - name: txpool_content # TODO: should be disabled for rollup nodes -... \ No newline at end of file diff --git a/avalanche/go/avalanche-fuji-go-pruned-leveldb.yml b/avalanche/go/avalanche-fuji-go-pruned-leveldb.yml deleted file mode 100644 index 772de80c..00000000 --- a/avalanche/go/avalanche-fuji-go-pruned-leveldb.yml +++ /dev/null @@ -1,119 +0,0 @@ ---- -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:avalanche/go/avalanche-fuji-go-pruned-leveldb.yml -# -# docker compose up -d -# -# curl -X POST https://${IP}.traefik.me/avalanche-fuji \ -# -H "Content-Type: application/json" \ -# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' - -services: - avalanche-fuji: - image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.15.0-fuji} - 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: - - 12059:12059 - - 12059:12059/udp - expose: - - 9650 - entrypoint: [/avalanchego/build/avalanchego] - command: - - --chain-config-dir=/config/pruned - - --db-type=leveldb - - --http-allowed-hosts=* - - --http-host= - - --network-id=fuji - - --public-ip=${IP} - - --staking-port=12059 - restart: unless-stopped - stop_grace_period: 5m - networks: - - chains - volumes: - - ${AVALANCHE_FUJI_GO_PRUNED_LEVELDB_DATA:-avalanche-fuji-go-pruned-leveldb}:/root/.avalanchego - - ./avalanche/fuji:/config - - /slowdisk:/slowdisk - logging: *logging-defaults - labels: - - prometheus-scrape.enabled=false - - traefik.enable=true - - traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-set-path.replacepath.path=/ext/bc/C/rpc - - traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-stripprefix.stripprefix.prefixes=/avalanche-fuji - - traefik.http.services.avalanche-fuji-go-pruned-leveldb.loadbalancer.server.port=9650 - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-leveldb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb.middlewares=avalanche-fuji-go-pruned-leveldb-stripprefix, avalanche-fuji-go-pruned-leveldb-set-path, ipallowlist - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb.priority=50 # gets any request that is not GET with UPGRADE header - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.priority=100 # answers GET requests first - - traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws - - traefik.http.services.avalanche-fuji-go-pruned-leveldb-ws.loadbalancer.server.port=9650 - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.service=avalanche-fuji-go-pruned-leveldb-ws - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb.service=avalanche-fuji-go-pruned-leveldb - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.tls.certresolver=myresolver} - # case-insensitive Upgrade: python websocket-client sends "WebSocket" (capital W) - - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && HeadersRegexp(`Upgrade`, `(?i)websocket`)} - - traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.middlewares=avalanche-fuji-go-pruned-leveldb-stripprefix, avalanche-fuji-go-pruned-leveldb-set-ws-path, ipallowlist - -volumes: - avalanche-fuji-go-pruned-leveldb: - -x-upstreams: - - id: $${ID} - labels: - provider: $${PROVIDER} - connection: - generic: - rpc: - url: $${RPC_URL} - ws: - frameSize: 20Mb - msgSize: 50Mb - url: $${WS_URL} - chain: avalanche-fuji - method-groups: - enabled: - - debug - - filter - methods: - disabled: - enabled: - - name: txpool_content # TODO: should be disabled for rollup nodes -... \ No newline at end of file diff --git a/compose_registry.json b/compose_registry.json index 8656687f..0e4fbf5b 100644 --- a/compose_registry.json +++ b/compose_registry.json @@ -1123,13 +1123,30 @@ "avalanche-fuji-go-archive-leveldb" ] }, + { + "chain": "fuji", + "client": "go", + "compose_file": "avalanche/go/avalanche-fuji-go-pruned-firewood", + "drpc_chain": "avalanche-fuji", + "features": [ + "firewood" + ], + "network": "avalanche", + "node": null, + "relay": null, + "stack": null, + "type": "pruned", + "volumes": [ + "avalanche-fuji-go-pruned-firewood" + ] + }, { "chain": "fuji", "client": "go", "compose_file": "avalanche/go/avalanche-fuji-go-pruned-leveldb", "drpc_chain": "avalanche-fuji", "features": [ - "leveldb" + "firewood" ], "network": "avalanche", "node": null, @@ -1146,7 +1163,7 @@ "compose_file": "avalanche/go/avalanche-fuji-go-pruned-pebbledb", "drpc_chain": "avalanche-fuji", "features": [ - "leveldb" + "firewood" ], "network": "avalanche", "node": null,