mirror of
https://github.com/aljazceru/lspd.git
synced 2025-12-18 14:24:21 +01:00
4.3 KiB
4.3 KiB
Installation instructions for core lightning and lspd
Requirements
- CLN
- lspd
- lspd plugin for cln
- postgresql
Installation
CLN
Download a precompiled binary of CLN here.
Or compile CLN yourself as described in the installation documentation.
lspd
Needs to be built from source:
git clone https://github.com/breez/lspd
cd lspd
make release-all
This will create two binaries, lspd and lspd_cln_plugin
Postgresql
Lspd supports postgresql backend. To create database and new role to access it on your postgres server use:
Postgresql server
CREATE ROLE <username>;
ALTER ROLE <username> WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD '<password>';
CREATE DATABASE <dbname> WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
ALTER DATABASE <dbname> OWNER TO <username>;
RDS on AWS
CREATE ROLE <username>;
ALTER ROLE <username> WITH INHERIT NOCREATEROLE NOCREATEDB LOGIN NOBYPASSRLS PASSWORD '<password>';
CREATE DATABASE <dbname> WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
ALTER DATABASE <dbname> OWNER TO <username>;
Configuration
- Create a random token (for instance using the command
openssl rand -base64 48, or./lspd genkey) - Define the environment variables as described in sample.env. If
CERTMAGIC_DOMAINis defined, certificate for this domain is automatically obtained and renewed from Let's Encrypt. In this case, the port needs to be 443. IfCERTMAGIC_DOMAINis not defined, lspd needs to run behind a reverse proxy like treafik or nginx.
ENV variables:
LISTEN_ADDRESSdefines the host:port for the lspd grpc serverCERTMAGIC_DOMAINdomain on which lspd will be accessibleDATABASE_URLpostgresql db urlAWS_REGIONAWS region for SES emailingAWS_ACCESS_KEY_IDAPI key for SES emailingAWS_SECRET_ACCESS_KEYAPI secret for SES emailingMEMPOOL_API_BASE_URLuses fee estimation for opening new channels (default: https://mempool.space/api/v1/)MEMPOOL_PRIORITYpriority with which open new channels using mempool api (options: minimum, economy, hour, halfhour, fastest) (default: economy)NODESwhich nodes are used by lspd (see below for example, multiple nodes supported and more examples can be found in sample.env)
Example of NODES variable:
NODES='[ { "name": "${LSPName}", "nodePubkey": "$PUBKEY", "lspdPrivateKey": "$LSPD_PRIVATE_KEY", "token": "$TOKEN", "host": "$EXTERNAL_IP:8888", "publicChannelAmount": "1000183", "channelAmount": "100000", "channelPrivate": false, "targetConf": "6", "minConfs": "6", "minHtlcMsat": "600", "baseFeeMsat": "1000", "feeRate": "0.000001", "timeLockDelta": "144", "channelFeePermyriad": "40", "channelMinimumFeeMsat": "2000000", "additionalChannelCapacity": "100000", "maxInactiveDuration": "3888000", "cln": { "pluginAddress": "127.0.0.1:12312", "socketPath": "/home/lightning/.lightning/bitcoin/lightning-rpc" } } ]'
Running lspd on CLN
In order to run lspd on top of CLN, you need to run the lspd process and run cln with the provided cln plugin.
- Run cln with the following options set:
--developer: to allow passing the--dev-allowdustreserveflag--plugin=/path/to/lspd_cln_plugin: to use lspd as plugin--max-concurrent-htlcs=30: In order to use zero reserve channels on the client side, (local max_accepted_htlcs + remote max_accepted_htlcs + 2) * dust limit must be lower than the channel capacity. Reduce max-concurrent-htlcs or increase channel capacity accordingly.--dev-allowdustreserve=true: In order to allow zero reserve on the client side (requires developer mode turned on)--allow-deprecated-apis=true: lspd currently uses a deprecated api, so needs this flag set.--lsp-listen=127.0.0.1:<port>: Set on which port the lspd_cln_plugin will listen for lspd communication, must be the same port that is used in pluginAddress parameter in NODES env variable.
- Run lspd
Final step
- Share with Breez the TOKEN and the LISTEN_ADDRESS you've defined (send to contact@breez.technology)