# Installation

## Installation

Lightning Pool is built very similarly to [Lightning Loop](https://github.com/lightninglabs/loop): There is a process that is constantly running in the background, called the trader daemon (`poold`) and a command line tool to interact with the daemon, called just `pool`.

The `poold` trader daemon can be run either as a standalone binary connected to a compatible `lnd` node or integrated into [Lightning Terminal (LiT)](https://github.com/lightninglabs/lightning-terminal).

### Downloading the standalone binaries

The latest official release binaries can be [downloaded from the GitHub releases page](https://github.com/lightninglabs/pool/releases).

### Downloading as part of Lightning Terminal (LiT)

To run `poold` integrated into the Lightning Terminal, download [the latest release of LiT](https://github.com/lightninglabs/lightning-terminal/releases) and follow [the installation instructions of LiT](https://github.com/lightninglabs/lightning-terminal#execution)

### Building the binaries from source

To build both the `poold` and `pool` binaries from the source code, at least the `go 1.14` and `make` must be installed.

To download the code, compile and install it, the following commands can then be run:

`git clone https://github.com/lightninglabs/pool`

`cd pool`

`make install`

This will install the binaries into your `$GOPATH/bin` directory.

### Installing `lnd`

Lightning Pool needs to be connected to an `lnd` node version `v0.11.1-beta` or later to work. It is recommended to run an [official release binary of `lnd`](https://github.com/lightningnetwork/lnd/releases).

[Installing `lnd` from source](https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md#installing-lnd) is also possible but needs to be done **with all sub-server build flags enabled**:

`make install tags="signrpc walletrpc chainrpc invoicesrpc"`

### Running `poold`

If `lnd` is configured with the default values and is running on the same machine, `poold` will be able to connect to it automatically and can be started by simply running:

```
$ poold

# Or if you want to do everything in the same terminal and run poold in the
# background:
$ poold &

# For testnet mode, you'll need to specify the network as mainnet is the
# default:
$ poold --network=testnet
```

In the case that `lnd` is running on a remote node, the `tls.cert` and the `admin.macaroon` files from the `lnd` data directory need to be copied to the machine where `poold` is running.

The daemon can then be configured to connect to the remote `lnd` node by using the following command line flags:

```
$ poold --lnd.host=<the_remote_host_IP_address>:10009 \
        --lnd.macaroonpath=/some/directory/with/lnd/data/macaroons/admin.macaroon \
        --lnd.tlspath=/some/directory/with/lnd/data/tls.cert
```

To persist this configuration, these values can also be written to a configuration file, located in `~/.pool/<network>/poold.conf`, for example:

> \~/.pool/mainnet/poold.conf
>
> ```
> lnd.host=<the_remote_host_IP_address>:10009
> lnd.macaroonpath=/some/directory/with/lnd/data/macaroons/admin.macaroon
> lnd.tlspath=/some/directory/with/lnd/data/tls.cert
> ```

### Configuration options

There is a range of operational settings that can be set to change the default logging behavior or change the directories where `poold` stores its data. To see the full list of options, run `poold --help`.

The following list only includes flags that have an impact on the match making or business related behavior of the Pool trader daemon:

| Flag           | Required | Default Value | Description                                                                                      |
| -------------- | -------- | ------------- | ------------------------------------------------------------------------------------------------ |
| `newnodesonly` | No       | `false`       | If set to `true` the daemon will only buy channels from nodes it does not yet have channels with |

## Authentication and transport security

The gRPC and REST connections of `poold` are encrypted with TLS and secured with macaroon authentication the same way `lnd` is.

If no custom base directory is set then the TLS certificate is stored in `~/.pool/<network>/tls.cert` and the base macaroon in `~/.pool/<network>/pool.macaroon`.

The `pool` command will pick up these file automatically on mainnet if no custom base directory is used. For other networks it should be sufficient to add the `--network` flag to tell the CLI in what sub directory to look for the files.

For more information on macaroons, [see the macaroon documentation of lnd.](https://github.com/lightningnetwork/lnd/blob/master/docs/macaroons.md)

**NOTE**: pool's macaroons are independent from `lnd`'s. The same macaroon cannot be used for both `poold` and `lnd`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lightning.engineering/lightning-network-tools/pool/install.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
