version: '3'
services:
  bitcoind:
    image: ruimarinho/bitcoin-core:23
    container_name: bitcoind
    restart: unless-stopped
    networks:
      regtest:
        aliases:
          - bitcoind
    command:
      - "-txindex"
      - "-regtest"
      - "-rest"
      - "-printtoconsole"
      - "-zmqpubrawblock=tcp://0.0.0.0:28332"
      - "-zmqpubrawtx=tcp://0.0.0.0:28333"
      - "-rpcport=18443"
      - "-rpcbind=0.0.0.0"
      # This is just the hashed string "lightning" with a salt.
      - "-rpcauth=lightning:8492220e715bbfdf5f165102bfd7ed4$$88090545821ed5e9db614588c0afbad575ccc14681fb77f3cae6899bc419af67"
      - "-rpcallowip=0.0.0.0/0"
      - "-fallbackfee=0.0002"
      - "-peerblockfilters=1"
      - "-blockfilterindex=1"
      - "-wallet=/home/bitcoin/.bitcoin/regtest/wallets/miner"
    environment:
      - HOME=/home/bitcoin
    volumes:
      - bitcoind:/home/bitcoin/.bitcoin

  lndserver:
    image: lightninglabs/lnd:v0.18.5-beta
    container_name: lndserver 
    restart: unless-stopped
    networks:
      regtest:
        aliases:
          - lndserver
    volumes:
      - "lndserver:/root/.lnd"
    depends_on:
      - bitcoind
    command:
      - "--logdir=/root/.lnd"
      - "--alias=lndserver"
      - "--rpclisten=0.0.0.0:10009"
      - "--noseedbackup"
      - "--bitcoin.active"
      - "--bitcoin.regtest"
      - "--bitcoin.node=bitcoind"
      - "--bitcoind.rpchost=bitcoind"
      - "--bitcoind.rpcuser=lightning"
      - "--bitcoind.rpcpass=lightning"
      - "--bitcoind.zmqpubrawblock=tcp://bitcoind:28332"
      - "--bitcoind.zmqpubrawtx=tcp://bitcoind:28333"
      - "--debuglevel=debug"
      - "--externalip=lndserver"
      - "--tlsextradomain=lndserver"

  loopserver:
    image: lightninglabs/loopserver
    container_name: loopserver
    restart: unless-stopped
    networks:
      regtest:
        aliases:
          - loopserver
    volumes:
      - "lndserver:/root/.lnd"
      - "loopserver:/root/loopserver"
    depends_on:
      - lndserver
    command:
      - "daemon"
      - "--maxamt=5000000"
      - "--lnd.host=lndserver:10009"
      - "--lnd.macaroondir=/home/loopserver/"
      - "--lnd.tlspath=/home/loopserver/tls.cert"
      - "--bitcoin.host=bitcoind:18443"
      - "--bitcoin.user=lightning"
      - "--bitcoin.password=lightning"
      - "--bitcoin.zmqpubrawblock=tcp://bitcoind:28332"
      - "--bitcoin.zmqpubrawtx=tcp://bitcoind:28333"

  aperture:
    build:
      context: https://github.com/lightninglabs/aperture.git
      dockerfile: Dockerfile
      args:
        checkout: v0.3.8-beta
    container_name: aperture
    restart: unless-stopped
    depends_on:
      - loopserver
      - etcd
    networks:
      regtest:
        aliases:
          - aperture
    volumes:
      - "lndserver:/root/.lnd"
      - "loopserver:/root/loopserver"
      - "aperture:/root/.aperture"
    ports:
      - "11018:11018"
    entrypoint: [ "/bin/aperture" ]
    command:
      - "--configfile=/root/.aperture/aperture.yaml"


  lndclient:
    image: lightninglabs/lnd:v0.18.5-beta
    container_name: lndclient 
    restart: unless-stopped
    networks:
      regtest:
        aliases:
          - lndclient
    volumes:
      - "lndclient:/root/.lnd"
    depends_on:
      - bitcoind
    command:
      - "--logdir=/root/.lnd"
      - "--alias=lndclient"
      - "--rpclisten=0.0.0.0:10009"
      - "--noseedbackup"
      - "--bitcoin.active"
      - "--bitcoin.regtest"
      - "--bitcoin.node=bitcoind"
      - "--bitcoind.rpchost=bitcoind"
      - "--bitcoind.rpcuser=lightning"
      - "--bitcoind.rpcpass=lightning"
      - "--bitcoind.zmqpubrawblock=tcp://bitcoind:28332"
      - "--bitcoind.zmqpubrawtx=tcp://bitcoind:28333"
      - "--debuglevel=debug"
      - "--externalip=lndclient"
      - "--tlsextradomain=lndclient"

  loopclient:
    image: loopd
    container_name: loopclient
    build:
      context: ../
      dockerfile: Dockerfile
    restart: unless-stopped
    networks:
      regtest:
        aliases:
          - loopclient
    volumes:
      - "lndclient:/root/.lnd"
      - "aperture:/root/.aperture"
      - "loopclient:/root/.loop"
    depends_on:
      - aperture
    command:
      - "loopd"
      - "--experimental"
      - "--network=regtest"
      - "--debuglevel=debug"
      - "--server.host=aperture:11018"
      - "--server.tlspath=/root/.loop/aperture-tls.cert"
      - "--lnd.host=lndclient:10009"
      - "--lnd.macaroonpath=/root/.lnd/data/chain/bitcoin/regtest/admin.macaroon"
      - "--lnd.tlspath=/root/.lnd/tls.cert"

  etcd:
    image: bitnami/etcd:3.3.12
    platform: linux/amd64
    container_name: etcd
    hostname: etcd
    networks:
      regtest:
        aliases:
          - etcd
    restart: unless-stopped
    ports:
      - "2379:2379"
      - "2380:2380"
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes

networks:
  regtest:

volumes:
  bitcoind:
  lndserver:
  lndclient:
  loopserver:
  loopclient:
  aperture:
