From a8354bebbe6ea497888848ee78d62faa121c5766 Mon Sep 17 00:00:00 2001 From: Para Dox Date: Wed, 21 May 2025 23:12:36 +0700 Subject: [PATCH] god entered the room --- .../bitcoin-cash-mainnet-bitcoind-full.yml | 144 +++++++++++++++++ .../bitcoin-cash-testnet-bitcoind-full.yml | 145 ++++++++++++++++++ .../bitcoin-mainnet-bitcoind-full.yml | 144 +++++++++++++++++ .../bitcoin-testnet-bitcoind-full.yml | 145 ++++++++++++++++++ .../dogecoin-mainnet-bitcoind-full.yml | 144 +++++++++++++++++ .../dogecoin-testnet-bitcoind-full.yml | 145 ++++++++++++++++++ .../litecoin-mainnet-bitcoind-full.yml | 144 +++++++++++++++++ .../litecoin-testnet-bitcoind-full.yml | 145 ++++++++++++++++++ 8 files changed, 1156 insertions(+) create mode 100644 bitcoin-cash/bitcoind/bitcoin-cash-mainnet-bitcoind-full.yml create mode 100644 bitcoin-cash/bitcoind/bitcoin-cash-testnet-bitcoind-full.yml create mode 100644 bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml create mode 100644 bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml create mode 100644 dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml create mode 100644 dogecoin/bitcoind/dogecoin-testnet-bitcoind-full.yml create mode 100644 litecoin/bitcoind/litecoin-mainnet-bitcoind-full.yml create mode 100644 litecoin/bitcoind/litecoin-testnet-bitcoind-full.yml diff --git a/bitcoin-cash/bitcoind/bitcoin-cash-mainnet-bitcoind-full.yml b/bitcoin-cash/bitcoind/bitcoin-cash-mainnet-bitcoind-full.yml new file mode 100644 index 00000000..9fe12973 --- /dev/null +++ b/bitcoin-cash/bitcoind/bitcoin-cash-mainnet-bitcoind-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:bitcoin-cash/bitcoind/bitcoin-cash-mainnet-bitcoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/bitcoin-cash-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: + bitcoin-cash-mainnet: + image: ${BITCOIN_CASH_BITCOIND_IMAGE:-bitcoinabc/bitcoin-abc}:${BITCOIN_CASH_MAINNET_BITCOIND_VERSION:-0.31.4} + 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: + - 10863:10863 + - 10863:10863/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [bitcoin-cashd] + command: + - -datadir=/data + - -externalip=${IP} + - -port=10863 + - -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: + - ${BITCOIN_CASH_MAINNET_BITCOIND_FULL_DATA:-bitcoin-cash-mainnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.bitcoin-cash-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/bitcoin-cash-mainnet + - traefik.http.services.bitcoin-cash-mainnet-bitcoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/bitcoin-cash-mainnet`) || Path(`/bitcoin-cash-mainnet/`))} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full.rule=Path(`/bitcoin-cash-mainnet`) || Path(`/bitcoin-cash-mainnet/`)} + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full.middlewares=bitcoin-cash-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full.service=bitcoin-cash-mainnet-bitcoind-full + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashblock.service=bitcoin-cash-mainnet-bitcoind-full-hashblock + - traefik.http.services.bitcoin-cash-mainnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-mainnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashblock.rule=PathPrefix(`/bitcoin-cash-mainnet/hashblock`)} + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashblock.middlewares=bitcoin-cash-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashtx.service=bitcoin-cash-mainnet-bitcoind-full-hashtx + - traefik.http.services.bitcoin-cash-mainnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-mainnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashtx.rule=PathPrefix(`/bitcoin-cash-mainnet/hashtx`)} + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-hashtx.middlewares=bitcoin-cash-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawblock.service=bitcoin-cash-mainnet-bitcoind-full-rawblock + - traefik.http.services.bitcoin-cash-mainnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-mainnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawblock.rule=PathPrefix(`/bitcoin-cash-mainnet/rawblock`)} + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawblock.middlewares=bitcoin-cash-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawtx.service=bitcoin-cash-mainnet-bitcoind-full-rawtx + - traefik.http.services.bitcoin-cash-mainnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-mainnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawtx.rule=PathPrefix(`/bitcoin-cash-mainnet/rawtx`)} + - traefik.http.routers.bitcoin-cash-mainnet-bitcoind-full-rawtx.middlewares=bitcoin-cash-mainnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + bitcoin-cash-mainnet-bitcoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: bitcoin-cash + 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/bitcoin-cash/bitcoind/bitcoin-cash-testnet-bitcoind-full.yml b/bitcoin-cash/bitcoind/bitcoin-cash-testnet-bitcoind-full.yml new file mode 100644 index 00000000..b82015d5 --- /dev/null +++ b/bitcoin-cash/bitcoind/bitcoin-cash-testnet-bitcoind-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:bitcoin-cash/bitcoind/bitcoin-cash-testnet-bitcoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/bitcoin-cash-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: + bitcoin-cash-testnet: + image: ${BITCOIN_CASH_BITCOIND_IMAGE:-bitcoinabc/bitcoin-abc}:${BITCOIN_CASH_TESTNET_BITCOIND_VERSION:-0.31.4} + 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: + - 14363:14363 + - 14363:14363/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [bitcoin-cashd] + command: + - -datadir=/data + - -externalip=${IP} + - -port=14363 + - -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: + - ${BITCOIN_CASH_TESTNET_BITCOIND_FULL_DATA:-bitcoin-cash-testnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.bitcoin-cash-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/bitcoin-cash-testnet + - traefik.http.services.bitcoin-cash-testnet-bitcoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/bitcoin-cash-testnet`) || Path(`/bitcoin-cash-testnet/`))} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-testnet-bitcoind-full.rule=Path(`/bitcoin-cash-testnet`) || Path(`/bitcoin-cash-testnet/`)} + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full.middlewares=bitcoin-cash-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full.service=bitcoin-cash-testnet-bitcoind-full + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashblock.service=bitcoin-cash-testnet-bitcoind-full-hashblock + - traefik.http.services.bitcoin-cash-testnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-testnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashblock.rule=PathPrefix(`/bitcoin-cash-testnet/hashblock`)} + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashblock.middlewares=bitcoin-cash-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashtx.service=bitcoin-cash-testnet-bitcoind-full-hashtx + - traefik.http.services.bitcoin-cash-testnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-testnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashtx.rule=PathPrefix(`/bitcoin-cash-testnet/hashtx`)} + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-hashtx.middlewares=bitcoin-cash-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawblock.service=bitcoin-cash-testnet-bitcoind-full-rawblock + - traefik.http.services.bitcoin-cash-testnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-testnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawblock.rule=PathPrefix(`/bitcoin-cash-testnet/rawblock`)} + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawblock.middlewares=bitcoin-cash-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawtx.service=bitcoin-cash-testnet-bitcoind-full-rawtx + - traefik.http.services.bitcoin-cash-testnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-cash-testnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawtx.rule=PathPrefix(`/bitcoin-cash-testnet/rawtx`)} + - traefik.http.routers.bitcoin-cash-testnet-bitcoind-full-rawtx.middlewares=bitcoin-cash-testnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + bitcoin-cash-testnet-bitcoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: bitcoin-cash-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/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml b/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml new file mode 100644 index 00000000..038224e2 --- /dev/null +++ b/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-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:bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/bitcoin-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: + bitcoin-mainnet: + image: ${BITCOIN_BITCOIND_IMAGE:-lncm/bitcoind}:${BITCOIN_MAINNET_BITCOIND_VERSION:-v27.2} + 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: + - 12518:12518 + - 12518:12518/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [bitcoind] + command: + - -datadir=/data + - -externalip=${IP} + - -port=12518 + - -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: + - ${BITCOIN_MAINNET_BITCOIND_FULL_DATA:-bitcoin-mainnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.bitcoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/bitcoin-mainnet + - traefik.http.services.bitcoin-mainnet-bitcoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/bitcoin-mainnet`) || Path(`/bitcoin-mainnet/`))} + - ${NO_SSL:+traefik.http.routers.bitcoin-mainnet-bitcoind-full.rule=Path(`/bitcoin-mainnet`) || Path(`/bitcoin-mainnet/`)} + - traefik.http.routers.bitcoin-mainnet-bitcoind-full.middlewares=bitcoin-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-mainnet-bitcoind-full.service=bitcoin-mainnet-bitcoind-full + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashblock.service=bitcoin-mainnet-bitcoind-full-hashblock + - traefik.http.services.bitcoin-mainnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-mainnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashblock.rule=PathPrefix(`/bitcoin-mainnet/hashblock`)} + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashblock.middlewares=bitcoin-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashtx.service=bitcoin-mainnet-bitcoind-full-hashtx + - traefik.http.services.bitcoin-mainnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-mainnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashtx.rule=PathPrefix(`/bitcoin-mainnet/hashtx`)} + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-hashtx.middlewares=bitcoin-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawblock.service=bitcoin-mainnet-bitcoind-full-rawblock + - traefik.http.services.bitcoin-mainnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-mainnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawblock.rule=PathPrefix(`/bitcoin-mainnet/rawblock`)} + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawblock.middlewares=bitcoin-mainnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawtx.service=bitcoin-mainnet-bitcoind-full-rawtx + - traefik.http.services.bitcoin-mainnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-mainnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawtx.rule=PathPrefix(`/bitcoin-mainnet/rawtx`)} + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-rawtx.middlewares=bitcoin-mainnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + bitcoin-mainnet-bitcoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: bitcoin + 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/bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml b/bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml new file mode 100644 index 00000000..ed12a470 --- /dev/null +++ b/bitcoin/bitcoind/bitcoin-testnet-bitcoind-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:bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml +# +# docker compose up -d +# +# curl -X POST https://${IP}.traefik.me/bitcoin-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: + bitcoin-testnet: + image: ${BITCOIN_BITCOIND_IMAGE:-lncm/bitcoind}:${BITCOIN_TESTNET_BITCOIND_VERSION:-v27.2} + 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: + - 13668:13668 + - 13668:13668/udp + expose: + - 8545 + - '28332' # ZMQ hashblock port + - '28333' # ZMQ hashtx port + - '28334' # ZMQ rawblock port + - '28335' # ZMQ rawtx port + entrypoint: [bitcoind] + command: + - -datadir=/data + - -externalip=${IP} + - -port=13668 + - -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: + - ${BITCOIN_TESTNET_BITCOIND_FULL_DATA:-bitcoin-testnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.bitcoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/bitcoin-testnet + - traefik.http.services.bitcoin-testnet-bitcoind-full.loadbalancer.server.port=8545 + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full.rule=Host(`$DOMAIN`) && (Path(`/bitcoin-testnet`) || Path(`/bitcoin-testnet/`))} + - ${NO_SSL:+traefik.http.routers.bitcoin-testnet-bitcoind-full.rule=Path(`/bitcoin-testnet`) || Path(`/bitcoin-testnet/`)} + - traefik.http.routers.bitcoin-testnet-bitcoind-full.middlewares=bitcoin-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-testnet-bitcoind-full.service=bitcoin-testnet-bitcoind-full + - traefik.http.routers.bitcoin-testnet-bitcoind-full-hashblock.service=bitcoin-testnet-bitcoind-full-hashblock + - traefik.http.services.bitcoin-testnet-bitcoind-full-hashblock.loadbalancer.server.port=28332 + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-hashblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-hashblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-hashblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-testnet/hashblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-testnet-bitcoind-full-hashblock.rule=PathPrefix(`/bitcoin-testnet/hashblock`)} + - traefik.http.routers.bitcoin-testnet-bitcoind-full-hashblock.middlewares=bitcoin-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-testnet-bitcoind-full-hashtx.service=bitcoin-testnet-bitcoind-full-hashtx + - traefik.http.services.bitcoin-testnet-bitcoind-full-hashtx.loadbalancer.server.port=28333 + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-hashtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-hashtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-hashtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-testnet/hashtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-testnet-bitcoind-full-hashtx.rule=PathPrefix(`/bitcoin-testnet/hashtx`)} + - traefik.http.routers.bitcoin-testnet-bitcoind-full-hashtx.middlewares=bitcoin-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-testnet-bitcoind-full-rawblock.service=bitcoin-testnet-bitcoind-full-rawblock + - traefik.http.services.bitcoin-testnet-bitcoind-full-rawblock.loadbalancer.server.port=28334 + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-rawblock.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-rawblock.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-rawblock.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-testnet/rawblock`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-testnet-bitcoind-full-rawblock.rule=PathPrefix(`/bitcoin-testnet/rawblock`)} + - traefik.http.routers.bitcoin-testnet-bitcoind-full-rawblock.middlewares=bitcoin-testnet-bitcoind-full-stripprefix, ipallowlist + - traefik.http.routers.bitcoin-testnet-bitcoind-full-rawtx.service=bitcoin-testnet-bitcoind-full-rawtx + - traefik.http.services.bitcoin-testnet-bitcoind-full-rawtx.loadbalancer.server.port=28335 + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-rawtx.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-rawtx.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-rawtx.rule=Host(`$DOMAIN`) && PathPrefix(`/bitcoin-testnet/rawtx`)} + - ${NO_SSL:+traefik.http.routers.bitcoin-testnet-bitcoind-full-rawtx.rule=PathPrefix(`/bitcoin-testnet/rawtx`)} + - traefik.http.routers.bitcoin-testnet-bitcoind-full-rawtx.middlewares=bitcoin-testnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + bitcoin-testnet-bitcoind-full: + +x-upstreams: + - id: $${ID} + labels: + provider: $${PROVIDER} + connection: + generic: + rpc: + url: $${RPC_URL} + ws: + frameSize: 20Mb + msgSize: 50Mb + url: $${WS_URL} + chain: bitcoin-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/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml b/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-full.yml new file mode 100644 index 00000000..47c585f9 --- /dev/null +++ b/dogecoin/bitcoind/dogecoin-mainnet-bitcoind-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/bitcoind/dogecoin-mainnet-bitcoind-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_BITCOIND_IMAGE:-btcpayserver/dogecoin}:${DOGECOIN_MAINNET_BITCOIND_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: + - 10588:10588 + - 10588:10588/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=10588 + - -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_BITCOIND_FULL_DATA:-dogecoin-mainnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.dogecoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/dogecoin-mainnet + - 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/`)} + - 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`)} + - 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`)} + - 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`)} + - 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`)} + - traefik.http.routers.dogecoin-mainnet-bitcoind-full-rawtx.middlewares=dogecoin-mainnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + dogecoin-mainnet-bitcoind-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/bitcoind/dogecoin-testnet-bitcoind-full.yml b/dogecoin/bitcoind/dogecoin-testnet-bitcoind-full.yml new file mode 100644 index 00000000..5c3d728d --- /dev/null +++ b/dogecoin/bitcoind/dogecoin-testnet-bitcoind-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/bitcoind/dogecoin-testnet-bitcoind-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_BITCOIND_IMAGE:-btcpayserver/dogecoin}:${DOGECOIN_TESTNET_BITCOIND_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: + - 12266:12266 + - 12266:12266/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=12266 + - -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_BITCOIND_FULL_DATA:-dogecoin-testnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.dogecoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/dogecoin-testnet + - 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/`)} + - 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`)} + - 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`)} + - 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`)} + - 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`)} + - traefik.http.routers.dogecoin-testnet-bitcoind-full-rawtx.middlewares=dogecoin-testnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + dogecoin-testnet-bitcoind-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 new file mode 100644 index 00000000..9ff5cdd1 --- /dev/null +++ b/litecoin/bitcoind/litecoin-mainnet-bitcoind-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/bitcoind/litecoin-mainnet-bitcoind-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_BITCOIND_IMAGE:-uphold/litecoin-core}:${LITECOIN_MAINNET_BITCOIND_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: + - 13457:13457 + - 13457:13457/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=13457 + - -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_BITCOIND_FULL_DATA:-litecoin-mainnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.litecoin-mainnet-bitcoind-full-stripprefix.stripprefix.prefixes=/litecoin-mainnet + - 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/`)} + - 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`)} + - 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`)} + - 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`)} + - 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`)} + - traefik.http.routers.litecoin-mainnet-bitcoind-full-rawtx.middlewares=litecoin-mainnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + litecoin-mainnet-bitcoind-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/bitcoind/litecoin-testnet-bitcoind-full.yml b/litecoin/bitcoind/litecoin-testnet-bitcoind-full.yml new file mode 100644 index 00000000..88c9d6ef --- /dev/null +++ b/litecoin/bitcoind/litecoin-testnet-bitcoind-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/bitcoind/litecoin-testnet-bitcoind-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_BITCOIND_IMAGE:-uphold/litecoin-core}:${LITECOIN_TESTNET_BITCOIND_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: + - 13812:13812 + - 13812:13812/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=13812 + - -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_BITCOIND_FULL_DATA:-litecoin-testnet-bitcoind-full}:/data + - /slowdisk:/slowdisk + logging: *logging-defaults + labels: + - prometheus-scrape.enabled=false + - traefik.enable=true + - traefik.http.middlewares.litecoin-testnet-bitcoind-full-stripprefix.stripprefix.prefixes=/litecoin-testnet + - 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/`)} + - 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`)} + - 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`)} + - 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`)} + - 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`)} + - traefik.http.routers.litecoin-testnet-bitcoind-full-rawtx.middlewares=litecoin-testnet-bitcoind-full-stripprefix, ipallowlist + +volumes: + litecoin-testnet-bitcoind-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