Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LIGHTNINGD-CONFIG(5)					  LIGHTNINGD-CONFIG(5)

NAME
       lightningd-config -- Lightning daemon configuration file

SYNOPSIS
       ~/.lightning/config

DESCRIPTION
       When  lightningd(8)  starts up it usually reads a general configuration
       file (default: $HOME/.lightning/config) then a network-specific config-
       uration file (default: $HOME/.lightning/bitcoin/config).	 This  can  be
       changed:	see --conf and --lightning-dir.

       Note  that some configuration options, marked dynamic can be changed at
       runtime:	see lightning-setconfig(7): by default this will  write	 to  a
       file  called  config.setconfig in the network-specific lightning	direc-
       tory, unless there is another config file with a	name ending in	".set-
       config".

       General	configuration files are	processed first, then network-specific
       ones, then command line options:	later options  override	 earlier  ones
       except addr options and log-level with subsystems, which	accumulate.

       include	followed  by a filename	includes another configuration file at
       that point, relative to the current configuration file.

       All these options are  mirrored	as  commandline	 arguments  to	light-
       ningd(8),  so  --foo  becomes simply foo	in the configuration file, and
       --foo=bar becomes foo=bar in the	configuration file.

       Blank lines and lines beginning with # are ignored.

DEBUGGING
       --help will show	you the	defaults for many options; they	vary with net-
       work settings so	you can	specify	--network before --help	to see the de-
       faults for that network.

       The lightning-listconfigs(7) command will output	a valid	 configuration
       file using the current settings.

