version: "3.7"

services:
  app_proxy:
    environment:
      APP_HOST: $APP_LIGHTNING_IP
      APP_PORT: 3006

  app:
    image: getumbrel/umbrel-lightning:v1.2.1@sha256:41d5e7388a15443103ec0eae583a426dcf04bd371a1371fdeea8ccae99c01972
    restart: on-failure
    volumes:
      - "${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd"
      - "${APP_DATA_DIR}/data/lightning:/data"
    environment:
      PORT: "3006"
      TOR_PROXY_IP: "${TOR_PROXY_IP}"
      TOR_PROXY_PORT: "${TOR_PROXY_PORT}"
      BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}"
      RPC_PORT: "${APP_BITCOIN_RPC_PORT}"
      RPC_USER: "${APP_BITCOIN_RPC_USER}"
      RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}"
      LND_NETWORK: "${APP_BITCOIN_NETWORK}"
      LND_HOST: "${APP_LIGHTNING_NODE_IP}"
      LND_REST_HIDDEN_SERVICE: "${APP_LIGHTNING_REST_HIDDEN_SERVICE}"
      LND_GRPC_HIDDEN_SERVICE: "${APP_LIGHTNING_GRPC_HIDDEN_SERVICE}"
      TLS_FILE: "/data/.lnd/tls.cert"
      MACAROON_DIR: "/data/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/"
      CHANNEL_BACKUP_FILE: "/data/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/channel.backup"
      BACKUP_STATUS_FILE: "/statuses/backup-status.json"
      JSON_STORE_FILE: "/data/state.json"
      JSON_SETTINGS_FILE: "/data/settings.json"
      DFWEBOS_LND_CONF_FILEPATH: "/data/.lnd/dfwebos-lnd.conf"
      LND_CONF_FILEPATH: "/data/.lnd/lnd.conf"
      LND_INITIALIZE_WITH_TOR_ONLY: "${LND_INITIALIZE_WITH_TOR_ONLY:-unset}"
      DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}"
      EXPLORER_PORT: "${APP_MEMPOOL_PORT}"
      EXPLORER_HIDDEN_SERVICE: "${APP_MEMPOOL_HIDDEN_SERVICE}"
    networks:
      default:
        ipv4_address: $APP_LIGHTNING_IP

  lnd:
    hostname: "${DEVICE_DOMAIN_NAME}" # Needed so LND can generate a valid cert
    image: lightninglabs/lnd:v0.20.0-beta@sha256:4b33e89ce7d2db02bbf3c10649e567c36d175075921c97afc3bdfa36f2e7518a
    command: "${APP_LIGHTNING_COMMAND}"
    user: 1000:1000
    restart: unless-stopped
    ports:
      - "$APP_LIGHTNING_NODE_PORT:$APP_LIGHTNING_NODE_PORT"
      - "$APP_LIGHTNING_NODE_REST_PORT:$APP_LIGHTNING_NODE_REST_PORT"
      - "$APP_LIGHTNING_NODE_GRPC_PORT:$APP_LIGHTNING_NODE_GRPC_PORT"
    volumes:
      - "${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd"
    environment:
      HOME: /data
    networks:
      default:
        ipv4_address: $APP_LIGHTNING_NODE_IP
  
  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"
