mirror of
https://github.com/aljazceru/lspd.git
synced 2025-12-19 14:54:22 +01:00
4.3 KiB
4.3 KiB
Installation instructions for core lightning and lspd
Requirements
- CLN (compiled with developer mode on)
- lspd
- lspd plugin for cln
- postgresql
Installation
CLN
Follow compilation steps for CLN here to enable developer mode.
lspd
Needs to be built from source:
git clone https://github.com/breez/lspd
cd lspd
go build . # compile lspd
go build -o lspd_plugin ./cln_plugin/cmd # compile 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. You also need lightningd compiled with developer mode on (./configure --enable-debugbuild)
- Run cln with the following options set:
--plugin=/path/to/lspd_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_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)