version: "3"

services:
  lnd_bitcoin:
    image: btcpayserver/lnd:v0.7.0-beta
    container_name: btcpayserver_lnd_bitcoin
    restart: unless-stopped
    environment:
      LND_CHAIN: "btc"
      LND_EXTERNALIP: ${BTCPAY_ANNOUNCEABLE_HOST}
      LND_PORT: 9735
      LND_ALIAS: ${LIGHTNING_ALIAS}
      LND_ENVIRONMENT: "${NBITCOIN_NETWORK:-regtest}"
      LND_READY_FILE: /root/.nbxplorer/btc_fully_synched
      LND_EXTRA_ARGS: |
        restlisten=0.0.0.0:8080
        rpclisten=127.0.0.1:10008
        rpclisten=0.0.0.0:10009
        bitcoin.node=bitcoind
        bitcoind.rpcuser=lnd
        bitcoind.rpcpass=afixedpasswordbecauselndsuckswithcookiefile
        bitcoind.rpchost=bitcoind:43782
        bitcoind.zmqpubrawblock=tcp://bitcoind:28332
        bitcoind.zmqpubrawtx=tcp://bitcoind:28333
        adminmacaroonpath=/data/admin.macaroon
        invoicemacaroonpath=/data/invoice.macaroon
        readonlymacaroonpath=/data/readonly.macaroon
        noseedbackup=1
        notls=1
    ports:
      - "9735:9735"
    expose:
      - "8080"
      - "9735"
    volumes:
      - "lnd_bitcoin_datadir:/data"
      - "bitcoin_datadir:/deps/.bitcoin"
      - "nbxplorer_datadir:/root/.nbxplorer"
    links:
      - bitcoind

  lnd_bitcoin_rtl:
    image: shahanafarooqui/rtl:0.3.2
    restart: unless-stopped
    environment:
      LND_SERVER_URL: http://lnd_bitcoin:8080/v1
      MACAROON_PATH: /etc/lnd
      LND_CONFIG_PATH: /etc/lnd/lnd.conf
      RTL_CONFIG_PATH: /data/RTL.conf
      BITCOIND_CONFIG_PATH: /etc/bitcoin/bitcoin.conf
      RTL_SSO: 1
      RTL_COOKIE_PATH: /data/.cookie
      LOGOUT_REDIRECT_LINK: /server/services
    volumes:
      - "bitcoin_datadir:/etc/bitcoin"
      - "lnd_bitcoin_datadir:/etc/lnd"
      - "lnd_bitcoin_rtl_datadir:/data"
    expose:
      - "3000"

  btcpayserver:
    environment:
      BTCPAY_BTCLIGHTNING: "type=lnd-rest;server=http://lnd_bitcoin:8080/;macaroonfilepath=/etc/lnd_bitcoin/admin.macaroon;allowinsecure=true"
      BTCPAY_BTCEXTERNALRTL: "server=/rtl/api/authenticate/cookie;cookiefile=/etc/lnd_bitcoin_rtl/.cookie"
      BTCPAY_BTCEXTERNALLNDGRPC: "server=/;macaroonfilepath=/etc/lnd_bitcoin/admin.macaroon;macaroondirectorypath=/etc/lnd_bitcoin"
      BTCPAY_BTCEXTERNALLNDREST: "server=/lnd-rest/btc/;macaroonfilepath=/etc/lnd_bitcoin/admin.macaroon;macaroondirectorypath=/etc/lnd_bitcoin"
    volumes:
      - "lnd_bitcoin_datadir:/etc/lnd_bitcoin"
      - "lnd_bitcoin_rtl_datadir:/etc/lnd_bitcoin_rtl"
    links:
      - lnd_bitcoin

  bitcoind:
    environment:
      BITCOIN_EXTRA_ARGS: |
        zmqpubrawblock=tcp://0.0.0.0:28332
        zmqpubrawtx=tcp://0.0.0.0:28333
        # rpcuser=lnd
        # rpcpassword=afixedpasswordbecauselndsuckswithcookiefile
        # We need to use rpcauth because we also need cookieauth. rpcpassword disabled cookie file auth.
        # Be careful if you copy the line below from the docker-compose.yml! A dollar sign is escaped.
        rpcauth=lnd:d031f7567c5b02ba95524170e51c77f4$$827ce5412f653d6613c2f480e521eb437c866b999bdeb2ee4f9c41d3b00dff1c
    expose:
      - "28332"
      - "28333"
  
  nginx:
    links:
      - "lnd_bitcoin"
    volumes:
      - "lnd_bitcoin_datadir:/lnd"
  nginx-gen:
    links:
      - "lnd_bitcoin"
    volumes:
      - "lnd_bitcoin_datadir:/lnd"

volumes:
  lnd_bitcoin_datadir:
  lnd_bitcoin_rtl_datadir: