Toc - Table of Contents (#2943)

This commit is contained in:
nyxnor 2022-02-10 22:08:46 +01:00 committed by GitHub
parent c46fe4b499
commit a92f856709
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 301 additions and 138 deletions

190
FAQ.cl.md
View File

@ -1,49 +1,51 @@
<!-- omit in toc --> <!-- omit in toc -->
# C-lightning on the RaspiBlitz FAQ # C-lightning on the RaspiBlitz FAQ
- [Common questions about the different Lightning Network implementations](#common-questions-about-the-different-lightning-network-implementations) ---
- [Can LND and C-lightning nodes open channels to each other and route payments?](#can-lnd-and-c-lightning-nodes-open-channels-to-each-other-and-route-payments) Table of Contents
- [Can I run LND and C-lightning connected to the same node?](#can-i-run-lnd-and-c-lightning-connected-to-the-same-node) ---
- [Can I convert an LND node to C-lightning (or the opposite)?](#can-i-convert-an-lnd-node-to-c-lightning-or-the-opposite) - [Common questions about the different Lightning Network implementations](#common-questions-about-the-different-lightning-network-implementations)
- [Is there a table to quickly compare LND and C-Lightning?](#is-there-a-table-to-quickly-compare-lnd-and-c-lightning) - [Can LND and C-lightning nodes open channels to each other and route payments?](#can-lnd-and-c-lightning-nodes-open-channels-to-each-other-and-route-payments)
- [C-lightning official documentation](#c-lightning-official-documentation) - [Can I run LND and C-lightning connected to the same node?](#can-i-run-lnd-and-c-lightning-connected-to-the-same-node)
- [Commands and aliases](#commands-and-aliases) - [Can I convert an LND node to C-lightning (or the opposite)?](#can-i-convert-an-lnd-node-to-c-lightning-or-the-opposite)
- [Directories](#directories) - [Is there a table to quickly compare LND and C-Lightning?](#is-there-a-table-to-quickly-compare-lnd-and-c-lightning)
- [Config file](#config-file) - [C-lightning official documentation](#c-lightning-official-documentation)
- [Default values](#default-values) - [Commands and aliases](#commands-and-aliases)
- [All possible config settings](#all-possible-config-settings) - [Directories](#directories)
- [Plug-ins](#plug-ins) - [Config file](#config-file)
- [General info](#general-info) - [Default values](#default-values)
- [Directories](#directories-1) - [All possible config settings](#all-possible-config-settings)
- [Implemented plugins](#implemented-plugins) - [Plug-ins](#plug-ins)
- [Add a custom plugin](#add-a-custom-plugin) - [General info](#general-info)
- [CLBOSS](#clboss) - [Directories](#directories-1)
- [Feeadjuster](#feeadjuster) - [Implemented plugins](#implemented-plugins)
- [Dual funded channels](#dual-funded-channels) - [Add a custom plugin](#add-a-custom-plugin)
- [Reading](#reading) - [CLBOSS](#clboss)
- [Setting up](#setting-up) - [Feeadjuster](#feeadjuster)
- [Open a dual funded channel](#open-a-dual-funded-channel) - [Dual funded channels](#dual-funded-channels)
- [Fundchannel syntax](#fundchannel-syntax) - [Reading](#reading)
- [Offers](#offers) - [Setting up](#setting-up)
- [About the feature bits](#about-the-feature-bits) - [Open a dual funded channel](#open-a-dual-funded-channel)
- [Testnets](#testnets) - [Fundchannel syntax](#fundchannel-syntax)
- [Backups](#backups) - [Offers](#offers)
- [Seed](#seed) - [About the feature bits](#about-the-feature-bits)
- [How to display the hsm_secret in a human-readable format?](#how-to-display-the-hsm_secret-in-a-human-readable-format) - [Testnets](#testnets)
- [How to test the seedwords?](#how-to-test-the-seedwords) - [Backups](#backups)
- [How to restore the hsm_secret from text?](#how-to-restore-the-hsm_secret-from-text) - [Seed](#seed)
- [Channel database](#channel-database) - [How to display the hsm_secret in a human-readable format?](#how-to-display-the-hsm_secret-in-a-human-readable-format)
- [Recovery](#recovery) - [How to test the seedwords?](#how-to-test-the-seedwords)
- [Recover from a cl-rescue file](#recover-from-a-cl-rescue-file) - [How to restore the hsm_secret from text?](#how-to-restore-the-hsm_secret-from-text)
- [Recover from a seed](#recover-from-a-seed) - [Channel database](#channel-database)
- [Rescan the chain after restoring a used c-lightning wallet](#rescan-the-chain-after-restoring-a-used-c-lightning-wallet) - [Recovery](#recovery)
- [Guesstoremote to recover funds from force-closed channels](#guesstoremote-to-recover-funds-from-force-closed-channels) - [Recover from a cl-rescue file](#recover-from-a-cl-rescue-file)
- [Update](#update) - [Recover from a seed](#recover-from-a-seed)
- [Update to a new C-lightning release](#update-to-a-new-c-lightning-release) - [Rescan the chain after restoring a used c-lightning wallet](#rescan-the-chain-after-restoring-a-used-c-lightning-wallet)
- [Experimental update to the latest master](#experimental-update-to-the-latest-master) - [Guesstoremote to recover funds from force-closed channels](#guesstoremote-to-recover-funds-from-force-closed-channels)
- [sqlite3 queries](#sqlite3-queries) - [Update](#update)
- [Script file help list](#script-file-help-list) - [Update to a new C-lightning release](#update-to-a-new-c-lightning-release)
- [Experimental update to the latest master](#experimental-update-to-the-latest-master)
- [sqlite3 queries](#sqlite3-queries)
- [Script file help list](#script-file-help-list)
--- ---
## Common questions about the different Lightning Network implementations ## Common questions about the different Lightning Network implementations
@ -54,7 +56,7 @@
* Yes, both can run parallel on a RaspiBlitz and even have channels witch each other. * Yes, both can run parallel on a RaspiBlitz and even have channels witch each other.
### Can I convert an LND node to C-lightning (or the opposite)? ### Can I convert an LND node to C-lightning (or the opposite)?
* No, currently there are no tools available to convert between the databases storing the channel states. * No, currently there are no tools available to convert between the databases storing the channel states.
The channels would need to be closed to use the same funds in an other node. The channels would need to be closed to use the same funds in an other node.
### Is there a table to quickly compare LND and C-Lightning? ### Is there a table to quickly compare LND and C-Lightning?
@ -84,9 +86,9 @@ or with the alias: `cllog`
``` ```
## Directories ## Directories
* All data is stored on the disk in: * All data is stored on the disk in:
`/mnt/hdd/app-data/.lightningd` `/mnt/hdd/app-data/.lightningd`
* and symlinked to: * and symlinked to:
`/home/bitcoin/.lightningd` `/home/bitcoin/.lightningd`
## Config file ## Config file
@ -106,11 +108,11 @@ or with the alias: `cllog`
always-use-proxy=true always-use-proxy=true
``` ```
### All possible config settings ### All possible config settings
* can be shown by running: * can be shown by running:
`lightningd --help` `lightningd --help`
* To persist the setings place the options in the config file without the `--` and restart lightningd * To persist the setings place the options in the config file without the `--` and restart lightningd
``` ```
Usage: lightningd Usage: lightningd
A bitcoin lightning daemon (default values shown for network: bitcoin). A bitcoin lightning daemon (default values shown for network: bitcoin).
--conf=<file> Specify configuration file --conf=<file> Specify configuration file
--lightning-dir=<dir> Set base directory: network-specific subdirectory is --lightning-dir=<dir> Set base directory: network-specific subdirectory is
@ -257,9 +259,9 @@ or with the alias: `cllog`
* https://github.com/lightningd/plugins/ * https://github.com/lightningd/plugins/
### Directories ### Directories
* The plugins are installed to: * The plugins are installed to:
`/home/bitcoin/cl-plugins-available` `/home/bitcoin/cl-plugins-available`
* and symlinked to: * and symlinked to:
`/home/bitcoin/cl-plugins-enabled` `/home/bitcoin/cl-plugins-enabled`
* All plugins in the `/home/bitcoin/cl-plugins-enabled` directory are loaded automatically as set in the config file: `/home/bitcoin/.lightningd/config` * All plugins in the `/home/bitcoin/cl-plugins-enabled` directory are loaded automatically as set in the config file: `/home/bitcoin/.lightningd/config`
@ -270,7 +272,7 @@ or with the alias: `cllog`
* [feeadjuster](#feeadjuster) * [feeadjuster](#feeadjuster)
### Add a custom plugin ### Add a custom plugin
* Place the plugin in the `/home/bitcoin/cl-plugins-enabled` directory * Place the plugin in the `/home/bitcoin/cl-plugins-enabled` directory
* Make sure it is owned by the `bitcoin` user and is executable: * Make sure it is owned by the `bitcoin` user and is executable:
``` ```
sudo chown bitcoin:bitcoin /home/bitcoin/cl-plugins-enabled/PLUGIN_NAME sudo chown bitcoin:bitcoin /home/bitcoin/cl-plugins-enabled/PLUGIN_NAME
@ -285,11 +287,11 @@ or with the alias: `cllog`
sudo systemctl restart lightningd sudo systemctl restart lightningd
``` ```
From the directory `/home/bitcoin/cl-plugins-enabled` it will load auomatically after restarts. From the directory `/home/bitcoin/cl-plugins-enabled` it will load auomatically after restarts.
* To just load it run it once store in (and start from): * To just load it run it once store in (and start from):
`/home/bitcoin/cl-plugins-available/` `/home/bitcoin/cl-plugins-available/`
### CLBOSS ### CLBOSS
A plugin for automatic LN node management. A plugin for automatic LN node management.
CLBOSS only requires to have funds deposited to the onchain wallet of C-lightning. CLBOSS only requires to have funds deposited to the onchain wallet of C-lightning.
The recommended amount to start is ~ 10 million satoshis (0.1 BTC). The recommended amount to start is ~ 10 million satoshis (0.1 BTC).
@ -309,7 +311,7 @@ Neither the CLBOSS nor the RaspiBlitz developers can take resposibility for lost
* Activate it in the menu - `SETTINGS` - `-CL CLBOSS` * Activate it in the menu - `SETTINGS` - `-CL CLBOSS`
* Discussion: https://github.com/rootzoll/raspiblitz/issues/2490 * Discussion: https://github.com/rootzoll/raspiblitz/issues/2490
* Advanced usage * Advanced usage
https://github.com/ZmnSCPxj/clboss#clboss-status https://github.com/ZmnSCPxj/clboss#clboss-status
* Stopping CLBOSS will leave the node in the last state. No channels will be closed or funds removed when CLBOSS is uninstalled. * Stopping CLBOSS will leave the node in the last state. No channels will be closed or funds removed when CLBOSS is uninstalled.
### Feeadjuster ### Feeadjuster
@ -322,7 +324,7 @@ https://github.com/ZmnSCPxj/clboss#clboss-status
fee-base=BASEFEE_IN_MILLISATS fee-base=BASEFEE_IN_MILLISATS
fee-per-satoshi=PPM_FEE_IN_SATS fee-per-satoshi=PPM_FEE_IN_SATS
``` ```
* more options for the feeadjuster to be set in the c-lightning config can be seen in the [code](https://github.com/lightningd/plugins/blob/c16c564c2c5549b8f7236815490260c49e9e9bf4/feeadjuster/feeadjuster.py#L318): * more options for the feeadjuster to be set in the c-lightning config can be seen in the [code](https://github.com/lightningd/plugins/blob/c16c564c2c5549b8f7236815490260c49e9e9bf4/feeadjuster/feeadjuster.py#L318):
``` ```
plugin.add_option( plugin.add_option(
"feeadjuster-deactivate-fuzz", "feeadjuster-deactivate-fuzz",
@ -408,18 +410,18 @@ https://github.com/ZmnSCPxj/clboss#clboss-status
### Dual funded channels ### Dual funded channels
#### Reading #### Reading
* https://medium.com/blockstream/c-lightning-opens-first-dual-funded-mainnet-lightning-channel-ada6b32a527c * https://medium.com/blockstream/c-lightning-opens-first-dual-funded-mainnet-lightning-channel-ada6b32a527c
* https://medium.com/blockstream/setting-up-liquidity-ads-in-c-lightning-54e4c59c091d * https://medium.com/blockstream/setting-up-liquidity-ads-in-c-lightning-54e4c59c091d
* https://twitter.com/niftynei/status/1389328732377255938 * https://twitter.com/niftynei/status/1389328732377255938
* lightning-rfc PR: https://github.com/lightningnetwork/lightning-rfc/pull/851/files * lightning-rfc PR: https://github.com/lightningnetwork/lightning-rfc/pull/851/files
* represented by the feature bits 28/29 * represented by the feature bits 28/29
#### Setting up #### Setting up
* activate the feature on your node: * activate the feature on your node:
Type: `clconf` or use the menu `SYSTEM` - `CLCONF`. Type: `clconf` or use the menu `SYSTEM` - `CLCONF`.
Add the line: Add the line:
``` ```
experimental-dual-fund experimental-dual-fund
``` ```
Save and restart C-lightning. Save and restart C-lightning.
@ -454,7 +456,7 @@ Add the line:
``` ```
Example: Example:
``` ```
lightning-cli listnodes 02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636 lightning-cli listnodes 02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636
``` ```
* list all nodes known in the graph with active offers: * list all nodes known in the graph with active offers:
@ -468,16 +470,16 @@ Add the line:
lightning-cli connect nodeID@IP_or.onion lightning-cli connect nodeID@IP_or.onion
``` ```
#### Fundchannel syntax #### Fundchannel syntax
* the amount is the own funds in the wallet contributed * the amount is the own funds in the wallet contributed
use equal amounts to have a balanced channel from start use equal amounts to have a balanced channel from start
the amounts can be specified in `sat` or `btc` the amounts can be specified in `sat` or `btc`
``` ```
lightning-cli fundchannel -k id=NODE_ID amount=OWN_AMOUNTsat request_amt=PEER_CONTRIBUTION_AMOUNTsat compact_lease=COMPACT_LEASE lightning-cli fundchannel -k id=NODE_ID amount=OWN_AMOUNTsat request_amt=PEER_CONTRIBUTION_AMOUNTsat compact_lease=COMPACT_LEASE
``` ```
It can fail if the offer changed or there are not enough funds available on either side. It can fail if the offer changed or there are not enough funds available on either side.
* open a dual funded channel with a chosen utxo and miner feerate * open a dual funded channel with a chosen utxo and miner feerate
list the utxo-s with `lightning-cli listfunds`, can list multiple list the utxo-s with `lightning-cli listfunds`, can list multiple
the feerate is in `perkb` by default, e.g. use 1000 for 1 sat/byte the feerate is in `perkb` by default, e.g. use 1000 for 1 sat/byte
``` ```
lightning-cli fundchannel feerate=PERKB_FEERATE utxos='["TRANSACTION_ID:INDDEX_NUMBER"]' -k id=NODE_ID amount=OWN_AMOUNTsat request_amt=PEER_CONTRIBUTION_AMOUNTsat compact_lease=COMPACT_LEASE lightning-cli fundchannel feerate=PERKB_FEERATE utxos='["TRANSACTION_ID:INDDEX_NUMBER"]' -k id=NODE_ID amount=OWN_AMOUNTsat request_amt=PEER_CONTRIBUTION_AMOUNTsat compact_lease=COMPACT_LEASE
@ -485,33 +487,33 @@ the feerate is in `perkb` by default, e.g. use 1000 for 1 sat/byte
### Offers ### Offers
* Details at bolt12.org * Details at bolt12.org
* Create an offer to receive payments: * Create an offer to receive payments:
https://lightning.readthedocs.io/lightning-offer.7.html https://lightning.readthedocs.io/lightning-offer.7.html
``` ```
lightning-cli offer amount description [vendor] [label] [quantity_min] [quantity_max] [absolute_expiry] [recurrence] [recurrence_base] [recurrence_paywindow] [recurrence_limit] [single_use] lightning-cli offer amount description [vendor] [label] [quantity_min] [quantity_max] [absolute_expiry] [recurrence] [recurrence_base] [recurrence_paywindow] [recurrence_limit] [single_use]
``` ```
* Example: * Example:
Create a reusable offer which can be paid with any amount for LN tips using a fixed string. Create a reusable offer which can be paid with any amount for LN tips using a fixed string.
``` ```
lightning-cli offer any tip lightning-cli offer any tip
``` ```
* Create an offer to send payments: * Create an offer to send payments:
https://lightning.readthedocs.io/lightning-offerout.7.html https://lightning.readthedocs.io/lightning-offerout.7.html
``` ```
lightning-cli offerout amount description [vendor] [label] [absolute_expiry] [refund_for] lightning-cli offerout amount description [vendor] [label] [absolute_expiry] [refund_for]
``` ```
* Fetch an invoice to pay an offer: * Fetch an invoice to pay an offer:
https://lightning.readthedocs.io/lightning-fetchinvoice.7.html https://lightning.readthedocs.io/lightning-fetchinvoice.7.html
Will need at least one peer which supports onion the messages. For example: Will need at least one peer which supports onion the messages. For example:
``` ```
lightning-cli connect 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605@128.199.202.168:9735 lightning-cli connect 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605@128.199.202.168:9735
``` ```
* Then use the command to fetch the BOLT12 invoice: * Then use the command to fetch the BOLT12 invoice:
``` ```
lightning-cli fetchinvoice offer [msatoshi] [quantity] [recurrence_counter] [recurrence_start] [recurrence_label] [timeout] [payer_note] lightning-cli fetchinvoice offer [msatoshi] [quantity] [recurrence_counter] [recurrence_start] [recurrence_label] [timeout] [payer_note]
``` ```
* decode a BOLT12 invoice: * decode a BOLT12 invoice:
``` ```
lightning-cli decode bolt12_invoice lightning-cli decode bolt12_invoice
``` ```
@ -534,15 +536,15 @@ Will need to pay through a peer which supports the onion messages which means yo
* for testnet and signet there are prefixes `t` and `s` used for the aliases, daemons and their own plugin directory names. * for testnet and signet there are prefixes `t` and `s` used for the aliases, daemons and their own plugin directory names.
* Testnet * Testnet
``` ```
# alias: # alias:
tcl | tclconf | tcllog tcl | tclconf | tcllog
# daemon service name: # daemon service name:
tlightningd tlightningd
# config file: # config file:
/home/bitcoin/.lightningd/testnet/config /home/bitcoin/.lightningd/testnet/config
# plugin directory: # plugin directory:
/home/bitcoin/tcl-plugins-enabled /home/bitcoin/tcl-plugins-enabled
``` ```
@ -551,7 +553,7 @@ Will need to pay through a peer which supports the onion messages which means yo
# aliases: # aliases:
scl | sclconf | scllog scl | sclconf | scllog
# daemon service name: # daemon service name:
slightningd slightningd
# config file: # config file:
@ -567,10 +569,10 @@ Will need to pay through a peer which supports the onion messages which means yo
### Seed ### Seed
* By default a BIP39 wordlist compatible, 24 words seed is used to generate the `hsm_secret` * By default a BIP39 wordlist compatible, 24 words seed is used to generate the `hsm_secret`
* If the wallet was generated or restored from seed on a RaspiBlitz the seed is stored in the disk with the option to encrypt * If the wallet was generated or restored from seed on a RaspiBlitz the seed is stored in the disk with the option to encrypt
* Display the seed from the menu - `CL` - `SEED` * Display the seed from the menu - `CL` - `SEED`
* The file where the seed is stored (until encrypted) is on the disk: `/home/bitcoin/.lightning/bitcoin/seedwords.info` * The file where the seed is stored (until encrypted) is on the disk: `/home/bitcoin/.lightning/bitcoin/seedwords.info`
* Show manually with: * Show manually with:
`sudo cat /home/bitcoin/.lightning/bitcoin/seedwords.info` `sudo cat /home/bitcoin/.lightning/bitcoin/seedwords.info`
* If there is no such file and you have not funded the C-lightning wallet yet can reset the wallet and the next wallet will be created with a seed. * If there is no such file and you have not funded the C-lightning wallet yet can reset the wallet and the next wallet will be created with a seed.
@ -595,7 +597,7 @@ Will need to pay through a peer which supports the onion messages which means yo
# delete temp file # delete temp file
srm /dev/shm/test_hsm_secret srm /dev/shm/test_hsm_secret
``` ```
### How to restore the hsm_secret from text? ### How to restore the hsm_secret from text?
* example from https://lightning.readthedocs.io/BACKUP.html#backing-up-your-c-lightning-node: * example from https://lightning.readthedocs.io/BACKUP.html#backing-up-your-c-lightning-node:
``` ```
@ -619,7 +621,7 @@ Will need to pay through a peer which supports the onion messages which means yo
### Recovery ### Recovery
* https://lightning.readthedocs.io/FAQ.html#database-corruption-channel-state-lost * https://lightning.readthedocs.io/FAQ.html#database-corruption-channel-state-lost
* https://lightning.readthedocs.io/FAQ.html#loss * https://lightning.readthedocs.io/FAQ.html#loss
#### Recover from a cl-rescue file #### Recover from a cl-rescue file
* use the `REPAIR-CL` - `FILERESTORE` option in the menu for instructions to upload * use the `REPAIR-CL` - `FILERESTORE` option in the menu for instructions to upload
@ -629,15 +631,15 @@ Will need to pay through a peer which supports the onion messages which means yo
#### Rescan the chain after restoring a used c-lightning wallet #### Rescan the chain after restoring a used c-lightning wallet
* can use the `menu` -> `REPAIR` -> `REPAIR-CL` -> `RESCAN` option * can use the `menu` -> `REPAIR` -> `REPAIR-CL` -> `RESCAN` option
* or follow the manual process: * or follow the manual process:
<https://lightning.readthedocs.io/FAQ.html#rescanning-the-block-chain-for-lost-utxos> <https://lightning.readthedocs.io/FAQ.html#rescanning-the-block-chain-for-lost-utxos>
``` ```
# stop `lightningd`: # stop `lightningd`:
sudo systemctl stop lightningd sudo systemctl stop lightningd
# the ungraceful method: # the ungraceful method:
sudo killall ligthningd sudo killall ligthningd
# Rescan from the block 700000 # Rescan from the block 700000
sudo -u bitcoin lightningd --rescan -700000 --log-level debug sudo -u bitcoin lightningd --rescan -700000 --log-level debug
@ -675,8 +677,8 @@ Will need to pay through a peer which supports the onion messages which means yo
``` ```
bech32 : bc1q...................................... bech32 : bc1q......................................
pubkey hash : 0123456789abcdef0123456789abcdef01234567 pubkey hash : 0123456789abcdef0123456789abcdef01234567
pubkey : 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01 pubkey : 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01
privkey : 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef privkey : 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
``` ```
* To import the private key of the address in Electrum Wallet will need to convert to base58 * To import the private key of the address in Electrum Wallet will need to convert to base58
``` ```
@ -697,7 +699,7 @@ Will need to pay through a peer which supports the onion messages which means yo
``` ```
KwFvTne98E1t3mTNAr8pKx67eUzFJWdSNPqPSfxMEtrueW7PcQzL KwFvTne98E1t3mTNAr8pKx67eUzFJWdSNPqPSfxMEtrueW7PcQzL
``` ```
* To import to teh Electrum Wallet use the `p2wpkh:` prefix: * To import to teh Electrum Wallet use the `p2wpkh:` prefix:
<https://bitcoinelectrum.com/importing-your-private-keys-into-electrum/> <https://bitcoinelectrum.com/importing-your-private-keys-into-electrum/>
``` ```
p2wpkh:KxacygL6usxP8T9cFSM2SRW5QsEg66bUQUEn997UWwCZANEe7NLT p2wpkh:KxacygL6usxP8T9cFSM2SRW5QsEg66bUQUEn997UWwCZANEe7NLT
@ -711,7 +713,7 @@ Will need to pay through a peer which supports the onion messages which means yo
* Since downgrading the lightning database is not allowed the updated version will persist if the SDcard is reflashed. * Since downgrading the lightning database is not allowed the updated version will persist if the SDcard is reflashed.
### Experimental update to the latest master ### Experimental update to the latest master
* this won't persist in case the SDcard is reflashed so will need to manually update again. * this won't persist in case the SDcard is reflashed so will need to manually update again.
* the commadn to use the built-in script to update to the lates commit in the default branch is: * the commadn to use the built-in script to update to the lates commit in the default branch is:
``` ```
config.scripts/cl.install.sh update config.scripts/cl.install.sh update
@ -890,7 +892,7 @@ cl.setname.sh [mainnet|testnet|signet] [?newName]
Install, remove or get info about the Spark Wallet for C-lightning Install, remove or get info about the Spark Wallet for C-lightning
version: v0.3.0rc version: v0.3.0rc
Usage: Usage:
cl.spark.sh [on|off|menu] <testnet|mainnet|signet> cl.spark.sh [on|off|menu] <testnet|mainnet|signet>
+ ./cl.update.sh -h + ./cl.update.sh -h

57
FAQ.md
View File

@ -1,31 +1,10 @@
<!-- omit in toc --> <!-- omit in toc -->
# FAQ - Frequently Asked Questions # FAQ - Frequently Asked Questions
---
Table of Contents
---
- [Upgrade](#upgrade) - [Upgrade](#upgrade)
- [Is using the prepared SD card image secure?](#is-using-the-prepared-sd-card-image-secure)
- [How to verify the SD card image after download?](#how-to-verify-the-sd-card-image-after-download)
- [What changed on every upgrade?](#what-changed-on-every-upgrade)
- [How do I upgrade my RaspiBlitz?](#how-do-i-upgrade-my-raspiblitz)
- [Why do I need to re-burn my SD card for an update?](#why-do-i-need-to-re-burn-my-sd-card-for-an-update)
- [How can I update LND or bitcoind even before the next RaspiBlitz update?](#how-can-i-update-lnd-or-bitcoind-even-before-the-next-raspiblitz-update)
- [SSH](#ssh)
- [What to do when on SSH I see "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"](#what-to-do-when-on-ssh-i-see-warning-remote-host-identification-has-changed)
- [How do I unplug/shutdown safely without SSH](#how-do-i-unplugshutdown-safely-without-ssh)
- [I cannot connect via SSH to my RaspiBlitz. What do I do?](#i-cannot-connect-via-ssh-to-my-raspiblitz-what-do-i-do)
- [How to SSH over Tor?](#how-to-ssh-over-tor)
- [How to setup port-forwarding with a SSH tunnel?](#how-to-setup-port-forwarding-with-a-ssh-tunnel)
- [How do I setup just a port-forwarding user on my public server?](#how-do-i-setup-just-a-port-forwarding-user-on-my-public-server)
- [How can I repair my SSH login?](#how-can-i-repair-my-ssh-login)
- [Display](#display)
- [Can I flip the screen?](#can-i-flip-the-screen)
- [How to fix my upside down LCD after update?](#how-to-fix-my-upside-down-lcd-after-update)
- [Can I run the RaspiBlitz without a display/LCD?](#can-i-run-the-raspiblitz-without-a-displaylcd)
- [How do I find the IP address when running without a display?](#how-do-i-find-the-ip-address-when-running-without-a-display)
- [Upgrade](#upgrade)
- [Is using the prepared SD card image secure?](#is-using-the-prepared-sd-card-image-secure)
- [How to verify the SD card image after download?](#how-to-verify-the-sd-card-image-after-download) - [How to verify the SD card image after download?](#how-to-verify-the-sd-card-image-after-download)
- [What changed on every upgrade?](#what-changed-on-every-upgrade) - [What changed on every upgrade?](#what-changed-on-every-upgrade)
- [How do I upgrade my RaspiBlitz?](#how-do-i-upgrade-my-raspiblitz) - [How do I upgrade my RaspiBlitz?](#how-do-i-upgrade-my-raspiblitz)
@ -34,7 +13,7 @@
- [SSH](#ssh) - [SSH](#ssh)
- [What to do when on SSH I see "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"](#what-to-do-when-on-ssh-i-see-warning-remote-host-identification-has-changed) - [What to do when on SSH I see "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"](#what-to-do-when-on-ssh-i-see-warning-remote-host-identification-has-changed)
- [How do I unplug/shutdown safely without SSH](#how-do-i-unplugshutdown-safely-without-ssh) - [How do I unplug/shutdown safely without SSH](#how-do-i-unplugshutdown-safely-without-ssh)
- [I cannot connect via SSH to my RaspiBlitz. What do I do?](#i-cannot-connect-via-ssh-to-my-raspiblitz-what-do-i-do) - [I cannot connect via SSH to my RaspiBlitz. What do I do?](#i-cannot-connect-via-ssh-to-my-raspiblitz.-what-do-i-do)
- [How to SSH over Tor?](#how-to-ssh-over-tor) - [How to SSH over Tor?](#how-to-ssh-over-tor)
- [How to setup port-forwarding with a SSH tunnel?](#how-to-setup-port-forwarding-with-a-ssh-tunnel) - [How to setup port-forwarding with a SSH tunnel?](#how-to-setup-port-forwarding-with-a-ssh-tunnel)
- [How do I setup just a port-forwarding user on my public server?](#how-do-i-setup-just-a-port-forwarding-user-on-my-public-server) - [How do I setup just a port-forwarding user on my public server?](#how-do-i-setup-just-a-port-forwarding-user-on-my-public-server)
@ -44,11 +23,11 @@
- [Can I run the RaspiBlitz without a display/LCD?](#can-i-run-the-raspiblitz-without-a-displaylcd) - [Can I run the RaspiBlitz without a display/LCD?](#can-i-run-the-raspiblitz-without-a-displaylcd)
- [How do I find the IP address when running without a display?](#how-do-i-find-the-ip-address-when-running-without-a-display) - [How do I find the IP address when running without a display?](#how-do-i-find-the-ip-address-when-running-without-a-display)
- [Debug](#debug) - [Debug](#debug)
- [I have the full blockchain on another storage. How do I copy it to the RaspiBlitz?](#i-have-the-full-blockchain-on-another-storage-how-do-i-copy-it-to-the-raspiblitz) - [I have the full blockchain on another storage. How do I copy it to the RaspiBlitz?](#i-have-the-full-blockchain-on-another-storage.-how-do-i-copy-it-to-the-raspiblitz)
- [How do I generate a Debug Report?](#how-do-i-generate-a-debug-report) - [How do I generate a Debug Report?](#how-do-i-generate-a-debug-report)
- [Why is my "final sync" taking so long?](#why-is-my-final-sync-taking-so-long) - [Why is my "final sync" taking so long?](#why-is-my-final-sync-taking-so-long)
- [How do I backup my Lightning Node?](#how-do-i-backup-my-lightning-node) - [How do I backup my Lightning Node?](#how-do-i-backup-my-lightning-node)
- [1) Securing your On-Chain- and Channel-Funds during Operation](#1-securing-your-on-chain--and-channel-funds-during-operation) - [1) Securing your On-Chain- and Channel-Funds during Operation](#and-channel-funds-during-operation)
- [2) Making a complete LND data backup](#2-making-a-complete-lnd-data-backup) - [2) Making a complete LND data backup](#2-making-a-complete-lnd-data-backup)
- [How can I recover my coins from a failing RaspiBlitz?](#how-can-i-recover-my-coins-from-a-failing-raspiblitz) - [How can I recover my coins from a failing RaspiBlitz?](#how-can-i-recover-my-coins-from-a-failing-raspiblitz)
- [1) Recover LND data](#1-recover-lnd-data) - [1) Recover LND data](#1-recover-lnd-data)
@ -66,7 +45,7 @@
- [Why is my node address on the display yellow (not green)?](#why-is-my-node-address-on-the-display-yellow-not-green) - [Why is my node address on the display yellow (not green)?](#why-is-my-node-address-on-the-display-yellow-not-green)
- [How do I fix a displayed Error in my Config?](#how-do-i-fix-a-displayed-error-in-my-config) - [How do I fix a displayed Error in my Config?](#how-do-i-fix-a-displayed-error-in-my-config)
- [Can I run the RaspiBlitz as Backend for BTCPayServer?](#can-i-run-the-raspiblitz-as-backend-for-btcpayserver) - [Can I run the RaspiBlitz as Backend for BTCPayServer?](#can-i-run-the-raspiblitz-as-backend-for-btcpayserver)
- [I don't have a LAN port on my Laptop - how do I connect to my RaspiBlitz?](#i-dont-have-a-lan-port-on-my-laptop---how-do-i-connect-to-my-raspiblitz) - [I don't have a LAN port on my Laptop - how do I connect to my RaspiBlitz?](#how-do-i-connect-to-my-raspiblitz)
- [Is it possible to connect the Blitz over Wifi instead of using a LAN cable?](#is-it-possible-to-connect-the-blitz-over-wifi-instead-of-using-a-lan-cable) - [Is it possible to connect the Blitz over Wifi instead of using a LAN cable?](#is-it-possible-to-connect-the-blitz-over-wifi-instead-of-using-a-lan-cable)
- [Can I directly connect the RaspiBlitz to my laptop?](#can-i-directly-connect-the-raspiblitz-to-my-laptop) - [Can I directly connect the RaspiBlitz to my laptop?](#can-i-directly-connect-the-raspiblitz-to-my-laptop)
- [How to attach the RaspberryPi to the HDD?](#how-to-attach-the-raspberrypi-to-the-hdd) - [How to attach the RaspberryPi to the HDD?](#how-to-attach-the-raspberrypi-to-the-hdd)
@ -74,10 +53,9 @@
- [Are those "Under-Voltage detected" warnings a problem?](#are-those-under-voltage-detected-warnings-a-problem) - [Are those "Under-Voltage detected" warnings a problem?](#are-those-under-voltage-detected-warnings-a-problem)
- [How do I return to the menu after exiting to the command line](#how-do-i-return-to-the-menu-after-exiting-to-the-command-line) - [How do I return to the menu after exiting to the command line](#how-do-i-return-to-the-menu-after-exiting-to-the-command-line)
- [How do I setup fresh/clean/reset and without going into recovery mode?](#how-do-i-setup-freshcleanreset-and-without-going-into-recovery-mode) - [How do I setup fresh/clean/reset and without going into recovery mode?](#how-do-i-setup-freshcleanreset-and-without-going-into-recovery-mode)
- [My blockchain data is corrupted - what can I do?](#my-blockchain-data-is-corrupted---what-can-i-do) - [My blockchain data is corrupted - what can I do?](#what-can-i-do)
- [I have two RaspiBlitz in my network - can they both be public?](#i-have-two-raspiblitz-in-my-network---can-they-both-be-public) - [I have two RaspiBlitz in my network - can they both be public?](#can-they-both-be-public)
- [How can I enforce UASP mode for my SSD controller?](#how-can-i-enforce-uasp-mode-for-my-ssd-controller) - [How can I enforce UASP mode for my SSD controller?](#how-can-i-enforce-uasp-mode-for-my-ssd-controller)
- [Development](#development) - [Development](#development)
- [What is the process of creating a new SD card image release?](#what-is-the-process-of-creating-a-new-sd-card-image-release) - [What is the process of creating a new SD card image release?](#what-is-the-process-of-creating-a-new-sd-card-image-release)
- [How can I customize my RaspiBlitz or add other software?](#how-can-i-customize-my-raspiblitz-or-add-other-software) - [How can I customize my RaspiBlitz or add other software?](#how-can-i-customize-my-raspiblitz-or-add-other-software)
@ -90,15 +68,14 @@
- [How can I sync a branch of my forked GitHub with my local RaspiBlitz?](#how-can-i-sync-a-branch-of-my-forked-github-with-my-local-raspiblitz) - [How can I sync a branch of my forked GitHub with my local RaspiBlitz?](#how-can-i-sync-a-branch-of-my-forked-github-with-my-local-raspiblitz)
- [How contribute a feature/change from my forked branch back to the RaspiBlitz repo?](#how-contribute-a-featurechange-from-my-forked-branch-back-to-the-raspiblitz-repo) - [How contribute a feature/change from my forked branch back to the RaspiBlitz repo?](#how-contribute-a-featurechange-from-my-forked-branch-back-to-the-raspiblitz-repo)
- [How can I help testing a Pull Request?](#how-can-i-help-testing-a-pull-request) - [How can I help testing a Pull Request?](#how-can-i-help-testing-a-pull-request)
- [Extras](#extras) - [Extras](#extras)
- [How do I connect a UPS to the RaspiBlitz?](#how-do-i-connect-a-ups-to-the-raspiblitz) - [How do I connect a UPS to the RaspiBlitz?](#how-do-i-connect-a-ups-to-the-raspiblitz)
- [Can I run my RaspiBlitz on Solar Energy?](#can-i-run-my-raspiblitz-on-solar-energy) - [Can I run my RaspiBlitz on Solar Energy?](#can-i-run-my-raspiblitz-on-solar-energy)
- [How to use the Let's Encrypt client](#how-to-use-the-lets-encrypt-client) - [How to use the Let's Encrypt client](#how-to-use-the-lets-encrypt-client)
- [Let's Encrypt - HTTP-01](#lets-encrypt---http-01) - [Let's Encrypt - HTTP-01](#http-01)
- [Let's Encrypt - DNS-01](#lets-encrypt---dns-01) - [Let's Encrypt - DNS-01](#dns-01)
- [Let's Encrypt - eMail Address](#lets-encrypt---email-address) - [Let's Encrypt - eMail Address](#email-address)
- [Let's Encrypt - Installation details](#lets-encrypt---installation-details) - [Let's Encrypt - Installation details](#installation-details)
- [What is this mnemonic seed word list?](#what-is-this-mnemonic-seed-word-list) - [What is this mnemonic seed word list?](#what-is-this-mnemonic-seed-word-list)
- [How do I set up VNC?](#how-do-i-set-up-vnc) - [How do I set up VNC?](#how-do-i-set-up-vnc)
- [Why use BTRFS on RaspiBlitz?](#why-use-btrfs-on-raspiblitz) - [Why use BTRFS on RaspiBlitz?](#why-use-btrfs-on-raspiblitz)
@ -363,14 +340,6 @@ If your RaspiBlitz is not working correctly and you like to get help from the co
*PLEASE NOTICE: It's possible that these logs can contain private information (like IPs, node IDs, ...) - just share publicly what you feel OK with.* *PLEASE NOTICE: It's possible that these logs can contain private information (like IPs, node IDs, ...) - just share publicly what you feel OK with.*
### Can I run my RaspiBlitz on Solar Energy?
Yes - take a look at the project of [Chimezie Chuta](https://twitter.com/mezie16/status/1264513274080636928?s=20)
![RaspiSolar](pictures/raspisolar.jpg)
More details in his book ["A-Z of Building your own Full Bitcoin Lightning Node: A hand Book for Enthusiasts"](https://blockspace.shop/products/a-z-of-building-your-own-full-bitcoin-lightning-node-a-hand-book-for-enthusiasts)
### Why is my "final sync" taking so long? ### Why is my "final sync" taking so long?
First of all if you see a final sync over 90% and you can see from time to time small increase - you should be OK ... this can take a looong time to catch up with the network. Only in the case that you actively choose the `SYNC` option in the `Getting the Blockchain` is a final sync under 90% OK. If you did a torrent or a copy from another computer and you are seeing under 90% something went wrong, and the setup process is ignoring your prepared Blockchain and doing a full sync - which can almost take forever on a raspberryPi. First of all if you see a final sync over 90% and you can see from time to time small increase - you should be OK ... this can take a looong time to catch up with the network. Only in the case that you actively choose the `SYNC` option in the `Getting the Blockchain` is a final sync under 90% OK. If you did a torrent or a copy from another computer and you are seeing under 90% something went wrong, and the setup process is ignoring your prepared Blockchain and doing a full sync - which can almost take forever on a raspberryPi.

122
README.md
View File

@ -12,6 +12,128 @@ RaspiBlitz is mainly targeted for learning how to run your own node decentralize
Discover & develop the growing ecosystem of the Lightning Network by becoming a full part of it. Discover & develop the growing ecosystem of the Lightning Network by becoming a full part of it.
Build it as part of a [workshop](WORKSHOP.md) or as a weekend project yourself. Build it as part of a [workshop](WORKSHOP.md) or as a weekend project yourself.
---
Table of Contents
---
- [Feature Overview](#feature-overview)
- [DeepDive Video (July 2020)](#deepdive-video-july-2020)
- [Time Estimate to Set Up a RaspiBlitz](#time-estimate-to-set-up-a-raspiblitz)
- [Hardware Needed](#hardware-needed)
- [Buy a ready-2-go RaspiBlitz (Germany, EU and International)](#buy-a-ready-2-go-raspiblitz-germany-eu-and-international)
- [Amazon Shopping List (buy parts & build it yourself)](#amazon-shopping-list-buy-parts--build-it-yourself)
- [Assemble your RaspiBlitz](#assemble-your-raspiblitz)
- [Downloading the Software](#downloading-the-software)
- [Write the SD-Card image to your SD Card](#write-the-sd-card-image-to-your-sd-card)
- [Boot your RaspiBlitz](#boot-your-raspiblitz)
- [Support](#support)
- [Documentation](#documentation)
- [Groups](#groups)
- [Setup Process (Detailed Documentation)](#setup-process-detailed-documentation)
- [Basic Setup](#basic-setup)
- [LNDRESCUE LND tar.gz-Backupfile (BEST)](#lndrescue-lnd-tar.gz-backupfile-best)
- [SEED+SCB Words Seed & channel.backup file (OK)](#seedscb-words-seed--channel.backup-file-ok)
- [ONLY SEED Only Seed Word List (Fallback)](#only-seed-only-seed-word-list-fallback)
- [Final Setup](#final-setup)
- [1. SYNC - Self validate all Blocks](#self-validate-all-blocks)
- [2. COPY - Copy from Laptop or another RaspiBlitz over Local Network](#copy-from-laptop-or-another-raspiblitz-over-local-network)
- [Main Menu](#main-menu)
- [Feature Documentation](#feature-documentation)
- [INFO: Raspiblitz Status Screen](#info-raspiblitz-status-screen)
- [LIGHTNING (Basic Node Management)](#lightning-basic-node-management)
- [FUNDING: Fund your on-chain Wallet](#funding-fund-your-on-chain-wallet)
- [CONNECT: Connect to a Peer](#connect-connect-to-a-peer)
- [CHANNEL: Open a Channel with Peer](#channel-open-a-channel-with-peer)
- [SEND: Pay an Invoice/PaymentRequest](#send-pay-an-invoicepaymentrequest)
- [RECEIVE: Create Invoice/PaymentRequest](#receive-create-invoicepaymentrequest)
- [NAME: Change name of your Node](#name-change-name-of-your-node)
- [CLOSE ALL: Closing all open Channels](#close-all-closing-all-open-channels)
- [CASHOUT: Remove Funds from on-chain Wallet](#cashout-remove-funds-from-on-chain-wallet)
- [SETTINGS: Basic Settings of RaspiBlitz](#settings-basic-settings-of-raspiblitz)
- [Touchscreen (experimental)](#touchscreen-experimental)
- [LCD Rotate](#lcd-rotate)
- [Run behind Tor](#run-behind-tor)
- [Parallel Testnet/Signet](#parallel-testnetsignet)
- [ZeroTier](#zerotier)
- [LND LIGHTNING LABS NODE](#lnd-lightning-labs-node)
- [LND Channel Autopilot](#lnd-channel-autopilot)
- [LND Accept Keysend](#lnd-accept-keysend)
- [LND Circuitbreaker (Firewall for LND)](#lnd-circuitbreaker-firewall-for-lnd)
- [LND Auto-Unlock](#lnd-auto-unlock)
- [LND StaticChannelBackup on Nextcloud](#lnd-staticchannelbackup-on-nextcloud)
- [StaticChannelBackup on USB Drive](#staticchannelbackup-on-usb-drive)
- [StaticChannelBackup per SCP/SSH to other server](#staticchannelbackup-per-scpssh-to-other-server)
- [C-LIGHTNING NODE](#c-lightning-node)
- [CL CLBOSS Automatic Node Manager](#cl-clboss-automatic-node-manager)
- [CL Wallet Encryption](#cl-wallet-encryption)
- [SERVICES: Activate/Deactivate Services](#services-activatedeactivate-services)
- [Electrum Rust Server](#electrum-rust-server)
- [BTCPayServer](#btcpayserver)
- [BTC-RPC-Explorer](#btc-rpc-explorer)
- [Specter Desktop](#specter-desktop)
- [Mempool Space](#mempool-space)
- [JoinMarket](#joinmarket)
- [Download Bitcoin Whitepaper](#download-bitcoin-whitepaper)
- [RTL Webinterface](#rtl-webinterface)
- [ThunderHub](#thunderhub)
- [Lightning Terminal (LIT) with loop, pool & faraday](#lightning-terminal-lit-with-loop-pool--faraday)
- [LNbits](#lnbits)
- [Balance of Satoshi](#balance-of-satoshi)
- [PyBlock](#pyblock)
- [Channel Tools (chantools)](#channel-tools-chantools)
- [Sphinx Relay Server](#sphinx-relay-server)
- [C-Lightning RTL Webinterface](#c-lightning-rtl-webinterface)
- [C-Lightning Sparko Webwallet](#c-lightning-sparko-webwallet)
- [C-Lightning Spark Webwallet](#c-lightning-spark-webwallet)
- [SYSTEM: Monitoring & Configuration](#system-monitoring--configuration)
- [CONNECT: Connect Apps & Credentials](#connect-connect-apps--credentials)
- [MOBILE: Mobile Wallet Apps (Smartphone)](#mobile-mobile-wallet-apps-smartphone)
- [Electrum Rust Server](#electrum-rust-server-1)
- [BTCPAY: Get the connection string for the BTCPay Server](#btcpay-get-the-connection-string-for-the-btcpay-server)
- [bitcoinRPC](#bitcoinrpc)
- [BISQ: Use your node with BISQ](#bisq-use-your-node-with-bisq)
- [EXPORT: Macaroons and TLS.cert](#export-macaroons-and-tls.cert)
- [SSH Download](#ssh-download)
- [Browser download](#browser-download)
- [Hex-String](#hex-string)
- [SUBSCRIBE: Subscription Services](#subscribe-subscription-services)
- [IP2TOR (paid)](#ip2tor-paid)
- [HTTPS with LetsEncrypt (free)](#https-with-letsencrypt-free)
- [PASSWORD: Change Passwords](#password-change-passwords)
- [REPAIR: Options to test, repair and reset your RaspiBlitz](#repair-options-to-test-repair-and-reset-your-raspiblitz)
- [SOFTWARE: Run Software Tests (DebugReport)](#software-run-software-tests-debugreport)
- [BACKUP-LND: Backup your LND data (Rescue-File)](#backup-lnd-backup-your-lnd-data-rescue-file)
- [RESET-LND: Delete LND & start a node/wallet](#reset-lnd-delete-lnd--start-a-nodewallet)
- [REPAIR-CL: Repair/Backup C-Lightning](#repair-cl-repairbackup-c-lightning)
- [MIGRATION: Migrate Blitz Data to new Hardware](#migration-migrate-blitz-data-to-new-hardware)
- [COPY-SOURCE: Offer your Blockchain to another RaspiBlitz for Setup](#copy-source-offer-your-blockchain-to-another-raspiblitz-for-setup)
- [RESET-CHAIN: Delete Blockchain and Re-Download](#reset-chain-delete-blockchain-and-re-download)
- [RESET-HDD: Delete HDD data but keep blockchain](#reset-hdd-delete-hdd-data-but-keep-blockchain)
- [RESET-ALL: Delete HDD completely & start fresh](#reset-all-delete-hdd-completely--start-fresh)
- [DELETE-ELEC: Delete Electrum Index](#delete-elec-delete-electrum-index)
- [DELETE-INDEX: Delete Bitcoin TX-Index](#delete-index-delete-bitcoin-tx-index)
- [UPDATE: Check/Prepare RaspiBlitz Update](#update-checkprepare-raspiblitz-update)
- [RELEASE: Update RaspiBlitz to a new Version](#release-update-raspiblitz-to-a-new-version)
- [PATCH: Patch RaspiBlitz code](#patch-patch-raspiblitz-code)
- [LND: Interim LND Update](#lnd-interim-lnd-update)
- [BITCOIN: Interim Bitcoin Update](#bitcoin-interim-bitcoin-update)
- [REBOOT: Reboot RaspiBlitz](#reboot-reboot-raspiblitz)
- [OFF: PowerOff RaspiBlitz](#off-poweroff-raspiblitz)
- [EXIT: Console Terminal](#exit-console-terminal)
- [Import a Migration File](#import-a-migration-file)
- [Make a RaspiBlitz out of your Umbrel or MyNode](#make-a-raspiblitz-out-of-your-umbrel-or-mynode)
- [Interface / APIs](#interface--apis)
- [Bitcoin](#bitcoin)
- [LND-Lightning](#lnd-lightning)
- [Backup for On-Chain- & Channel-Funds](#-channel-funds)
- [A) Nextcloud](#a-nextcloud)
- [B) SCP Backup Target](#b-scp-backup-target)
- [C) Local Backup Target (USB Thumbdrive)](#c-local-backup-target-usb-thumbdrive)
- [Updating RaspiBlitz to new Version](#updating-raspiblitz-to-new-version)
- [Build the SD Card Image](#build-the-sd-card-image)
- [FAQ](#faq)
- [Community Development](#community-development)
---
## Feature Overview ## Feature Overview
There are further Services that can be switched on: There are further Services that can be switched on:

70
toc.sh Executable file
View File

@ -0,0 +1,70 @@
#!/usr/bin/env sh
## Updated version maintained on https://github.com/nyxnor/scripts/blob/master/toc.sh
## Produces Table of Contents (ToC) for simple markdown files
## Requirement: header is set by hashtag '#'
## $1 = FILE.md
red="\033[31m"
#nocolor="\033[0m"
error_msg(){ printf %s"${red}ERROR: ${1}\n" >&2; exit 1; }
test -f "${1}" || error_msg "file '${1}' doesn't exist"
trap 'rm -f toc.tmp' EXIT INT
line_count=0
while IFS="$(printf '\n')" read -r line; do
line_count=$((line_count+1))
## extract code blocks
code="${code:-0}"
[ "${code}" -eq 0 ] && printf '%s\n' "${line_count}:${line}" | grep "^${line_count}:.*# "
case "${line}" in
*\`\`\`*)
case "${code}" in
1) code=0;;
0|*) code=1;;
esac
;;
esac
done < "${1}" > toc.tmp
while IFS="$(printf '\n')" read -r line; do
## get line number
line_number="$(printf '%s\n' "${line}" | cut -d ":" -f1)"
## remove hashtag from line to be compared later if it is repeated
line_clean="$(printf '%s\n' "${line}" | sed "s/.*\# //")"
## save header to cache to check later if it was already printed
# shellcheck disable=SC2030
line_cache="$(printf '%s\n%s\n' "${line_cache}" "${line}")"
## check if header was already printed before and if positive, save all repeated headers
## if positive, insert link index
line_repeated="$(printf '%s\n' "${line_cache}" | grep -c -- ".*# ${line_clean}$")"
line_repeated_index=""
## first line does not have '-n', just the first repeated line (second occurence), starting with '-1'. So we consider the occurrence-1.
[ "${line_repeated}" -ge 2 ] && line_repeated_index="-$((line_repeated-1))"
## if it is the second time line has repeated, save first and second occurrence
if [ "${line_repeated}" -eq 2 ]; then
line_first_occurrence="$(printf '%s\n' "${line_cache}" | grep -- ".*# ${line_clean}$" | head -n 1)"
line_repeated_cache="$(printf '%s\n%s\n' "${line_first_occurrence}" "${line}")"
## if it is the third or greater time line has repeated, save lines from before (1st and 2nd occurrence) plus add current lines
elif [ "${line_repeated}" -gt 2 ]; then
line_repeated_cache="$(printf '%s\n%s\n' "${line_repeated_cache}" "${line}")"
fi
## clean header that have link reference
line_md="$(printf '%s\n' "${line}" | sed "s/${line_number}://;s|](.*||;s|\[||;s/\]//g")"
## set header indentation
line_md="$(printf '%s\n' "${line_md}" | sed "s|######| -|;s|#####| -|;s|####| -|;s|###| -|;s|##| -|;s|#|-|")"
## set link content
line_content="$(printf '%s\n' "${line_md}" | sed "s/.*- /#/;s| |-|g;s|'||g;s|]||g;s/|/-/g" | tr "[:upper:]" "[:lower:]" | tr -cd "[:alnum:]-._")"
## set link reference
line_md="$(printf '%s\n' "${line_md}" | sed "s|- |- [|;s|$|](#${line_content}${line_repeated_index})|")"
## print header
printf '%s\n' "${line_md}"
done < toc.tmp
[ -n "${line_repeated_cache}" ] &&
printf %s"\n\nWARN: Some headers are repeated, the hiperlinks are correctly indexed. If you think this is an error, review these lines:headers:\n${line_repeated_cache}\n"