version: "3.7"

services:
  app_proxy:
    environment:
      APP_HOST: elements_web_1
      APP_PORT: 8080

  node:
    image: ghcr.io/vulpemventures/elements:23.2.1@sha256:8bd481aaa0f055b59a8c0bb7e56b0f1d1a55143acbb0d07465778538730c41b3
    restart: on-failure
    stop_grace_period: 1m
    ports:
      - $APP_ELEMENTS_NODE_RPC_PORT:$APP_ELEMENTS_NODE_RPC_PORT # JSONRPC
      - $APP_ELEMENTS_NODE_P2P_PORT:$APP_ELEMENTS_NODE_P2P_PORT # P2P PORT
    volumes:
      - ${APP_DATA_DIR}/data:/home/elements/.elements
    command:
      - -listen=0
      - -txindex=1
      - -trim_headers=1
      # Current Elements Core requires >8GB of RAM to verify confidential proofs during IBD
      # We skip historical block verification for now, as we don't have a way to set the memory limit
      - -assumevalid=546a756e0238e8c5c2c8bee43f0395740519f96aaee5994d05ef6569ce2d0821
      - -validatepegin=1
      - -fallbackfee=0.000001
      # Attach to Bitcoin network
      - -mainchainrpchost=$APP_BITCOIN_NODE_IP
      - -mainchainrpcport=$APP_BITCOIN_RPC_PORT
      - -mainchainrpcuser=$APP_BITCOIN_RPC_USER
      - -mainchainrpcpassword=$APP_BITCOIN_RPC_PASS
      # Elements RPC
      - -rpcuser=elements
      - -rpcpassword=$APP_PASSWORD
      - -rpcbind=0.0.0.0 # can we do better here?
      - -rpcallowip=0.0.0.0/0 # can we do better here?
      - -rpcport=$APP_ELEMENTS_NODE_RPC_PORT
      # P2P 
      - -port=$APP_ELEMENTS_NODE_P2P_PORT
      - -blockfilterindex=1
      - -peerblockfilters=1
  
  web: 
    image: ghcr.io/tiero/elements-web:v0.0.3@sha256:b80dc0df2a4693668a97b874aad6d0a8d3239d03f4d05b4342600166934d0b87
    depends_on:
      - node
    restart: on-failure
    environment:
      RPC_USER: elements
      RPC_PASS: $APP_PASSWORD
      RPC_PORT: $APP_ELEMENTS_NODE_RPC_PORT
      RPC_HOST: elements_node_1
      P2P_PORT: $APP_ELEMENTS_NODE_P2P_PORT
      # Remote 
      REMOTE_RPC_HOST: $APP_ELEMENTS_RPC_HIDDEN_SERVICE
      REMOTE_P2P_HOST: $APP_ELEMENTS_P2P_HIDDEN_SERVICE
  
  tor:
    image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a
    user: "1000:1000"
    restart: on-failure
    volumes:
      - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro
      - ${TOR_DATA_DIR}:/data
    environment:
      HOME: "/tmp"