diff --git a/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml b/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml index 47c585f9..2e7e5474 100644 --- a/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml +++ b/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml @@ -19,7 +19,7 @@ # # docker compose up -d # -# curl -X POST https://${IP}.traefik.me/dogecoin-mainnet \ +# curl -X POST https://${IP}.traefik.me/dogecoin-mainnet-bitcoind \ # -H "Content-Type: application/json" \ # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' x-logging-defaults: &logging-defaults @@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults max-file: '3' services: - dogecoin-mainnet: - image: ${DOGECOIN_BITCOIND_IMAGE:-btcpayserver/dogecoin}:${DOGECOIN_MAINNET_BITCOIND_VERSION:-1.14.7} + dogecoin-mainnet-bitcoind: + image: ${DOGECOIN_BITCOIND_IMAGE:-}:${DOGECOIN_MAINNET_BITCOIND_VERSION:-} sysctls: # TCP Performance net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle @@ -80,41 +80,41 @@ services: labels: - prometheus-scrape.enabled=false - traefik.enable=true - - traefik.http.middlewares.dogecoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/dogecoin-mainnet + - traefik.http.middlewares.dogecoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/dogecoin-mainnet-bitcoind - traefik.http.services.dogecoin-mainnet-bitcoind-full.loadbalancer.server.port=8545 - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/dogecoin-mainnet`) || Path(`/dogecoin-mainnet/`))} - - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full.rule=Path(`/dogecoin-mainnet`) || Path(`/dogecoin-mainnet/`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/dogecoin-mainnet-bitcoind`) || Path(`/dogecoin-mainnet-bitcoind/`))} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full.rule=Path(`/dogecoin-mainnet-bitcoind`) || Path(`/dogecoin-mainnet-bitcoind/`)} - traefik.http.routers.dogecoin-mainnet-bitcoind-full.middlewares=dogecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-mainnet-bitcoind-full.service=dogecoin-mainnet-bitcoind-full - traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.service=dogecoin-mainnet-bitcoind-full-hashblock - traefik.http.services.dogecoin-mainnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/hashblock`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.rule=PathPrefix(`/dogecoin-mainnet/hashblock`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet-bitcoind/hashblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.rule=PathPrefix(`/dogecoin-mainnet-bitcoind/hashblock`)} - traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashblock.middlewares=dogecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.service=dogecoin-mainnet-bitcoind-full-hashtx - traefik.http.services.dogecoin-mainnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/hashtx`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.rule=PathPrefix(`/dogecoin-mainnet/hashtx`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet-bitcoind/hashtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.rule=PathPrefix(`/dogecoin-mainnet-bitcoind/hashtx`)} - traefik.http.routers.dogecoin-mainnet-bitcoind-full-hashtx.middlewares=dogecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.service=dogecoin-mainnet-bitcoind-full-rawblock - traefik.http.services.dogecoin-mainnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/rawblock`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.rule=PathPrefix(`/dogecoin-mainnet/rawblock`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet-bitcoind/rawblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.rule=PathPrefix(`/dogecoin-mainnet-bitcoind/rawblock`)} - traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawblock.middlewares=dogecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.service=dogecoin-mainnet-bitcoind-full-rawtx - traefik.http.services.dogecoin-mainnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/rawtx`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.rule=PathPrefix(`/dogecoin-mainnet/rawtx`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet-bitcoind/rawtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.rule=PathPrefix(`/dogecoin-mainnet-bitcoind/rawtx`)} - traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.middlewares=dogecoin-mainnet-bitcoind-full-stripprefix, ipallowlist volumes: diff --git a/dogecoin/bitcoind/dogecoin-testnet-bitcoind-full.yml b/dogecoin/bitcoind/dogecoin-testnet-bitcoind-full.yml index 5c3d728d..116cae4a 100644 --- a/dogecoin/bitcoind/dogecoin-testnet-bitcoind-full.yml +++ b/dogecoin/bitcoind/dogecoin-testnet-bitcoind-full.yml @@ -19,7 +19,7 @@ # # docker compose up -d # -# curl -X POST https://${IP}.traefik.me/dogecoin-testnet \ +# curl -X POST https://${IP}.traefik.me/dogecoin-testnet-bitcoind \ # -H "Content-Type: application/json" \ # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' x-logging-defaults: &logging-defaults @@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults max-file: '3' services: - dogecoin-testnet: - image: ${DOGECOIN_BITCOIND_IMAGE:-btcpayserver/dogecoin}:${DOGECOIN_TESTNET_BITCOIND_VERSION:-1.14.7} + dogecoin-testnet-bitcoind: + image: ${DOGECOIN_BITCOIND_IMAGE:-}:${DOGECOIN_TESTNET_BITCOIND_VERSION:-} sysctls: # TCP Performance net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle @@ -81,41 +81,41 @@ services: labels: - prometheus-scrape.enabled=false - traefik.enable=true - - traefik.http.middlewares.dogecoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/dogecoin-testnet + - traefik.http.middlewares.dogecoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/dogecoin-testnet-bitcoind - traefik.http.services.dogecoin-testnet-bitcoind-full.loadbalancer.server.port=8545 - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/dogecoin-testnet`) || Path(`/dogecoin-testnet/`))} - - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full.rule=Path(`/dogecoin-testnet`) || Path(`/dogecoin-testnet/`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/dogecoin-testnet-bitcoind`) || Path(`/dogecoin-testnet-bitcoind/`))} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full.rule=Path(`/dogecoin-testnet-bitcoind`) || Path(`/dogecoin-testnet-bitcoind/`)} - traefik.http.routers.dogecoin-testnet-bitcoind-full.middlewares=dogecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-testnet-bitcoind-full.service=dogecoin-testnet-bitcoind-full - traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.service=dogecoin-testnet-bitcoind-full-hashblock - traefik.http.services.dogecoin-testnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/hashblock`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.rule=PathPrefix(`/dogecoin-testnet/hashblock`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet-bitcoind/hashblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.rule=PathPrefix(`/dogecoin-testnet-bitcoind/hashblock`)} - traefik.http.routers.dogecoin-testnet-bitcoind-full-hashblock.middlewares=dogecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.service=dogecoin-testnet-bitcoind-full-hashtx - traefik.http.services.dogecoin-testnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/hashtx`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.rule=PathPrefix(`/dogecoin-testnet/hashtx`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet-bitcoind/hashtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.rule=PathPrefix(`/dogecoin-testnet-bitcoind/hashtx`)} - traefik.http.routers.dogecoin-testnet-bitcoind-full-hashtx.middlewares=dogecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.service=dogecoin-testnet-bitcoind-full-rawblock - traefik.http.services.dogecoin-testnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/rawblock`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.rule=PathPrefix(`/dogecoin-testnet/rawblock`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet-bitcoind/rawblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.rule=PathPrefix(`/dogecoin-testnet-bitcoind/rawblock`)} - traefik.http.routers.dogecoin-testnet-bitcoind-full-rawblock.middlewares=dogecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.service=dogecoin-testnet-bitcoind-full-rawtx - traefik.http.services.dogecoin-testnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/rawtx`)} - - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.rule=PathPrefix(`/dogecoin-testnet/rawtx`)} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet-bitcoind/rawtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.rule=PathPrefix(`/dogecoin-testnet-bitcoind/rawtx`)} - traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.middlewares=dogecoin-testnet-bitcoind-full-stripprefix, ipallowlist volumes: diff --git a/dogecoin/dogecoind/dogecoin-mainnet-dogecoind-full.yml b/dogecoin/dogecoind/dogecoin-mainnet-dogecoind-full.yml new file mode 100644 index 00000000..55501f00 --- /dev/null +++ b/dogecoin/dogecoind/dogecoin-mainnet-dogecoind-full.yml @@ -0,0 +1,144 @@ +--- + +# 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:dogecoin/dogecoind/dogecoin-mainnet-dogecoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/dogecoin-mainnet \ +# -H "Content-Type: application/json" \ +# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' +x-logging-defaults: &logging-defaults + driver: json-file + options: + max-size: 10m + max-file: '3' + +services: + dogecoin-mainnet: + image: ${DOGECOIN_DOGECOIND_IMAGE:-btcpayserver/dogecoin}:${DOGECOIN_MAINNET_DOGECOIND_VERSION:-1.14.7} + 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: + - 12577:12577 + - 12577:12577/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [dogecoind] + command: + - -datadir=/data + - -externalip=${IP} + - -port=12577 + - -printtoconsole + - -rpcallowip=::/0 + - -rpcauth=username:0b6623bdebb516ced10631668833e42a$c478b38890678c51b9f013174a20addb317c2046b68c05e0250ff86e31a505f7 + - -rpcbind=0.0.0.0 + - -rpcport=8545 + - -server + - -zmqpubhashblock=tcp://0.0.0.0:28332 + - -zmqpubhashtx=tcp://0.0.0.0:28333 + - -zmqpubrawblock=tcp://0.0.0.0:28334 + - -zmqpubrawtx=tcp://0.0.0.0:28335 + restart: unless-stopped + stop_grace_period: 5m + networks: + - chains + volumes: + - ${DOGECOIN_MAINNET_DOGECOIND_FULL_DATA:-dogecoin-mainnet-dogecoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.dogecoin-mainnet-dogecoind-full-stripprefix.stripprefix.prefixes=/dogecoin-mainnet + - traefik.http.services.dogecoin-mainnet-dogecoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full.rule=Host(`$DOMAIN`) && (Path(`/dogecoin-mainnet`) || Path(`/dogecoin-mainnet/`))} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-dogecoind-full.rule=Path(`/dogecoin-mainnet`) || Path(`/dogecoin-mainnet/`)} + - traefik.http.routers.dogecoin-mainnet-dogecoind-full.middlewares=dogecoin-mainnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-mainnet-dogecoind-full.service=dogecoin-mainnet-dogecoind-full + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashblock.service=dogecoin-mainnet-dogecoind-full-hashblock + - traefik.http.services.dogecoin-mainnet-dogecoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashblock.rule=PathPrefix(`/dogecoin-mainnet/hashblock`)} + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashblock.middlewares=dogecoin-mainnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashtx.service=dogecoin-mainnet-dogecoind-full-hashtx + - traefik.http.services.dogecoin-mainnet-dogecoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashtx.rule=PathPrefix(`/dogecoin-mainnet/hashtx`)} + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-hashtx.middlewares=dogecoin-mainnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawblock.service=dogecoin-mainnet-dogecoind-full-rawblock + - traefik.http.services.dogecoin-mainnet-dogecoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawblock.rule=PathPrefix(`/dogecoin-mainnet/rawblock`)} + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawblock.middlewares=dogecoin-mainnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawtx.service=dogecoin-mainnet-dogecoind-full-rawtx + - traefik.http.services.dogecoin-mainnet-dogecoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-mainnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawtx.rule=PathPrefix(`/dogecoin-mainnet/rawtx`)} + - traefik.http.routers.dogecoin-mainnet-dogecoind-full-rawtx.middlewares=dogecoin-mainnet-dogecoind-full-stripprefix, ipallowlist + +volumes: + dogecoin-mainnet-dogecoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: dogecoin + 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/dogecoin/dogecoind/dogecoin-testnet-dogecoind-full.yml b/dogecoin/dogecoind/dogecoin-testnet-dogecoind-full.yml new file mode 100644 index 00000000..74e3698e --- /dev/null +++ b/dogecoin/dogecoind/dogecoin-testnet-dogecoind-full.yml @@ -0,0 +1,145 @@ +--- + +# 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:dogecoin/dogecoind/dogecoin-testnet-dogecoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/dogecoin-testnet \ +# -H "Content-Type: application/json" \ +# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' +x-logging-defaults: &logging-defaults + driver: json-file + options: + max-size: 10m + max-file: '3' + +services: + dogecoin-testnet: + image: ${DOGECOIN_DOGECOIND_IMAGE:-btcpayserver/dogecoin}:${DOGECOIN_TESTNET_DOGECOIND_VERSION:-1.14.7} + 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: + - 10859:10859 + - 10859:10859/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [dogecoind] + command: + - -datadir=/data + - -externalip=${IP} + - -port=10859 + - -printtoconsole + - -rpcallowip=::/0 + - -rpcauth=username:0b6623bdebb516ced10631668833e42a$c478b38890678c51b9f013174a20addb317c2046b68c05e0250ff86e31a505f7 + - -rpcbind=0.0.0.0 + - -rpcport=8545 + - -server + - -testnet + - -zmqpubhashblock=tcp://0.0.0.0:28332 + - -zmqpubhashtx=tcp://0.0.0.0:28333 + - -zmqpubrawblock=tcp://0.0.0.0:28334 + - -zmqpubrawtx=tcp://0.0.0.0:28335 + restart: unless-stopped + stop_grace_period: 5m + networks: + - chains + volumes: + - ${DOGECOIN_TESTNET_DOGECOIND_FULL_DATA:-dogecoin-testnet-dogecoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.dogecoin-testnet-dogecoind-full-stripprefix.stripprefix.prefixes=/dogecoin-testnet + - traefik.http.services.dogecoin-testnet-dogecoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full.rule=Host(`$DOMAIN`) && (Path(`/dogecoin-testnet`) || Path(`/dogecoin-testnet/`))} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-dogecoind-full.rule=Path(`/dogecoin-testnet`) || Path(`/dogecoin-testnet/`)} + - traefik.http.routers.dogecoin-testnet-dogecoind-full.middlewares=dogecoin-testnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-testnet-dogecoind-full.service=dogecoin-testnet-dogecoind-full + - traefik.http.routers.dogecoin-testnet-dogecoind-full-hashblock.service=dogecoin-testnet-dogecoind-full-hashblock + - traefik.http.services.dogecoin-testnet-dogecoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-dogecoind-full-hashblock.rule=PathPrefix(`/dogecoin-testnet/hashblock`)} + - traefik.http.routers.dogecoin-testnet-dogecoind-full-hashblock.middlewares=dogecoin-testnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-testnet-dogecoind-full-hashtx.service=dogecoin-testnet-dogecoind-full-hashtx + - traefik.http.services.dogecoin-testnet-dogecoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-dogecoind-full-hashtx.rule=PathPrefix(`/dogecoin-testnet/hashtx`)} + - traefik.http.routers.dogecoin-testnet-dogecoind-full-hashtx.middlewares=dogecoin-testnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-testnet-dogecoind-full-rawblock.service=dogecoin-testnet-dogecoind-full-rawblock + - traefik.http.services.dogecoin-testnet-dogecoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-dogecoind-full-rawblock.rule=PathPrefix(`/dogecoin-testnet/rawblock`)} + - traefik.http.routers.dogecoin-testnet-dogecoind-full-rawblock.middlewares=dogecoin-testnet-dogecoind-full-stripprefix, ipallowlist + - traefik.http.routers.dogecoin-testnet-dogecoind-full-rawtx.service=dogecoin-testnet-dogecoind-full-rawtx + - traefik.http.services.dogecoin-testnet-dogecoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.dogecoin-testnet-dogecoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/dogecoin-testnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.dogecoin-testnet-dogecoind-full-rawtx.rule=PathPrefix(`/dogecoin-testnet/rawtx`)} + - traefik.http.routers.dogecoin-testnet-dogecoind-full-rawtx.middlewares=dogecoin-testnet-dogecoind-full-stripprefix, ipallowlist + +volumes: + dogecoin-testnet-dogecoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: dogecoin-testnet + 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/litecoin/bitcoind/litecoin-mainnet-bitcoind-full.yml b/litecoin/bitcoind/litecoin-mainnet-bitcoind-full.yml index 9ff5cdd1..3ede9b9e 100644 --- a/litecoin/bitcoind/litecoin-mainnet-bitcoind-full.yml +++ b/litecoin/bitcoind/litecoin-mainnet-bitcoind-full.yml @@ -19,7 +19,7 @@ # # docker compose up -d # -# curl -X POST https://${IP}.traefik.me/litecoin-mainnet \ +# curl -X POST https://${IP}.traefik.me/litecoin-mainnet-bitcoind \ # -H "Content-Type: application/json" \ # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' x-logging-defaults: &logging-defaults @@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults max-file: '3' services: - litecoin-mainnet: - image: ${LITECOIN_BITCOIND_IMAGE:-uphold/litecoin-core}:${LITECOIN_MAINNET_BITCOIND_VERSION:-0.21} + litecoin-mainnet-bitcoind: + image: ${LITECOIN_BITCOIND_IMAGE:-}:${LITECOIN_MAINNET_BITCOIND_VERSION:-} sysctls: # TCP Performance net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle @@ -80,41 +80,41 @@ services: labels: - prometheus-scrape.enabled=false - traefik.enable=true - - traefik.http.middlewares.litecoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/litecoin-mainnet + - traefik.http.middlewares.litecoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/litecoin-mainnet-bitcoind - traefik.http.services.litecoin-mainnet-bitcoind-full.loadbalancer.server.port=8545 - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/litecoin-mainnet`) || Path(`/litecoin-mainnet/`))} - - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full.rule=Path(`/litecoin-mainnet`) || Path(`/litecoin-mainnet/`)} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/litecoin-mainnet-bitcoind`) || Path(`/litecoin-mainnet-bitcoind/`))} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full.rule=Path(`/litecoin-mainnet-bitcoind`) || Path(`/litecoin-mainnet-bitcoind/`)} - traefik.http.routers.litecoin-mainnet-bitcoind-full.middlewares=litecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-mainnet-bitcoind-full.service=litecoin-mainnet-bitcoind-full - traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.service=litecoin-mainnet-bitcoind-full-hashblock - traefik.http.services.litecoin-mainnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/hashblock`)} - - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.rule=PathPrefix(`/litecoin-mainnet/hashblock`)} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet-bitcoind/hashblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.rule=PathPrefix(`/litecoin-mainnet-bitcoind/hashblock`)} - traefik.http.routers.litecoin-mainnet-bitcoind-full-hashblock.middlewares=litecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.service=litecoin-mainnet-bitcoind-full-hashtx - traefik.http.services.litecoin-mainnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/hashtx`)} - - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.rule=PathPrefix(`/litecoin-mainnet/hashtx`)} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet-bitcoind/hashtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.rule=PathPrefix(`/litecoin-mainnet-bitcoind/hashtx`)} - traefik.http.routers.litecoin-mainnet-bitcoind-full-hashtx.middlewares=litecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.service=litecoin-mainnet-bitcoind-full-rawblock - traefik.http.services.litecoin-mainnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/rawblock`)} - - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.rule=PathPrefix(`/litecoin-mainnet/rawblock`)} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet-bitcoind/rawblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.rule=PathPrefix(`/litecoin-mainnet-bitcoind/rawblock`)} - traefik.http.routers.litecoin-mainnet-bitcoind-full-rawblock.middlewares=litecoin-mainnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.service=litecoin-mainnet-bitcoind-full-rawtx - traefik.http.services.litecoin-mainnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/rawtx`)} - - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.rule=PathPrefix(`/litecoin-mainnet/rawtx`)} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet-bitcoind/rawtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.rule=PathPrefix(`/litecoin-mainnet-bitcoind/rawtx`)} - traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.middlewares=litecoin-mainnet-bitcoind-full-stripprefix, ipallowlist volumes: diff --git a/litecoin/bitcoind/litecoin-testnet-bitcoind-full.yml b/litecoin/bitcoind/litecoin-testnet-bitcoind-full.yml index 88c9d6ef..5adb7175 100644 --- a/litecoin/bitcoind/litecoin-testnet-bitcoind-full.yml +++ b/litecoin/bitcoind/litecoin-testnet-bitcoind-full.yml @@ -19,7 +19,7 @@ # # docker compose up -d # -# curl -X POST https://${IP}.traefik.me/litecoin-testnet \ +# curl -X POST https://${IP}.traefik.me/litecoin-testnet-bitcoind \ # -H "Content-Type: application/json" \ # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' x-logging-defaults: &logging-defaults @@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults max-file: '3' services: - litecoin-testnet: - image: ${LITECOIN_BITCOIND_IMAGE:-uphold/litecoin-core}:${LITECOIN_TESTNET_BITCOIND_VERSION:-0.21} + litecoin-testnet-bitcoind: + image: ${LITECOIN_BITCOIND_IMAGE:-}:${LITECOIN_TESTNET_BITCOIND_VERSION:-} sysctls: # TCP Performance net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle @@ -81,41 +81,41 @@ services: labels: - prometheus-scrape.enabled=false - traefik.enable=true - - traefik.http.middlewares.litecoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/litecoin-testnet + - traefik.http.middlewares.litecoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/litecoin-testnet-bitcoind - traefik.http.services.litecoin-testnet-bitcoind-full.loadbalancer.server.port=8545 - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/litecoin-testnet`) || Path(`/litecoin-testnet/`))} - - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full.rule=Path(`/litecoin-testnet`) || Path(`/litecoin-testnet/`)} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/litecoin-testnet-bitcoind`) || Path(`/litecoin-testnet-bitcoind/`))} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full.rule=Path(`/litecoin-testnet-bitcoind`) || Path(`/litecoin-testnet-bitcoind/`)} - traefik.http.routers.litecoin-testnet-bitcoind-full.middlewares=litecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-testnet-bitcoind-full.service=litecoin-testnet-bitcoind-full - traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.service=litecoin-testnet-bitcoind-full-hashblock - traefik.http.services.litecoin-testnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/hashblock`)} - - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.rule=PathPrefix(`/litecoin-testnet/hashblock`)} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet-bitcoind/hashblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.rule=PathPrefix(`/litecoin-testnet-bitcoind/hashblock`)} - traefik.http.routers.litecoin-testnet-bitcoind-full-hashblock.middlewares=litecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.service=litecoin-testnet-bitcoind-full-hashtx - traefik.http.services.litecoin-testnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/hashtx`)} - - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.rule=PathPrefix(`/litecoin-testnet/hashtx`)} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet-bitcoind/hashtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.rule=PathPrefix(`/litecoin-testnet-bitcoind/hashtx`)} - traefik.http.routers.litecoin-testnet-bitcoind-full-hashtx.middlewares=litecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.service=litecoin-testnet-bitcoind-full-rawblock - traefik.http.services.litecoin-testnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/rawblock`)} - - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.rule=PathPrefix(`/litecoin-testnet/rawblock`)} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet-bitcoind/rawblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.rule=PathPrefix(`/litecoin-testnet-bitcoind/rawblock`)} - traefik.http.routers.litecoin-testnet-bitcoind-full-rawblock.middlewares=litecoin-testnet-bitcoind-full-stripprefix, ipallowlist - traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.service=litecoin-testnet-bitcoind-full-rawtx - traefik.http.services.litecoin-testnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/rawtx`)} - - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.rule=PathPrefix(`/litecoin-testnet/rawtx`)} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet-bitcoind/rawtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.rule=PathPrefix(`/litecoin-testnet-bitcoind/rawtx`)} - traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.middlewares=litecoin-testnet-bitcoind-full-stripprefix, ipallowlist volumes: diff --git a/litecoin/litecoind/litecoin-mainnet-litecoind-full.yml b/litecoin/litecoind/litecoin-mainnet-litecoind-full.yml new file mode 100644 index 00000000..2c367e96 --- /dev/null +++ b/litecoin/litecoind/litecoin-mainnet-litecoind-full.yml @@ -0,0 +1,144 @@ +--- + +# 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:litecoin/litecoind/litecoin-mainnet-litecoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/litecoin-mainnet \ +# -H "Content-Type: application/json" \ +# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' +x-logging-defaults: &logging-defaults + driver: json-file + options: + max-size: 10m + max-file: '3' + +services: + litecoin-mainnet: + image: ${LITECOIN_LITECOIND_IMAGE:-uphold/litecoin-core}:${LITECOIN_MAINNET_LITECOIND_VERSION:-0.21} + 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: + - 10159:10159 + - 10159:10159/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [litecoind] + command: + - -datadir=/data + - -externalip=${IP} + - -port=10159 + - -printtoconsole + - -rpcallowip=::/0 + - -rpcauth=username:0b6623bdebb516ced10631668833e42a$c478b38890678c51b9f013174a20addb317c2046b68c05e0250ff86e31a505f7 + - -rpcbind=0.0.0.0 + - -rpcport=8545 + - -server + - -zmqpubhashblock=tcp://0.0.0.0:28332 + - -zmqpubhashtx=tcp://0.0.0.0:28333 + - -zmqpubrawblock=tcp://0.0.0.0:28334 + - -zmqpubrawtx=tcp://0.0.0.0:28335 + restart: unless-stopped + stop_grace_period: 5m + networks: + - chains + volumes: + - ${LITECOIN_MAINNET_LITECOIND_FULL_DATA:-litecoin-mainnet-litecoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.litecoin-mainnet-litecoind-full-stripprefix.stripprefix.prefixes=/litecoin-mainnet + - traefik.http.services.litecoin-mainnet-litecoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full.rule=Host(`$DOMAIN`) && (Path(`/litecoin-mainnet`) || Path(`/litecoin-mainnet/`))} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-litecoind-full.rule=Path(`/litecoin-mainnet`) || Path(`/litecoin-mainnet/`)} + - traefik.http.routers.litecoin-mainnet-litecoind-full.middlewares=litecoin-mainnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-mainnet-litecoind-full.service=litecoin-mainnet-litecoind-full + - traefik.http.routers.litecoin-mainnet-litecoind-full-hashblock.service=litecoin-mainnet-litecoind-full-hashblock + - traefik.http.services.litecoin-mainnet-litecoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-litecoind-full-hashblock.rule=PathPrefix(`/litecoin-mainnet/hashblock`)} + - traefik.http.routers.litecoin-mainnet-litecoind-full-hashblock.middlewares=litecoin-mainnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-mainnet-litecoind-full-hashtx.service=litecoin-mainnet-litecoind-full-hashtx + - traefik.http.services.litecoin-mainnet-litecoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-litecoind-full-hashtx.rule=PathPrefix(`/litecoin-mainnet/hashtx`)} + - traefik.http.routers.litecoin-mainnet-litecoind-full-hashtx.middlewares=litecoin-mainnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-mainnet-litecoind-full-rawblock.service=litecoin-mainnet-litecoind-full-rawblock + - traefik.http.services.litecoin-mainnet-litecoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-litecoind-full-rawblock.rule=PathPrefix(`/litecoin-mainnet/rawblock`)} + - traefik.http.routers.litecoin-mainnet-litecoind-full-rawblock.middlewares=litecoin-mainnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-mainnet-litecoind-full-rawtx.service=litecoin-mainnet-litecoind-full-rawtx + - traefik.http.services.litecoin-mainnet-litecoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-mainnet-litecoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-mainnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-mainnet-litecoind-full-rawtx.rule=PathPrefix(`/litecoin-mainnet/rawtx`)} + - traefik.http.routers.litecoin-mainnet-litecoind-full-rawtx.middlewares=litecoin-mainnet-litecoind-full-stripprefix, ipallowlist + +volumes: + litecoin-mainnet-litecoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: litecoin + 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/litecoin/litecoind/litecoin-testnet-litecoind-full.yml b/litecoin/litecoind/litecoin-testnet-litecoind-full.yml new file mode 100644 index 00000000..dce67154 --- /dev/null +++ b/litecoin/litecoind/litecoin-testnet-litecoind-full.yml @@ -0,0 +1,145 @@ +--- + +# 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:litecoin/litecoind/litecoin-testnet-litecoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/litecoin-testnet \ +# -H "Content-Type: application/json" \ +# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' +x-logging-defaults: &logging-defaults + driver: json-file + options: + max-size: 10m + max-file: '3' + +services: + litecoin-testnet: + image: ${LITECOIN_LITECOIND_IMAGE:-uphold/litecoin-core}:${LITECOIN_TESTNET_LITECOIND_VERSION:-0.21} + 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: + - 10051:10051 + - 10051:10051/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [litecoind] + command: + - -datadir=/data + - -externalip=${IP} + - -port=10051 + - -printtoconsole + - -rpcallowip=::/0 + - -rpcauth=username:0b6623bdebb516ced10631668833e42a$c478b38890678c51b9f013174a20addb317c2046b68c05e0250ff86e31a505f7 + - -rpcbind=0.0.0.0 + - -rpcport=8545 + - -server + - -testnet + - -zmqpubhashblock=tcp://0.0.0.0:28332 + - -zmqpubhashtx=tcp://0.0.0.0:28333 + - -zmqpubrawblock=tcp://0.0.0.0:28334 + - -zmqpubrawtx=tcp://0.0.0.0:28335 + restart: unless-stopped + stop_grace_period: 5m + networks: + - chains + volumes: + - ${LITECOIN_TESTNET_LITECOIND_FULL_DATA:-litecoin-testnet-litecoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.litecoin-testnet-litecoind-full-stripprefix.stripprefix.prefixes=/litecoin-testnet + - traefik.http.services.litecoin-testnet-litecoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full.rule=Host(`$DOMAIN`) && (Path(`/litecoin-testnet`) || Path(`/litecoin-testnet/`))} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-litecoind-full.rule=Path(`/litecoin-testnet`) || Path(`/litecoin-testnet/`)} + - traefik.http.routers.litecoin-testnet-litecoind-full.middlewares=litecoin-testnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-testnet-litecoind-full.service=litecoin-testnet-litecoind-full + - traefik.http.routers.litecoin-testnet-litecoind-full-hashblock.service=litecoin-testnet-litecoind-full-hashblock + - traefik.http.services.litecoin-testnet-litecoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-litecoind-full-hashblock.rule=PathPrefix(`/litecoin-testnet/hashblock`)} + - traefik.http.routers.litecoin-testnet-litecoind-full-hashblock.middlewares=litecoin-testnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-testnet-litecoind-full-hashtx.service=litecoin-testnet-litecoind-full-hashtx + - traefik.http.services.litecoin-testnet-litecoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-litecoind-full-hashtx.rule=PathPrefix(`/litecoin-testnet/hashtx`)} + - traefik.http.routers.litecoin-testnet-litecoind-full-hashtx.middlewares=litecoin-testnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-testnet-litecoind-full-rawblock.service=litecoin-testnet-litecoind-full-rawblock + - traefik.http.services.litecoin-testnet-litecoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-litecoind-full-rawblock.rule=PathPrefix(`/litecoin-testnet/rawblock`)} + - traefik.http.routers.litecoin-testnet-litecoind-full-rawblock.middlewares=litecoin-testnet-litecoind-full-stripprefix, ipallowlist + - traefik.http.routers.litecoin-testnet-litecoind-full-rawtx.service=litecoin-testnet-litecoind-full-rawtx + - traefik.http.services.litecoin-testnet-litecoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.litecoin-testnet-litecoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/litecoin-testnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.litecoin-testnet-litecoind-full-rawtx.rule=PathPrefix(`/litecoin-testnet/rawtx`)} + - traefik.http.routers.litecoin-testnet-litecoind-full-rawtx.middlewares=litecoin-testnet-litecoind-full-stripprefix, ipallowlist + +volumes: + litecoin-testnet-litecoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: litecoin-testnet + method-groups: + enabled: + - debug + - filter + methods: + disabled: + enabled: + - name: txpool_content # TODO: should be disabled for rollup nodes +... \ No newline at end of file