OPTIONS
   General options
         developer

	  This enables developer mode, allowing	developer options and commands
	  to be	used.  It also disabled	deprecated APIs; use allow-deprecated-
	  apis=true to re-enable them.

         allow-deprecated-apis=BOOL

	  Enable  deprecated  options,	JSONRPC	 commands, fields, etc.	It de-
	  faults to true outside developer mode, but  you  should  set	it  to
	  false	 when  testing to ensure that an upgrade won't break your con-
	  figuration.

         help

	  Print	help and exit. Not very	useful inside  a  configuration	 file,
	  but fun to put in other's config files while their computer is unat-
	  tended.

         version

	  Print	 version  and  exit. Also useless inside a configuration file,
	  but putting this in someone's	config file may	convince them to  read
	  this man page.

         database-upgrade=BOOL

	  Upgrades  to	Core Lightning often change the	database: once this is
	  done,	downgrades are	not  generally	possible.   By	default,  Core
	  Lightning  will  exit	with an	error rather than upgrade, unless this
	  is an	official released version.  If you really want to upgrade to a
	  non-release version, you can set this	to true	(or false to never al-
	  low a	non-reversible upgrade!).

         i-promise-to-fix-broken-api-user=FEATURE

	  Deprecated features get removed slowly (over 3 releases), but	 some-
	  times	 people	still get surprised when they are finally removed.  As
	  long as they haven't been actually fully removed, this  option  will
	  re-enable  it.   Unless  we've made a	horrible mistake it's probably
	  time to complain or fix to whatever is using the old API.  It	can be
	  specified multiple times for different features.

   Whitespace Handling
       Because it's a common error, we automatically trim whitespace from  the
       end of most configuration options. Exceptions are noted below:

         log-prefix: Preserves	whitespace at the end.
         alias: Preserves whitespace at the end.

   Bitcoin control options:
       Bitcoin control options:

         network=NETWORK

	  Select  the  network parameters (bitcoin, testnet, testnet4, signet,
	  or regtest).	This is	not valid within the per-network configuration
	  file.

         mainnet

	  Alias	for network=bitcoin.

         regtest

	  Alias	for network=regtest (added in v23.08)

         testnet

	  Alias	for network=testnet.

         testnet4

	  Alias	for network=testnet4.

         signet

	  Alias	for network=signet.

         bitcoin-cli=PATH [plugin bcli]

	  The name of bitcoin-cli executable to	run.

         bitcoin-datadir=DIR [plugin bcli]

	  -datadir argument to supply to bitcoin-cli(1).

         bitcoin-rpcuser=USER [plugin bcli]

	  The RPC username for talking to bitcoind(1).

         bitcoin-rpcpassword=PASSWORD [plugin bcli]

	  The RPC password for talking to bitcoind(1).

         bitcoin-rpcconnect=HOST [plugin bcli]

	  The bitcoind(1) RPC host to connect to.

         bitcoin-rpcport=PORT [plugin bcli]

	  The bitcoind(1) RPC port to connect to.

         bitcoin-rpcclienttimeout=SECONDS [plugin bcli]

	  The bitcoind(1) RPC client timeout in	seconds. Default is set	to  60
	  instead  of 900 to match bitcoin-retry-timeout default. When set ex-
	  plicitly, the	higher value of	it and bitcoin-retry-timeout is	used.

         bitcoin-retry-timeout=SECONDS	[plugin	bcli]

	  Number of seconds to keep trying a bitcoin-cli(1)  command.  If  the
	  command keeps	failing	after this time, exit with a fatal error.

         rescan=BLOCKS

	  Number of blocks to rescan from the current head, or absolute	block-
	  height  if  negative.	 This  is  only	needed if something goes badly
	  wrong.

   Lightning daemon options
         lightning-dir=DIR

	  Sets the working directory. All files	(except	 --conf	 and  --light-
	  ning-dir  on	the  command line) are relative	to this.  This is only
	  valid	on the command-line, or	in a configuration file	 specified  by
	  --conf.

         subdaemon=SUBDAEMON:PATH

	  Specifies  an	 alternate  subdaemon  binary.	Current	subdaemons are
	  channeld, closingd, connectd,	gossipd, hsmd, onchaind, and openingd.
	  If the supplied path is relative the subdaemon binary	 is  found  in
	  the working directory. This option may be specified multiple times.

	  So,  subdaemon=hsmd:remote_signer  would  use	 a hypothetical	remote
	  signing proxy	instead	of the standard	lightning_hsmd binary.

         pid-file=PATH

	  Specify pid file to write to.

         log-level=LEVEL[:SUBSYSTEM][:PATH]

	  What log level to print out: options are io, trace, debug, info, un-
	  usual, broken.  If SUBSYSTEM is  supplied,  this  sets  the  logging
	  level	 for any subsystem (or nodeid) containing that string. If PATH
	  is supplied, it means	this log-level filter is only applied to  that
	  log-file,  which  is	useful for creating logs to capture a specific
	  subsystem.  This option may be specified multiple times.  Subsystems
	  include:

	    lightningd: The main lightning daemon

	    database: The database subsystem

	    wallet: The wallet	subsystem

	    gossipd: The gossip daemon

	    plugin-manager: The plugin	subsystem

	    plugin-P: Each plugin, P =	plugin path without directory

	    hsmd: The secret-holding daemon

	    connectd: The network connection daemon

	    jsonrpc#FD: Each JSONRPC connection, FD = file descriptor number

	  The following	subsystems exist for each channel, where N is  an  in-
	  crementing  internal	integer	 id  assigned  for the lifetime	of the
	  channel:

	    openingd-chan#N: Each opening / idling daemon

	    channeld-chan#N: Each channel management daemon

	    closingd-chan#N: Each closing negotiation daemon

	    onchaind-chan#N: Each onchain close handling daemon

	  So, log-level=debug:plugin would set debug level logging on all plu-
	  gins and the plugin manager.	log-level=io:chan#55 would set IO log-
	  ging on channel number 55 (or	550, for that matter).	 log-level=de-
	  bug:024b9a1fa8:/tmp/024b9a1fa8.debug.log would set debug logging for
	  that	channel	only on	the log-file=/tmp/024b9a1fa8.debug.log (or any
	  node id containing that string).

         log-prefix=PREFIX

	  Prefix for all log lines: this can be	 customized  if	 you  want  to
	  merge	 logs  with  multiple  daemons.	 Usually you want to include a
	  space	at the end of PREFIX, as the timestamp follows immediately.

         log-file=PATH

	  Log to this file (instead of stdout).	 If you	specify	this more than
	  once you'll get more than one	log file: - is used  to	 mean  stdout.
	  Sending lightningd(8)	SIGHUP will cause it to	reopen each file (use-
	  ful for log rotation).

         log-timestamps=BOOL

	  Set  this  to	 false to turn off timestamp prefixes (they will still
	  appear in crash log files).

         rpc-file=PATH

	  Set JSON-RPC socket (or /dev/tty), such as for $ lightning-cli(1).

         rpc-file-mode=MODE

	  Set JSON-RPC socket file mode, as a 4-digit octal  number.   Default
	  is  0600, meaning only the user that launched	lightningd can command
	  it.  Set to 0660 to allow users with the same	group  to  access  the
	  RPC as well.

         daemon

	  Run  in  the	background, suppress stdout and	stderr.	 Note that you
	  need to specify log-file for this case.

         conf=PATH

	  Sets configuration file, and disable reading the normal general  and
	  network  ones.  If  this  is	a relative path, it is relative	to the
	  starting directory, not lightning-dir	 (unlike  other	 paths).  PATH
	  must	exist  and  be readable	(we allow missing files	in the default
	  case). Using this inside a configuration file	is invalid.

         wallet=DSN

	  Identify the location	of the wallet. This is a fully qualified  data
	  source name, including a scheme such as sqlite3 or postgres followed
	  by the connection parameters.

	  The	default	 wallet	 corresponds  to  the  following  DSN:	--wal-
	  let=sqlite3://$HOME/.lightning/bitcoin/lightningd.sqlite31

	  For the sqlite3 scheme, you can specify  a  single  backup  database
	  file	 by  separating	 it  with  a  :	 character,  like  so:	--wal-
	  let=sqlite3://$HOME/.lightning/bitcoin/light-
	  ningd.sqlite3:/backup/lightningd.sqlite3

	  The following	is an example of a postgresql wallet DSN:

	  --wallet=postgres://user:pass@localhost:5432/db_name

	  This will connect to a DB server running on localhost	port 5432, au-
	  thenticate with username user	and password pass, and	then  use  the
	  database  db_name.  The  database must exist,	but the	schema will be
	  managed automatically	by lightningd.

         bookkeeper-dir=DIR [plugin bookkeeper]

	  Directory to keep the	accounts.sqlite3 database file	in.   Defaults
	  to lightning-dir.

         bookkeeper-db=DSN [plugin bookkeeper]

	  Identify the location	of the bookkeeper data.	This is	a fully	quali-
	  fied	data  source name, including a scheme such as sqlite3 or post-
	  gres	followed  by   the   connection	  parameters.	 Defaults   to
	  sqlite3://accounts.sqlite3 in	the bookkeeper-dir.

         encrypted-hsm

	  If set, you will be prompted to enter	a password used	to encrypt the
	  hsm_secret.	Note  that once	you encrypt the	hsm_secret this	option
	  will be mandatory for	lightningd to start.  If there is  no  hsm_se-
	  cret	yet,  lightningd  will	create a new encrypted secret.	If you
	  have an unencrypted hsm_secret you want to encrypt on-disk, or  vice
	  versa, see lightning-hsmtool(8).

         grpc-host=HOST [plugin cln-grpc]

	  Defines the GRPC server host.	Default	is 127.0.0.1.

         grpc-port=portnum [plugin cln-grpc]

	  The  port  number for	the GRPC plugin	to listen for incoming connec-
	  tions. Default is 9736.

         grpc-msg-buffer-size=number [plugin cln-grpc]

	  The size of the buffer used by the GRPC-plugin. This	buffer	stores
	  notifications	 between receiving them	from lightningd	and forwarding
	  them over grpc. If buffer overflow occurs  some  notifications  will
	  not be delivered.

   Lightning node customization	options
         recover=hsmsecret

	  Restore  the	node from a 32-byte secret encoded as either a codex32
	  secret string	or a 64-character hex string: this will	 fail  if  the
	  hsm_secret  file  exists.   Your node	will start the node in offline
	  mode,	for manual recovery.  The secret can  be  extracted  from  the
	  hsm_secret using hsmtool(8).

         alias=NAME

	  Up  to  32  bytes  of	 UTF-8 characters to tag your node. Completely
	  silly, since anyone can call their node anything they	want. The  de-
	  fault	 is  an	 NSA-style  codename derived from your public key, but
	  "Peter Todd" and "VAULTERO" are good options,	too.

         rgb=RRGGBB

	  Your favorite	color as a hex code.

         fee-base=MILLISATOSHI

	  Default: 1000. The base fee to charge	for every payment which	passes
	  through. Note	that millisatoshis are a very, very small unit!	Chang-
	  ing this value will only affect new channels and not existing	 ones.
	  If  you  want	to change fees for existing channels, use the RPC call
	  lightning-setchannel(7).

         fee-per-satoshi=MILLIONTHS

	  Default: 10 (0.001%).	This is	the proportional  fee  to  charge  for
	  every	 payment  which	passes through.	As percentages are too coarse,
	  it's in millionths, so 10000 is 1%,  1000  is	 0.1%.	Changing  this
	  value	 will  only  affect new	channels and not existing ones.	If you
	  want to change fees for existing channels, use the RPC  call	light-
	  ning-setchannel(7).

         min-capacity-sat=SATOSHI [dynamic]

	  Default: 10000. This value defines the minimal effective channel ca-
	  pacity  in satoshi to	accept for channel opening requests. This will
	  reject any opening of	a channel which	can't pass an  HTLC  of	 least
	  this	value.	 Usually  this prevents	a peer opening a tiny channel,
	  but it can also prevent a channel you	open with a reasonable	amount
	  and  the  peer  requesting such a large reserve that the capacity of
	  the channel falls below this.

         ignore-fee-limits=BOOL

	  Allow	nodes which establish channels to us to	set any	fee they want.
	  This may result in a channel which cannot be closed, should fees in-
	  crease, but make channels far	more reliable since we never close  it
	  due  to unreasonable fees.  Note that	this can be set	on a per-chan-
	  nel basis with lightning-setchannel(7).

         commit-time=MILLISECONDS

	  How long to wait before sending commitment messages to the peer:  in
	  theory  increasing  this would reduce	load, but your node would have
	  to be	extremely busy node for	you to even notice.

         force-feerates==VALUES

	  Networks like	regtest	and testnet have unreliable fee	estimates:  we
	  usually  treat  them	as  the	 minimum (253 sats/kw) if we can't get
	  them.	 This allows override of one or	more of	our standard  feerates
	  (see	lightning-feerates(7)).	  Up to	5 values, separated by '/' can
	  be provided: if fewer	are provided, then the final value is used for
	  the remainder.  The values are in per-kw (roughly 1/4	of  bitcoind's
	  per-kb values), and the order	is "opening", "mutual_close", "unilat-
	  eral_close", "delayed_to_us",	"htlc_resolution", and "penalty".

	  You  would  usually put this option in the per-chain config file, to
	  avoid	 setting  it  on   Bitcoin   mainnet!	 e.g.	~rusty/.light-
	  ning/regtest/config.

         htlc-minimum-msat=MILLISATOSHI

	  Default:  0.	Sets  the minimal allowed HTLC value for newly created
	  channels.  If	you want to change the htlc_minimum_msat for  existing
	  channels, use	the RPC	call lightning-setchannel(7).

         htlc-maximum-msat=MILLISATOSHI

	  Default:  unset  (no limit). Sets the	maximum	allowed	HTLC value for
	  newly	created	channels. If you want to change	the  htlc_maximum_msat
	  for existing channels, use the RPC call lightning-setchannel(7).

         announce-addr-discovered=BOOL

	  Explicitly  control  the  usage of discovered	public IPs in node_an-
	  nouncement updates.  Default:	'auto' - Only if we  don't  have  any-
	  thing	 else  to announce.  Note: You also need to open TCP port 9735
	  on your router towards your node.  Note: Will	always be disabled  if
	  you use 'always-use-proxy'.

         announce-addr-discovered-port=PORT  Sets  the	public TCP port	to use
	  for announcing dynamically discovered	IPs.  If unset,	this  defaults
	  to the selected networks lightning port, which is 9735 on mainnet.

   Lightning channel and HTLC options
         large-channels (deprecated in	v23.11)

	  As of	v23.11,	this is	the default (and thus, the option is ignored).
	  Previously if	you didn't specify this, channel sizes were limited to
	  16777215  satoshi.   Note: this option is spelled large-channels but
	  it's pronounced wumbo.

         watchtime-blocks=BLOCKS

	  How long we need to spot an outdated close  attempt:	on  opening  a
	  channel  we tell our peer that this is how long they'll have to wait
	  if they perform a unilateral close.

         (deprecated in v23.05) max-locktime-blocks=BLOCKS

	  The longest our funds	can be delayed	(ie.  the  longest  watchtime-
	  blocks  our  peer  can ask for, and also the longest HTLC timeout we
	  will accept).	If our peer asks for longer, we'll refuse to create  a
	  channel, and if an HTLC asks for longer, we'll refuse	it.

         funding-confirms=BLOCKS

	  Confirmations	 required  for	the funding transaction	when the other
	  side opens a channel before the channel is usable.

         commit-fee=PERCENT

	  The percentage of estimatesmartfee 2/CONSERVATIVE  to	 use  for  the
	  commitment transactions: default is 100.

         commit-feerate-offset=INTEGER

	  The  additional  feerate  a  channel	opener adds to their preferred
	  feerate to lessen the	odds of	a disconnect due to feerate  disagree-
	  ment (default	5).

         max-concurrent-htlcs=INTEGER

	  Number  of  HTLCs one	channel	can handle concurrently	in each	direc-
	  tion.	 Should	be between 1 and 483 (default 30).

         max-dust-htlc-exposure-msat=MILLISATOSHI

	  Option which limits the total	amount of sats to be allowed  as  dust
	  on a channel.

         cltv-delta=BLOCKS

	  The  number  of  blocks  between incoming payments and outgoing pay-
	  ments: this needs to be enough to make sure that if we have  to,  we
	  can  close  the  outgoing payment before the incoming, or redeem the
	  incoming once	the outgoing is	redeemed.

         cltv-final=BLOCKS

	  The number of	blocks to allow	for payments we	receive:  if  we  have
	  to,  we might	need to	redeem this on-chain, so this is the number of
	  blocks we have to do that.

         accept-htlc-tlv-type=types

	  Normally HTLC	onions which contain unknown even fields are rejected.
	  This option specifies	that this type is to be	accepted, and ignored.
	  Can be specified multuple times. (Added in v23.08).

         min-emergency-msat=msat

	  This is the amount of	funds to keep in the wallet  to	 close	anchor
	  channels  (which  don't  carry  their	own transaction	fees).	It de-
	  faults to 25000sat, and is only maintained if	there are  any	anchor
	  channels  (or,  when opening an anchor channel).  This amount	may be
	  insufficient for multiple closes at once, however.

   Cleanup control options:
         autoclean-cycle=SECONDS [plugin autoclean, dynamic]

	  Perform search for things to clean every  SECONDS  seconds  (default
	  3600,	or 1 hour, which is usually sufficient).

         autoclean-succeededforwards-age=SECONDS [plugin autoclean, dynamic]

	  How old successful forwards (settled in listforwards status) have to
	  be before deletion (default 0, meaning never).

         autoclean-failedforwards-age=SECONDS [plugin autoclean, dynamic]

	  How old failed forwards (failed or local_failed in listforwards sta-
	  tus) have to be before deletion (default 0, meaning never).

         autoclean-succeededpays-age=SECONDS [plugin autoclean, dynamic]

	  How old successful payments (complete	in listpays status) have to be
	  before deletion (default 0, meaning never).

         autoclean-failedpays-age=SECONDS [plugin autoclean, dynamic]

	  How  old failed payment attempts (failed in listpays status) have to
	  be before deletion (default 0, meaning never).

         autoclean-paidinvoices-age=SECONDS [plugin autoclean,	dynamic]

	  How old invoices which were paid (paid in listinvoices status)  have
	  to be	before deletion	(default 0, meaning never).

         autoclean-expiredinvoices-age=SECONDS	[plugin	autoclean, dynamic]

	  How  old  invoices  which  were not paid (and	cannot be) (expired in
	  listinvoices status) before deletion (default	0, meaning never).

       Note: prior to v22.11, forwards for channels which were closed were not
       easily distinguishable.	As a result, autoclean may  delete  more  than
       one  of these at	once, and then suffer failures when it fails to	delete
       the others.

   Payment and invoice control options:
         disable-mpp [plugin pay]

	  Disable the multi-part payment sending support in the	pay plugin. By
	  default the MPP support is enabled, but it can be desirable to  dis-
	  able	in  situations in which	each payment should result in a	single
	  HTLC being forwarded in the network.

         invoices-onchain-fallback

	  Add a	(taproot) fallback address to invoices produced	by the invoice
	  command, so they invoices can	also be	paid onchain.

         xpay-handle-pay=BOOL [plugin xpay, dynamic]

	  Setting this makes  xpay  intercept  simply  pay  commands  (default
	  false).

         xpay-slow-mode=BOOL [plugin xpay, dynamic]

	  Setting  this	 makes xpay wait until all parts have failed/succeeded
	  before returning.  Usually this is unnecessary, as xpay will	return
	  on  the  first success (we have the preimage,	if they	don't take all
	  the parts that's their problem) or failure  (the  destination	 could
	  succeed another part,	but it would mean it was only partially	paid).
	  The default is false.

   Networking options
       Note  that  for	simple setups, the implicit autolisten option does the
       right thing: for	the mainnet (bitcoin) network it will try to  bind  to
       port  9735  on IPv4 and IPv6, and will announce it to peers if it seems
       like a public address (and other	default	ports for other	 networks,  as
       described below).

       Core  Lightning	also  support  IPv4/6  address	discovery  behind  NAT
       routers.	 If your node detects an new public address,  it  will	update
       its announcement.  For this to work you need to forward the default TCP
       port  9735  to  your node.  IP discovery	is only	active if no other ad-
       dresses are announced.

       You can instead use addr	to override this (eg. to change	the port),  or
       precisely control where to bind and what	to announce with the bind-addr
       and  announce-addr options. These will disable the autolisten logic, so
       you must	specify	exactly	what you want!

         addr=[IPADDRESS[:PORT]]|autotor:TORIPADDRESS[:SERVICEPORT][/tor-
	  port=TORPORT]|statictor:TORIPADDRESS[:SERVICEPORT][/torport=TOR-
	  PORT][/torblob=[blob]]|HOSTNAME[:PORT]

	  Set an IP address (v4	or v6) or automatic Tor	address	to  listen  on
	  and (maybe) announce as our node address.

	  An  empty 'IPADDRESS'	is a special value meaning bind	to IPv4	and/or
	  IPv6 on all interfaces, '0.0.0.0' means bind to all IPv4 interfaces,
	  '::' means 'bind to all IPv6 interfaces' (if you want	to specify  an
	  IPv6	address	 and  a	 port,	use  []	 around	the IPv6 address, like
	  [::]:9750).  If 'PORT' is not	specified, the default	port  9735  is
	  used	for  mainnet  (testnet:	 19735,	signet:	39735, regtest:	19846,
	  testnet4: 49735).  If	we can determine a public IP address from  the
	  resulting binding, the address is announced.

	  If  the  argument  begins with 'autotor:' then it is followed	by the
	  IPv4 or IPv6 address of the Tor control port	(default  port	9051),
	  and  this  will  be  used to configure a Tor hidden service for port
	  9735 in case of mainnet (bitcoin)  network  whereas  other  networks
	  (testnet, testnet4, signet, regtest) will set	the same default ports
	  they	use for	non-Tor	addresses (see above).	The Tor	hidden service
	  will be configured to	point to the first IPv4	 or  IPv6  address  we
	  bind to and is by default unique to your node's id.

	  If  the argument begins with 'statictor:' then it is followed	by the
	  IPv4 or IPv6 address of the Tor control port	(default  port	9051),
	  and this will	be used	to configure a static Tor hidden service.  You
	  can  add the text '/torblob=BLOB' followed by	up to 64 Bytes of text
	  to generate from this	text a v3 onion	service	address	text unique to
	  the first 32 Byte of this text.  You can also	use an postfix	'/tor-
	  port=TORPORT'	to select the external tor binding. The	result is that
	  over tor your	node is	accessible by a	port defined by	you and	possi-
	  bly different	from your local	node port assignment.

	  This	option	can  be	used multiple times to add more	addresses, and
	  its use disables autolisten.	If necessary,  and  'always-use-proxy'
	  is  not  specified,  a DNS lookup may	be done	to resolve HOSTNAME or
	  TORIPADDRESS'.

	  If HOSTNAME was given	that resolves to a local interface, the	daemon
	  will bind to that interface.

         bind-addr=[IPADDRESS[:PORT]]|SOCKETPATH|HOSTNAME[:PORT]

	  Set an IP address or UNIX domain socket to listen to,	but do not an-
	  nounce. A UNIX domain	socket is distinguished	from an	IP address  by
	  beginning with a /.

	  An  empty 'IPADDRESS'	is a special value meaning bind	to IPv4	and/or
	  IPv6 on all interfaces, '0.0.0.0' means bind to all IPv4 interfaces,
	  '::' means 'bind to all IPv6 interfaces'.  'PORT' is not  specified,
	  9735 is used.

	  This	option	can  be	used multiple times to add more	addresses, and
	  its use disables autolisten.	If necessary,  and  'always-use-proxy'
	  is not specified, a DNS lookup may be	done to	resolve	'IPADDRESS'.

	  If a HOSTNAME	was given and always-use-proxy is not specified, a DNS
	  lookup  may  be done to resolve it and bind to a local interface (if
	  found).

         announce-addr=IPADDRESS[:PORT]|TORADDRESS.onion[:PORT]|dns:HOST-
	  NAME[:PORT]

	  Set an IP (v4	or v6) address or Tor address to announce; a  Tor  ad-
	  dress	is distinguished by ending in .onion. PORT defaults to 9735.

	  Empty	 or  wildcard  IPv4  and IPv6 addresses	don't make sense here.
	  Also,	unlike the 'addr' option, there	is no checking that  your  an-
	  nounced addresses are	public (e.g. not localhost).

	  This	option	can  be	used multiple times to add more	addresses, and
	  its use disables autolisten.

	  Since	v23.058, the dns: prefix can be	used  to  indicate  that  this
	  hostname  and	 port  should  be  announced  as a DNS hostname	entry.
	  Please note that most	mainnet	nodes do not yet use, read  or	propa-
	  gate this information	correctly.

         announce-addr-dns=BOOL (deprecated in	v23.08)

	  When	set  to	 true (default is false), prefixes all HOSTNAME	in an-
	  nounce-addr with dns:.

         offline

	  Do not bind to any ports, and	do not try to reconnect	to any	peers.
	  This	can  be	 useful	 for  maintenance and forensics, so is usually
	  specified on the command line. Overrides all addr and	bind-addr  op-
	  tions.

         autoconnect-seeker-peers=NUMBER (added in v24.11)

	  Sets	the number of peers to gossip with: if we don't	have this many
	  connections, we will try to connect to random	 peers	until  we  do.
	  The default is 10.

         autolisten=BOOL

	  By default, we bind (and maybe announce) on IPv4 and IPv6 interfaces
	  if  no  addr,	bind-addr or announce-addr options are specified. Set-
	  ting this to false disables that.

         proxy=IPADDRESS[:PORT]

	  Set a	socks proxy to use to connect to Tor nodes (or for all connec-
	  tions	if always-use-proxy is set).  The port defaults	to 9050	if not
	  specified.

         always-use-proxy=BOOL

	  Always use the proxy,	even to	connect	to normal  IP  addresses  (you
	  can  still  connect to Unix domain sockets manually).	This also dis-
	  ables	all DNS	lookups, to avoid leaking information.

         disable-dns

	  Disable the DNS bootstrapping	mechanism to find a node by  its  node
	  ID.

         tor-service-password=PASSWORD

	  Set  a Tor control password, which may be needed for autotor:	to au-
	  thenticate to	the Tor	control	port.

         clnrest-port=PORT [plugin clnrest]

	  Sets the REST	server port to listen to (3010 is common).  If this is
	  not specified, the clnrest plugin will be disabled.

         clnrest-protocol=PROTOCOL [plugin clnrest]

	  Specifies the	REST server protocol. Default is HTTPS.

         clnrest-host=HOST [plugin clnrest]

	  Defines the REST server host.	Default	is 127.0.0.1.

         clnrest-certs=PATH  [plugin clnrest]

	  Defines the path for HTTPS cert & key. Default path is same  as  RPC
	  file	path to	utilize	gRPC's client certificate. If it is missing at
	  the  configured  location,  new  identity  (client.pem  and  client-
	  key.pem) will	be generated.

         clnrest-cors-origins=CORSORIGINS  [plugin clnrest]

	  Define  multiple origins which are allowed to	share resources	on web
	  pages	to a domain different from the one that	served the  web	 page.
	  Default is * which allows all	origins.

         clnrest-csp=CSPOLICY	[plugin	clnrest]

	  Creates  a  whitelist	 of  trusted content sources that can run on a
	  webpage and helps mitigate the risk of attacks. Default CSP  is  de-
	  fault-src  'self';  font-src 'self'; img-src 'self' data:; frame-src
	  'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-
	  inline';.

         clnrest-swagger-root=URL  [plugin clnrest]

	  Root url for Swagger UI. Default is /.

         wss-bind-addr=[IPADDRESS[:PORT]]|SOCKETPATH|HOSTNAME[:PORT]  [plugin
	  wss-proxy.py]

	  Sets the WSS address.

         wss-certs=PATH  [plugin wss-proxy.py]

	  Defines  the	path  for  WSS cert & key. Default path	is same	as RPC
	  file path to utilize gRPC/clnrest's client  certificate.  If	it  is
	  missing  at  the  configured	location, new identity (client.pem and
	  client-key.pem) will be generated.

         exposesecret-passphrase=passphrase  [plugin exposesecret]

	  Defines a passphrase which will let users extract the	hsm_secret us-
	  ing the exposesecret command.	 If this is not	set, the  exposesecret
	  command always fails.

   Lightning Plugins
       lightningd(8)  supports	plugins,  which	offer additional configuration
       options and JSON-RPC methods, depending on the plugin.  Some  are  sup-
       plied  by default (usually located in libexec/c-lightning/plugins/). If
       a plugins directory exists under	lightning-dir  that  is	 searched  for
       plugins along with any immediate	subdirectories). You can specify addi-
       tional paths too:

         plugin=PATH

	  Specify a plugin to run as part of Core Lightning. This can be spec-
	  ified	multiple times to add multiple plugins.	 Note that unless plu-
	  gins	themselves  specify  ordering requirements for being called on
	  various hooks, plugins will be ordered by commandline,  then	config
	  file.

         plugin-dir=DIRECTORY

	  Specify  a  directory	 to look for plugins; all executable files not
	  containing punctuation (other	than .,	-  or  _)  in  'DIRECTORY  are
	  loaded.  DIRECTORY  must exist; this can be specified	multiple times
	  to add multiple directories.	The ordering of	plugins	within	a  di-
	  rectory is currently unspecified.

         clear-plugins

	  This	option clears all plugin, important-plugin, and	plugin-dir op-
	  tions	preceding it, including	the default built-in plugin directory.
	  You can still	add plugin-dir,	plugin,	and  important-plugin  options
	  following this and they will have the	normal effect.

         disable-plugin=PLUGIN

	  If  PLUGIN  contains	a /, plugins with the same path	as PLUGIN will
	  not be loaded	at startup. Otherwise, no plugin with that  base  name
	  will be loaded at startup, whatever directory	it is in.  This	option
	  is useful for	disabling a single plugin inside a directory.  You can
	  still	explicitly load	plugins	which have been	disabled, using	light-
	  ning-plugin(7) start.

         important-plugin=PLUGIN

	  Speciy a plugin to run as part of Core Lightning.  This can be spec-
	  ified	multiple times to add multiple plugins.	 Plugins specified via
	  this	option	are  considered	so important, that if the plugin stops
	  for any reason (including via	lightning-plugin(7) stop), Core	Light-
	  ning will also stop running.	This way, you can monitor  crashes  of
	  important plugins by simply monitoring if Core Lightning terminates.
	  Built-in  plugins, which are installed with lightningd(8), are auto-
	  matically considered important.

   Experimental	Options
       Experimental options are	subject	to breakage between releases: they are
       made available for advanced users who want to test proposed features.

         fetchinvoice-noconnect

	  Specifying this prevents fetchinvoice, sendinvoice and  replying  to
	  invoice request from trying to connect directly to the offering node
	  as a last resort.

         experimental-shutdown-wrong-funding

	  Specifying  this  allows  the	wrong_funding field in _shutdown: if a
	  remote node has opened a channel but claims it  used	the  incorrect
	  txid	(and the channel hasn't	been used yet at all) this allows them
	  to negotiate a clean	shutdown  with	the  txid  they	 offer	(#4421
	  <https://github.com/ElementsProject/lightning/pull/4421>).

         experimental-dual-fund

	  Specifying  this enables support for the dual	funding	protocol (bolt
	  <https://github.com/lightning/bolts> #851), allowing both parties to
	  contribute funds to a	channel. The decision  about  whether  to  add
	  funds	 or  not  to  a	proposed channel is handled automatically by a
	  plugin that implements the appropriate logic for your	needs. The de-
	  fault	behavior is to not contribute funds.

         experimental-splicing

	  Specifying this enables support  for	the  splicing  protocol	 (bolt
	  <https://github.com/lightning/bolts> #863), allowing both parties to
	  dynamically  adjust  the  size a channel. These changes can be built
	  interactively	using PSBT and combined	with other channel actions in-
	  cluding dual fund, additional	channel	splices, or  generic  transac-
	  tion	activity.  The operations will be bundled into a single	trans-
	  action. The channel will remain active while awaiting	splice confir-
	  mation, however you can only spend the smaller of the	prior  channel
	  balance and the new one.

         experimental-peer-storage

	  Specifying  this  option  means we will store	up to 64k of encrypted
	  data for our peers, and give them our	(encrypted!)  backup  data  to
	  store	  as   well,   based   on   a	protocol   similar   to	  bolt
	  <https://github.com/lightning/bolts> #881.

         experimental-quiesce

	  Specifying this option advertizes option_quiesce.  Not  very	useful
	  by itself, except for	testing.

         experimental-upgrade-protocol

	  Specifying this option means we send (and allow receipt of) a	simple
	  protocol  to	update	channel	types.	At the moment, we only support
	  setting option_static_remotekey to ancient channels.	The peer  must
	  also support this option.

BUGS
       You  should  report  bugs on our	github issues page, and	maybe submit a
       fix to gain our eternal gratitude!

AUTHOR
       Rusty Russell <<rusty@rustcorp.com.au>> wrote this man page,  and  much
       of the configuration language, but many others did the hard work	of ac-
       tually implementing these options.

SEE ALSO
       lightning-listconfigs(7)	 lightning-setchannel(7)  lightningd(8)	light-
       ning-hsmtool(8)

RESOURCES
       Main web	site: <https://github.com/ElementsProject/lightning>

COPYING
       Note: the modules in the	ccan/ directory	have their own	licenses,  but
       the rest	of the code is covered by the BSD-style	MIT license.

Core Lightning v25.02					  LIGHTNINGD-CONFIG(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=lightningd-config&sektion=5&manpath=FreeBSD+Ports+14.3.quarterly>

home | help