From e57fdad3fe65713ae63d50a4dbc2af716ce8921b Mon Sep 17 00:00:00 2001 From: Para Dox Date: Thu, 22 May 2025 14:21:39 +0700 Subject: [PATCH] indexer for bitcoin --- .../bitcoin-mainnet-bitcoind-full.yml | 35 +++++++++++++++++++ .../bitcoin-testnet-bitcoind-full.yml | 35 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml b/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml index 118b8c47..bfa89169 100644 --- a/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml +++ b/bitcoin/bitcoind/bitcoin-mainnet-bitcoind-full.yml @@ -117,6 +117,41 @@ services: - ${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 +bitcoin-mainnet-indexer: + + logging: *logging-defaults + + image: blockstream/esplora + + expose: + - 3000 # HTTP + - 50001 # RPC (electrum) + + environment: + - ELECTRS_DAEMON_RPC_ADDR=bitcoin-mainnet:8545 + - ELECTRS_DAEMON_P2P_ADDR=bitcoin-mainnet:12518 + - ELECTRS_RPC_USER=username + - ELECTRS_RPC_PASS=password + - ELECTRS_JSONRPC_IMPORT=true + - ELECTRS_NETWORK=bitcoin # Options: bitcoin, testnet, signet, regtest, liquidv1, liquidtestnet + - ELECTRS_DB_DIR=/data/electrs + - ELECTRS_ELECTRUM_RPC_ADDR=0.0.0.0:50001 + - ELECTRS_HTTP_ADDR=0.0.0.0:3000 + + volumes: + - ${BITCOIN_MAINNET_BITCOIND_FULL__ESPLORA_DATA:-bitcoin-mainnet-bitcoind-full_esplora}:/data + + labels: + - traefik.enable=true + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-esplora.service=bitcoin-mainnet-bitcoind-full-esplora + - traefik.http.middlewares.bitcoin-mainnet-bitcoind-full-esplora-stripprefix.stripprefix.prefixes=/bitcoin-mainnet + - traefik.http.services.bitcoin-mainnet-bitcoind-full-esplora.loadbalancer.server.port=3000 + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-esplora.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-esplora.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-mainnet-bitcoind-full-esplora.rule=Host(`$DOMAIN`) && (PathPrefix(`bitcoin-mainnet/address`) || PathPrefix(`bitcoin-mainnet/tx`) || PathPrefix(`bitcoin-mainnet/block`) || PathPrefix(`bitcoin-mainnet/blocks`) || PathPrefix(`bitcoin-mainnet/mempool`) || PathPrefix(`bitcoin-mainnet/fee-estimates`) || PathPrefix(`bitcoin-mainnet/scripthash`) || PathPrefix(`bitcoin-mainnet/asset`)) + - ${NO_SSL:+traefik.http.routers.bitcoin-mainnet-bitcoind-full-esplora.rule=PathPrefix(`bitcoin-mainnet/address`) || PathPrefix(`bitcoin-mainnet/tx`) || PathPrefix(`bitcoin-mainnet/block`) || PathPrefix(`bitcoin-mainnet/blocks`) || PathPrefix(`bitcoin-mainnet/mempool`) || PathPrefix(`bitcoin-mainnet/fee-estimates`) || PathPrefix(`bitcoin-mainnet/scripthash`) || PathPrefix(`bitcoin-mainnet/asset`)) + - traefik.http.routers.bitcoin-mainnet-bitcoind-full-esplora.middlewares=bitcoin-mainnet-bitcoind-full-esplora-stripprefix, ipallowlist + volumes: bitcoin-mainnet-bitcoind-full: diff --git a/bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml b/bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml index dd988646..7b63b25a 100644 --- a/bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml +++ b/bitcoin/bitcoind/bitcoin-testnet-bitcoind-full.yml @@ -118,6 +118,41 @@ services: - ${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 +bitcoin-testnet-indexer: + + logging: *logging-defaults + + image: blockstream/esplora + + expose: + - 3000 # HTTP + - 50001 # RPC (electrum) + + environment: + - ELECTRS_DAEMON_RPC_ADDR=bitcoin-testnet:8545 + - ELECTRS_DAEMON_P2P_ADDR=bitcoin-testnet:13668 + - ELECTRS_RPC_USER=username + - ELECTRS_RPC_PASS=password + - ELECTRS_JSONRPC_IMPORT=true + - ELECTRS_NETWORK=bitcoin-testnet # Options: bitcoin, testnet, signet, regtest, liquidv1, liquidtestnet + - ELECTRS_DB_DIR=/data/electrs + - ELECTRS_ELECTRUM_RPC_ADDR=0.0.0.0:50001 + - ELECTRS_HTTP_ADDR=0.0.0.0:3000 + + volumes: + - ${BITCOIN_TESTNET_BITCOIND_FULL__ESPLORA_DATA:-bitcoin-testnet-bitcoind-full_esplora}:/data + + labels: + - traefik.enable=true + - traefik.http.routers.bitcoin-testnet-bitcoind-full-esplora.service=bitcoin-testnet-bitcoind-full-esplora + - traefik.http.middlewares.bitcoin-testnet-bitcoind-full-esplora-stripprefix.stripprefix.prefixes=/bitcoin-testnet + - traefik.http.services.bitcoin-testnet-bitcoind-full-esplora.loadbalancer.server.port=3000 + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-esplora.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-esplora.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.bitcoin-testnet-bitcoind-full-esplora.rule=Host(`$DOMAIN`) && (PathPrefix(`bitcoin-testnet/address`) || PathPrefix(`bitcoin-testnet/tx`) || PathPrefix(`bitcoin-testnet/block`) || PathPrefix(`bitcoin-testnet/blocks`) || PathPrefix(`bitcoin-testnet/mempool`) || PathPrefix(`bitcoin-testnet/fee-estimates`) || PathPrefix(`bitcoin-testnet/scripthash`) || PathPrefix(`bitcoin-testnet/asset`)) + - ${NO_SSL:+traefik.http.routers.bitcoin-testnet-bitcoind-full-esplora.rule=PathPrefix(`bitcoin-testnet/address`) || PathPrefix(`bitcoin-testnet/tx`) || PathPrefix(`bitcoin-testnet/block`) || PathPrefix(`bitcoin-testnet/blocks`) || PathPrefix(`bitcoin-testnet/mempool`) || PathPrefix(`bitcoin-testnet/fee-estimates`) || PathPrefix(`bitcoin-testnet/scripthash`) || PathPrefix(`bitcoin-testnet/asset`)) + - traefik.http.routers.bitcoin-testnet-bitcoind-full-esplora.middlewares=bitcoin-testnet-bitcoind-full-esplora-stripprefix, ipallowlist + volumes: bitcoin-testnet-bitcoind-full: