This repository is used to build LND Docker container images that are distributed with BTCPayServer by default.
Docker images are published to https://hub.docker.com/r/btcpayserver/lnd/
Versions:
- 0.18.3-beta
- Includes 0.28.7-beta Loop
- Fix for lnd unlock password \n problem
- 0.18.1-beta
- Includes 0.28.5-beta Loop
- 0.18.0-beta
- Includes 0.28.2-beta Loop
- 0.17.4-beta
- Includes 0.26.6-beta Loop
- 0.17.3-beta
- Includes 0.26.6-beta Loop
- 0.17.2-beta
- Includes 0.26.5-beta Loop
- 0.17.1-beta
- Includes 0.26.5-beta Loop
- 0.17.0-beta
- Includes 0.26.4-beta Loop
- 0.17.0-beta
- Includes 0.26.4-beta Loop
- 0.16.4-beta-1
- 0.16.3-beta
- 0.16.2-beta-1
- 0.16.1-beta
- 0.16.0-beta
- 0.15.4-beta
- Other versions are tagged, but obsoleted and not supported.
- All LND versions prior to 0.15.4 contain a consensus bug that prevents them from properly parsing transactions with more than 500,000 witness items per input (btcsuite/btcd#1906)
- All LND versions prior to 0.15.2 contain a bug that prevents them from properly parsing Taproot transactions with script size over 11000 bytes (lightningnetwork#7002)
- LND version 0.14.0-beta shipped with check that made it incompatable with c-lightning and eclair (lightningnetwork#5890)
- All LND versions prior to 0.13.3 contain specification-level vulnerability (https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-October/003257.html)
- All LND versions prior to 0.7 contain critical vulnerability (https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-September/002174.html)
Each version is marked with appropriate basedon-vX.X.X-beta
tags. We are using basedon
prefix in order not to conflict with LND tags from source repository.
-
Update https://github.com/btcpayserver/lnd
a) Go to https://github.com/lightningnetwork/lnd/releases and find the commit on which we should add our resources.
b) Checkout a new branch for that commit, usually in the format oflnd/v0.18.3-beta
.
c) Cherry-pick theAdding BtcPayServer related files and resources
commit. Example commit.
d) Tag it with thebasedon-v*
prefix name and push it. For v0.18.1, the tag name wasbasedon-v0.18.3-beta
.
e) The build process will start (it matches on tag format). Here is an example CircleCI build.
f) The resulting image will be published to Docker Hub. Example Docker Hub image for v0.18.3.Occasionally, there are problems with:
- Versioning of base Docker images used for building Go binaries. You may need to bump that base image - example commit.
- Updating Loop as part of the package, which needs to happen occasionally. [Example bump of Loop version](https://github.com/btcpayserver/lnd/commit/b3aecc7ac58280ef662e39ba99461573a30fe79a].
-
Update https://github.com/btcpayserver/BTCPayServer.Lightning
Now we need to update the dependency in our Lightning library project. This library has tests, so we will know if something is broken.
a) Modify the
docker-compose.yml
file to reference the new LND version. Example.
b) Checkout a new branch for that commit, usually in the format offeat/lnd-0.18.1
.
c) Title the commitBumping LND to 0.18.1-beta
.
d) Open a pull request and reference Docker Hub and Tag. Example PR. e) Once tests pass, you can merge it. -
Update https://github.com/btcpayserver/btcpayserver
This will give access to LND to the whole dev team and allow for further testing on their dev machines if everything works as expected.
a) Modify 2
docker-compose.yml
files inBTCPayServer.Tests
. Example pull request to emulate.
b) When you open the PR, include the version and link to the BTCPayServer.Lightning PR.
c) Once tests pass, you can merge it. -
Update https://github.com/btcpayserver/btcpayserver-docker
a) Now that everything is prepared, open a PR in the btcpayserver-docker repository to allow these changes to propagate to everyone. Example pull request.
b) Open the PR in DRAFT mode and tag @NicolasDorier and @Pavlenex as reviewers. They typically handle releases, and once they test that the LND version update works on their server, they can ACK the update and merge it as part of the release process.