version: "3.7"

services:
  nbxplorer:
    image: nicolasdorier/nbxplorer:2.2.16@sha256:c12d63f0604fc92e626a4fb8d27ea770dc6156921d8398612b21a2de772e87af
    user: "1000:1000"
    restart: on-failure
    stop_grace_period: 1m
    volumes:
        - ${APP_DATA_DIR}/data/nbxplorer:/data
    environment:
        NBXPLORER_DATADIR: "/data"
        NBXPLORER_NETWORK: "$BITCOIN_NETWORK"
        NBXPLORER_PORT: 32838
        NBXPLORER_BIND: 0.0.0.0
        NBXPLORER_CHAINS: "btc"
        NBXPLORER_SIGNALFILEDIR: "/data"
        NBXPLORER_BTCRPCURL: "http://$BITCOIN_IP:$BITCOIN_RPC_PORT"
        NBXPLORER_BTCNODEENDPOINT: $BITCOIN_IP:$BITCOIN_P2P_PORT
        NBXPLORER_BTCRPCUSER: $BITCOIN_RPC_USER
        NBXPLORER_BTCRPCPASSWORD: $BITCOIN_RPC_PASS
    networks:
      default:
        ipv4_address: $APP_BTCPAY_SERVER_NBXPLORER_IP

  web:
    image: btcpayserver/btcpayserver:1.3.4@sha256:dfc4a08f097a86672473cfd5a5dd606ea8bf64dc926301f0116710e793ebe0a4
    user: "1000:1000"
    restart: on-failure
    stop_grace_period: 1m
    depends_on: [ nbxplorer, postgres ]
    entrypoint: [ "dotnet", "BTCPayServer.dll" ]
    ports:
        - "$APP_BTCPAY_SERVER_PORT:$APP_BTCPAY_SERVER_PORT"
    volumes:
        - ${APP_DATA_DIR}/data/btcpay:/data
        - ${APP_DATA_DIR}/data/nbxplorer:/data/.nbxplorer
        - ${LND_DATA_DIR}:/lnd:ro
    environment:
        HOME: "/data"
        BTCPAY_DATADIR: "/data"
        BTCPAY_PLUGINDIR: "/data/plugins"
        BTCPAY_DOCKERDEPLOYMENT: "false"
        BTCPAY_POSTGRES: "User ID=postgres;Host=$APP_BTCPAY_SERVER_DB_IP;Port=5432;Database=btcpayserver$BITCOIN_NETWORK"
        BTCPAY_NETWORK: "$BITCOIN_NETWORK"
        BTCPAY_BIND: 0.0.0.0:$APP_BTCPAY_SERVER_PORT
        BTCPAY_CHAINS: "btc"
        BTCPAY_BTCEXPLORERURL: "http://$APP_BTCPAY_SERVER_NBXPLORER_IP:32838"
        BTCPAY_BTCLIGHTNING: "type=lnd-rest;server=https://$LND_IP:$LND_REST_PORT/;macaroonfilepath=/lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon;allowinsecure=true"
        BTCPAY_SOCKSENDPOINT: $TOR_PROXY_IP:$TOR_PROXY_PORT
    networks:
      default:
        ipv4_address: $APP_BTCPAY_SERVER_IP

  postgres:
    image: btcpayserver/postgres:13.4-4@sha256:938574253f985b9ac7814329b576dc04a8fe6e330e214afcf3cd0bf4b41eceb8
    # This needs to run as root for migrations to succeed
    # user: "1000:1000"
    restart: on-failure
    stop_grace_period: 1m
    environment:
        POSTGRES_HOST_AUTH_METHOD: trust
    volumes:
        - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
    networks:
      default:
        ipv4_address: $APP_BTCPAY_SERVER_DB_IP