### Core Lightning configuration ### see lightningd-config(5) ## Bitcoin control options # Select the network parameters (bitcoin, testnet, signet, or regtest). #network=NETWORK network=testnet # The name of bitcoin-cli executable to run. #bitcoin-cli=PATH # -datadir argument to supply to bitcoin-cli(1). #bitcoin-datadir=DIR bitcoin-datadir=/var/lib/bitcoind # The RPC username for talking to bitcoind(1). #bitcoin-rpcuser=USER # The RPC password for talking to bitcoind(1). #bitcoin-rpcpassword=PASSWORD # The bitcoind(1) RPC host to connect to. #bitcoin-rpcconnect=HOST # The bitcoind(1) RPC port to connect to. #bitcoin-rpcport=PORT # Number of seconds to keep trying a bitcoin-cli(1) command. If the command # keeps failing after this time, exit with a fatal error. #bitcoin-retry-timeout=SECONDS # Number of blocks to rescan from the current head, or absolute blockheight if # negative. This is only needed if something goes badly wrong. #rescan=BLOCKS ## Lightning daemon options # Sets the working directory. All files (except --conf and --lightning-dir on # the command line) are relative to this. #lightning-dir=DIR # Specify pid file to write to. #pid-file=PATH # What log level to print out: options are io, debug, info, unusual, broken. # If SUBSYSTEM is supplied, this sets the logging level for any subsystem (or # nodeid) containing that string. This option may be specified multiple times. #log-level=LEVEL[:SUBSYSTEM] # 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-prefix=PREFIX # 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 (useful for log # rotation). #log-file=PATH # Set this to false to turn off timestamp prefixes (they will still appear in # crash log files). #log-timestamps=BOOL # Set JSON-RPC socket (or /dev/tty), such as for lightning-cli(1). #rpc-file=PATH # 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. #rpc-file-mode=MODE rpc-file-mode=0660 # 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. #wallet=DSN # Directory to keep the accounts.sqlite3 database file in. Defaults to # lightning-dir. #bookkeeper-dir=DIR # Identify the location of the bookkeeper data. This is a fully qualified data # source name, including a scheme such as sqlite3 or postgres followed by the # connection parameters. Defaults to sqlite3://accounts.sqlite3 in the # bookkeeper-dir. #bookkeeper-db=DSN # 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. #encrypted-hsm # The port number for the GRPC plugin to listen for incoming connections; # default is not to activate the plugin at all. #grpc-port=PORTNUM ## Lightning node customization options # Up to 32 bytes of UTF-8 characters to tag your node. Completely silly, since # anyone can call their node anything they want. The default is an NSA-style # codename derived from your public key, but "Peter Todd" and "VAULTERO" are # good options, too. #alias=NAME # Your favorite color as a hex code. #rgb=RRGGBB # The base fee to charge for every payment which passes through. Note that # millisatoshis are a very, very small unit! 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 lightning-setchannel(7). # Default: 1000. #fee-base=MILLISATOSHI # 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 lightning-setchannel(7). Default: 10 (0.001%). #fee-per-satoshi=MILLIONTHS # This value defines the minimal effective channel capacity 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. Default: 10000. #min-capacity-sat=SATOSHI # 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 increase, but make # channels far more reliable since we never close it due to unreasonable fees. #ignore-fee-limits=BOOL # 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. #commit-time=MILLISECONDS # 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", # "unilateral_close", "delayed_to_us", "htlc_resolution", and "penalty". #force-feerates=VALUES # 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). Default: 0. #htlc-minimum-msat=MILLISATOSHI # 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). Default: unset (no limit). #htlc-maximum-msat=MILLISATOSHI # Explicitly control the usage of discovered public IPs in `node_announcement` # updates. Default: 'auto' - Only if we don't have anything else to announce. # Note: You also need to open TCP port 9735 on your router towords your node. # Note: Will always be disabled if you use 'always-use-proxy'. #announce-addr-discovered=BOOL # Sets the public TCP port to use for announcing dynamically discovered IPs. # If unset, this defaults to the selected network's lightning port, which is # 9735 on mainnet. #announce-addr-discovered-port=PORT ## Lightning channel and HTLC options # Removes capacity limits for channel creation. Version 1.0 of the # specification limited channel sizes to 16777215 satoshi. With this option # (which your node will advertise to peers), your node will accept larger # incoming channels and, if the peer supports it, will open larger channels. #large-channels # 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. #watchtime-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. #max-locktime-blocks=BLOCKS # Confirmations required for the funding transaction when the other side opens # a channel before the channel is usable. #funding-confirms=BLOCKS # The percentage of estimatesmartfee 2/CONSERVATIVE to use for the commitment # transactions. Default: 100. #commit-fee=PERCENT # Number of HTLCs one channel can handle concurrently in each direction. Should # be between 1 and 483. Default: 30. #max-concurrent-htlcs=INTEGER # Option which limits the total amount of sats to be allowed as dust on a # channel. #max-dust-htlc-exposure-msat=MILLISATOSHI # The number of blocks between incoming payments and outgoing payments: 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-delta=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. #cltv-final=BLOCKS # Normally HTLC onions which contain unknown even fields are rejected. This # option specifies that these (comma-separated) types are to be accepted, and # ignored. #accept-htlc-tlv-types=TYPES ## Cleanup control options # Perform search for things to clean every SECONDS seconds (default 3600, or 1 # hour, which is usually sufficient). #autoclean-cycle=SECONDS # How old successful forwards (`settled` in listforwards `status`) have to be # before deletion (default 0, meaning never). #autoclean-succeededforwards-age=SECONDS # How old failed forwards (`failed` or `local_failed` in listforwards `status`) # have to be before deletion (default 0, meaning never). #autoclean-failedforwards-age=SECONDS # How old successful payments (`complete` in listpays `status`) have to be # before deletion (default 0, meaning never). #autoclean-succeededpays-age=SECONDS # How old failed payment attempts (`failed` in listpays `status`) have to be # before deletion (default 0, meaning never). #autoclean-failedpays-age=SECONDS # How old invoices which were paid (`paid` in listinvoices `status`) have to be # before deletion (default 0, meaning never). #autoclean-paidinvoices-age=SECONDS # How old invoices which were not paid (and cannot be) (`expired` in # listinvoices `status`) before deletion (default 0, meaning never). #autoclean-expiredinvoices-age=SECONDS ## Payment control options # Disable the multi-part payment sending support in the `pay` plugin. By # default the MPP support is enabled, but it can be desirable to disable in # situations in which each payment should result in a single HTLC being # forwarded in the network. #disable-mpp ## Networking options # Set an IP address (v4 or v6) or automatic Tor address to listen on and # (maybe) announce as our node address. #addr=[IPADDRESS[:PORT]]|autotor:TORIPADDRESS[:SERVICEPORT][/torport=TORPORT]|statictor:TORIPADDRESS[:SERVICEPORT][/torport=TORPORT][/torblob=[blob]]|DNS[:PORT] # Set an IP address or UNIX domain socket to listen to, but do not announce. A # UNIX domain socket is distinguished from an IP address by beginning with a /. #bind-addr=[IPADDRESS[:PORT]]|SOCKETPATH|DNS[:PORT] # Set an IP (v4 or v6) address or Tor address to announce; a Tor address is # distinguished by ending in .onion. PORT defaults to 9735. #announce-addr=IPADDRESS[:PORT]|TORADDRESS.onion[:PORT]|DNS[:PORT] # Set to true (default is false) to have names given as arguments to addr and # announce-addr published in node announcement messages as names, rather than # IP addresses. Please note that most mainnet nodes do not yet use, read or # propagate this information correctly. #announce-addr-dns=BOOL # 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 options. #offline # By default, we bind (and maybe announce) on IPv4 and IPv6 interfaces if no # addr, bind-addr or announce-addr options are specified. Setting this to false # disables that. #autolisten=BOOL # Set a socks proxy to use to connect to Tor nodes (or for all connections if # always-use-proxy is set). The port defaults to 9050 if not specified. #proxy=IPADDRESS[:PORT] # Always use the proxy, even to connect to normal IP addresses (you can still # connect to Unix domain sockets manually). This also disables all DNS lookups, # to avoid leaking information. #always-use-proxy=BOOL # Disable the DNS bootstrapping mechanism to find a node by its node ID. #disable-dns # Set a Tor control password, which may be needed for autotor: to authenticate # to the Tor control port. #tor-service-password=PASSWORD ## Lightning plugins # Specify a plugin to run as part of Core Lightning. This can be specified # multiple times to add multiple plugins. Note that unless plugins themselves # specify ordering requirements for being called on various hooks, plugins will # be ordered by command line, then config file. #plugin=PATH # 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 directory is currently unspecified. #plugin-dir=DIRECTORY # This option clears all plugin, important-plugin, and plugin-dir options # preceeding 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. #clear-plugins # 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 lightning-plugin(7) start. #disable-plugin=PLUGIN # Specify a plugin to run as part of Core Lightning. This can be specified # 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 Lightning 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 automatically considered important. #important-plugin=PLUGIN