From 9eeb7f22e053bf71b42cd948a87e4342974dc17c Mon Sep 17 00:00:00 2001 From: /rootzoll Date: Sat, 16 Oct 2021 22:59:30 +0200 Subject: [PATCH 01/35] Update FAQ links (#2633) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ac9de56e5..71e9d57ec 100644 --- a/README.md +++ b/README.md @@ -1150,14 +1150,14 @@ The whole build process takes a while. At the end the LCD drivers get installed *Note: If you plan to use your self-build sd card as a MASTER copy and distribute it: Use a smaller 8GB card for that. This way it's ensured that it will fit on every 16 GB card recommended for RaspiBlitz later on.* * [Can I run RaspiBlitz on other computers than RaspberryPi?](FAQ.md#can-i-run-raspiblitz-on-other-computers-than-raspberrypi) -* [How can I build an SD card other than the master branch?](FAQ.md#how-can-i-build-an-sd-card-other-then-the-master-branch) +* [How can I build an SD card from another branch?](FAQ.md#how-can-i-build-an-sd-card-from-another-branch) * [How can I build an SD card from my forked GitHub Repo?](FAQ.md#how-can-i-build-an-sd-card-from-my-forked-github-repo) ## FAQ Here is a short selection of the very frequently asked questions: -* [How to backup my Lightning Node?](FAQ.md#how-to-backup-my-lightning-node) +* [How do I backup my Lightning Node?](FAQ.md#how-do-i-backup-my-lightning-node) * [How can I recover my coins from a failing RaspiBlitz?](FAQ.md#how-can-i-recover-my-coins-from-a-failing-raspiblitz) * [Are those "Under-Voltage detected" warnings a problem?](FAQ.md#are-those-under-voltage-detected-warnings-a-problem) * [Can I run RaspiBlitz on computer boards other than RaspberryPi?](FAQ.md#can-i-run-raspiblitz-on-other-computers-than-raspberrypi) From aa962c105a589ee8b711e32718542787095a690f Mon Sep 17 00:00:00 2001 From: Will Clark Date: Sat, 16 Oct 2021 22:27:57 +0100 Subject: [PATCH 02/35] README: Improve clarity, spell fixes (#2619) * README: Improve clarity, spell fixes * README single line phrases Allows much easier (re)moving and reordering using text editors --- README.md | 556 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 377 insertions(+), 179 deletions(-) diff --git a/README.md b/README.md index 71e9d57ec..03b2c321d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ **The RaspiBlitz is a do-it-yourself Lightning Node (LND and/or c-lightning) running together with a Bitcoin-Fullnode on a RaspberryPi (1TB SSD) and a nice display for easy setup & monitoring.** -RaspiBlitz is mainly targeted for learning how to run your own node decentralized from home - because: Not your Node, Not your Rules. 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. +RaspiBlitz is mainly targeted for learning how to run your own node decentralized from home - because: Not your Node, Not your Rules. +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. ## Feature Overview @@ -52,11 +54,13 @@ Also many more features like Touchscreen, Channels Autopilot, Backup, DynDNS, SS ## Time Estimate to Set Up a RaspiBlitz -The RaspiBlitz is optimized for being setup during a workshop at a hackday or conference (see [detailed workshop tutorial](WORKSHOP.md)). When it comes fully assembled with an up-to-date synced blockchain, it's possible to have it ready in about 2 to 3 hours. +The RaspiBlitz is optimized for being setup during a workshop at a hackday or conference (see [detailed workshop tutorial](WORKSHOP.md)). +When it comes fully assembled with an up-to-date synced blockchain, it's possible to have it ready in about 2 to 3 hours. If you start at home ordering the parts from Amazon (see shopping list below) then it's a weekend project with a lot of downloading and syncing time where you can do other stuff while checking on the progress from time to time. -If you already run a Umbrel or myNode you have basically all the hardware needed and you can make the [Migration to RaspiBlitz from Umbrel/myNode](#make-a-raspiblitz-out-of-your-umbrel-or-mynode) under one hour. +If you already run a Umbrel or myNode you have basically all the hardware needed and you can make the [Migration to RaspiBlitz from Umbrel/myNode](#make-a-raspiblitz-out-of-your-umbrel-or-mynode) under one hour. + ## Hardware Needed @@ -70,9 +74,12 @@ Find a list of other shops selling a plug&play RaspiBlitz in your area on [raspi ### Amazon Shopping List (buy parts & build it yourself) -The cheapest way is to buy and assemble the single parts yourself. There are two packages. +The cheapest way is to buy and assemble the single parts yourself. +There are two packages. -*Please try to use the exact hardware models that are recommended in the shopping lists. We have had multiple reports where, for example, other SSD or SSD cases/controllers lead to problems. The idea of the shopping lists is to provide you the best tested hardware components that work together - improvement recommendations are always welcome.* +*Please try to use the exact hardware models that are recommended in the shopping lists. +We have had multiple reports where, for example, other SSD or SSD cases/controllers lead to problems. +The idea of the shopping lists is to provide you the best tested hardware components that work together - improvement recommendations are always welcome.* * RaspberryPi 4 4GB (or 8GB) [amazon referral link](https://geni.us/raspiblitz-4gb-new) * Power Supply - USB-C, 5V, >=3A [amazon referral link](https://geni.us/raspiblitz-ps) @@ -115,7 +122,7 @@ In the end your RaspiBlitz should look like this: |Instructions|[Download 1.7.1 image](https://raspiblitz.fulmo.org/images/raspiblitz-v1.7.1-2021-10-12.img.gz) and [Flash the sd card](README.md#write-the-sd-card-image-to-your-sd-card)|[Build your own sd card image](#build-the-sd-card-image)| |Verify what?|[Signature file](https://raspiblitz.fulmo.org/images/raspiblitz-v1.7.1-2021-10-12.img.gz.sig) and [verify the Sig](FAQ.md#how-to-verify-the-sd-card-image-after-download) OR SHA-256 (below)|All of the code, don't trust, verify| -If downloading the maintainer sd card image: +If downloading the maintainer SD card image: * GPG 64-bit: 1C73 060C 7C17 6461 * SHA-256: 4b5481e0f27afe9b5aa8bab5805f7df033f2596db29a1e47c25d2f0109d9c003 @@ -134,7 +141,8 @@ Useful info: ## Write the SD-Card image to your SD Card -You need to write the downloaded SD card image (the img.gz-file) to your SD card (16GB minimum) - you can use the very easy tool Balena Etcher for this: https://www.balena.io/etcher/. It's available for Win, Mac & Linux. +You need to write the downloaded SD card image (the img.gz-file) to your SD card (16GB minimum) - you can use the very easy tool Balena Etcher for this: https://www.balena.io/etcher/. +It's available for Win, Mac & Linux. ## Boot your RaspiBlitz @@ -164,11 +172,12 @@ Now open up a terminal ([OSX](https://www.youtube.com/watch?v=5XgBd6rjuDQ)/[Win1 *Further down you will find more [detailed documentation of the setup process](#setup-process-detailed-documentation).* -* [I cannot connect per SSH to my RaspiBlitz. What to do?](FAQ.md#i-cannot-connect-per-ssh-to-my-raspiblitz-what-to-do) +* [I cannot connect by SSH to my RaspiBlitz. What to do?](FAQ.md#i-cannot-connect-per-ssh-to-my-raspiblitz-what-to-do) ## Support -If you run into a problem or you have still a question, follow the steps below to get support. Also check the [setup documentation](#setup-process-detailed-documentation) for details. +If you run into a problem or you have still a question, follow the steps below to get support. +Also check the [setup documentation](#setup-process-detailed-documentation) for details. ### Documentation @@ -212,17 +221,21 @@ If you are looking for a tutorial on how to organize a workshop to build the Ras ### Basic Setup - Everytime you start with a fresh sd card image you will get offerered different options. For example this is also the point where you can import a Migration file from an older RaspiBlitz - read about Migration [further down](README.md#import-a-migration-file). But because you are setting up a brand new RaspiBlitz you will choose here `FRESHSETUP`. +Every time you start with a fresh SD card image you will be offered different options. +For example this is also the point where you can import a Migration file from an older RaspiBlitz - read about Migration [further down](README.md#import-a-migration-file). +But because you are setting up a brand new RaspiBlitz you will choose here `FRESHSETUP`. ![SSH0](pictures/ssh0-welcome2.png) -Then you will be asked what todo with the connected harddrive/ssd. +Then you will be asked what to do with the connected hard drive/SSD. -If there is already a blockchain on your hardrive/ssd - you will be asked if you want to use this pre-synced/validated data or if its OK to delete it. If there is no blockchain data - this question will be skipped. +If there is already a blockchain on your hard drive/SSD you will be asked if you want to use this pre-synced/validated data or if its OK to delete it. +If there is no blockchain data this question will be skipped. ![SSH0](pictures/ssh0-askchain.png) -Finally you have to agree that all (other) data will get deleted on the harddrive/ssd (except the blockchain if you choosed that before). This might take some seconds. +Finally you have to agree that all (other) data on the hard drive/SSD will be deleted, except the blockchain if you selected that previously. +This might take some seconds. ![SSH0](pictures/ssh0-formathdd.png) @@ -230,95 +243,125 @@ First thing to setup is giving your RaspiBlitz a name: ![SSH1](pictures/ssh1-name.png) -This name is given to the RaspiBlitz as a public alias of the lightning node for everybody to see. +The name you choose for your RaspiBlitz will also be used as your public alias of your lightning node so choose wisely. -Then you can choose which Lightning implementation you want to run on top of your Bitcoin Fullnode. RaspiBlitz started with `LND` from Lightning Labs which is used by most other RaspberryPi lightning nodes and works with most additional apps. But you can now also choose `CL` for c-lightning by Blockstream which is a good choice for already more experienced node operators & lightning developers that want to use the highly customizable plug-in structure that c-lightning offers. +Then you can choose which Lightning implementation you want to run on top of your Bitcoin Fullnode. +RaspiBlitz started with `LND` from Lightning Labs which is used by most other RaspberryPi lightning nodes and works with most additional apps. +But you can now also choose `CL` for c-lightning by Blockstream which is a good choice for more experienced node operators & lightning developers that want to use the highly customizable plugin structure that c-lightning offers. -Its also possible to use both in parallel on your RaspiBlitz later on - just pick one to start with or choose `NONE` is your only interested in running a Fullnode without Lightning. +It's also possible to use both lightning node implementations in parallel on your RaspiBlitz later on - just pick one to start with for now. + +Choose `NONE` if you're only interested in running a Bitcoin full node without Lightning. ![SSH1](pictures/ssh1-layer2.png) *In the following we show the setup with LND - which is very similar to the steps with c-lightning.* -If you choosed one of the lightning implementations you will now be asked if you want to start a `NEW` wallet/lightning node or if you had an `OLD` lightning wallet/node that you want to re-create. +If you chose to use one of the lightning implementations you will now be asked if you want to start a `NEW` wallet/lightning node or if you have an `OLD` lightning wallet/node that you want to re-create. ![SSH1](pictures/ssh1-oldnew.png) -Normally you just chose `NEW` here .. but to recover an old wallet you have the following options if you choose `OLD`: +Normally you just chose `NEW` here, but to recover an old wallet you have the following options if you choose `OLD`: ![SSH1](pictures/ssh2-layer2old.png) ##### LNDRESCUE LND tar.gz-Backupfile (BEST) -Choose this option if you have made a complete backup of the LND or c-lightning data and have a tar.gz file starting with the word 'lnd-rescue' or 'cl-rescue' available. It will recover all your on-chain funds and open channels you had. But you have to make sure that the rescue backup you have is really the latest version - otherwise you might lose channel funds. +Choose this option if you have made a complete backup of the LND or c-lightning data and have a tar.gz file starting with the word 'lnd-rescue' or 'cl-rescue' available. +It will recover all your on-chain funds and open channels you had. +But you have to make sure that the rescue backup you have is really the latest version - otherwise you might lose channel funds. -*If you have tar.gz file that starts with 'raspiblitz', that's a migration file. That also includes your old LND/c-lightning wallet, but you import that file at the beginning of the setup process with 'FROMBACKUP - Upload Migration Backup' instead choosing FRESHSETUP* +*If you have tar.gz file that starts with 'raspiblitz', that's a migration file. +That also includes your old LND/c-lightning wallet, but you import that file at the beginning of the setup process with 'FROMBACKUP - Upload Migration Backup' instead choosing FRESHSETUP* ##### SEED+SCB Words Seed & channel.backup file (OK) -Next best option is, if you have the channel.backup file and the word list seed. This is the best chance to recover the on-chain funds you had in open channels. But all channels you had open before will be closed during this procedure. +The next best option is if you have the channel.backup file and the word list seed. +This allows you to recover all on-chain funds (i.e. "bitcoin balance") in the lightning wallet, and gives you a good chance of recovering the off-chain funds (i.e. "lightning balance") you had in open channels, as long as the remote peer supports `option_data_loss_protect` which is very common since 2020. +All channels you had open before will be closed during this procedure. +See [Bitcoin Optech - Static Channel Backups](https://bitcoinops.org/en/topics/static-channel-backups/) for more background information on this process. ##### ONLY SEED Only Seed Word List (Fallback) -If you just have the word list (RaspiBlitz 1.1 and older) you can at least try to recover your on-chain funds. Recovery of channel funds is not very likely in this scenario. +If you only have the seed word list (RaspiBlitz 1.1 and older) you can at least try to recover your on-chain funds. +Recovery of channel funds is not very likely in this scenario. But normally you are setting up a new node - so simply choose `NEW` in the menu. ![SSH2](pictures/ssh2-passwords.png) -Finally you have to set 3 passwords called A, B & C ... please choose here single strings (without spaces and special characters) that are at least 8 chars long. +Finally you have to set 3 passwords called A, B & C. +For each password please choose unique, single strings, without spaces and special characters, that are at least 8 chars long. -You can use this [RaspiBlitz Recovery Sheet (PDF)](https://github.com/rootzoll/raspiblitz/raw/v1.7/home.admin/assets/RaspiBlitzRecoverySheet.pdf) to write those passwords down for save storage and also use it later on for your Seed Words. +You can use this [RaspiBlitz Recovery Sheet (PDF)](https://github.com/rootzoll/raspiblitz/raw/v1.7/home.admin/assets/RaspiBlitzRecoverySheet.pdf) to write those passwords down for safe storage and also use it later on for your Seed Words. *The password A,B,C idea is based on the [RaspiBolt Guide Preparations](https://stadicus.github.io/RaspiBolt/raspibolt_10_preparations.html#write-down-your-passwords) - check out for more background.* -First Password A is requested - this is the new password which has to be used for every SSH login for now. It's also set for the existing users: admin, root, bitcoin & pi. +First, password A is requested - this is the password which will be used for SSH login and it's also set for the existing users: admin, root, bitcoin & pi. -*The bitcoin and lightning services will later run in the background (as daemon) and use the separate user “bitcoin” for security reasons. This user does not have admin rights and cannot change the system configuration.* +*The bitcoin and lightning services will later run in the background (as daemon) and use the separate user “bitcoin” for security reasons. +This user does not have admin rights and cannot change the system configuration.* -Then enter the Password B - this is internally used for the bitcoin RPC interface. But also as login for additional apps like the RTL-WebGUI or the Blockexplorer: +Then enter password B - this is internally used for the bitcoin RPC interface. +It is also used as login for additional apps like the RTL-WebGUI or the Blockexplorer. -And finally enter the Password C - this is used to encrypt/lock the lightning wallet on the harddrive/ssd and is used by LND. Everytime a lightning node is started/rebooted LND needs load the wallet into memory to work with and ask you for the Password C to "unlock" the wallet. +And finally enter password C - this is used to encrypt/lock the lightning wallet on the hard drive/SSD and is used by LND. +Every time a lightning node is started/rebooted LND needs load the wallet into memory to work with and ask you for password C to "unlock" the wallet. -*In the early RaspiBlitz versions there was also an additional Pasword D, that is no longer in use.* +*In the early RaspiBlitz versions there was also an additional password D, that is no longer in use.* -After this the setup process will need some time to set everything up - just wait until it's finished - this can take from 10 to 30 minutes: +After this the setup process will need some time to set everything up - just wait until it's finished. +This can take from 10 to 30 minutes: ![SSH4](pictures/ssh4-scripts.png) ### Final Setup -Once the basic setup ran thru you lightning node & wallet was created and you get presented the important backup seed words which you need to write down on paper and store them in a secure location. You will need to confirm that you wrote the seed words down before you can continue. +Once the basic setup has completed your lightning node will be setup & your lightning wallet will be created for you. +As part of this process you will be presented with your lightning node "seed words" which you *MUST* write down on paper (or engrave into steel) and store in a secure location. +You will need to confirm that you wrote the seed words down before you can continue. ![SSH4](pictures/ssh4-seed.png) -WRITE YOUR PERSONAL WORDS DOWN before you continue - you will need them to recover funds in case of failing hardware etc. If you just want to try/experiment with the RaspiBlitz, at least take a photo with your smartphone just in case. If you plan to keep your RaspiBlitz running, store this word list offline or in a password safe. +WRITE YOUR SEED WORDS DOWN before you continue - you will need them to recover funds in case of failing hardware etc. +If you just want to try/experiment with the RaspiBlitz, at least take a photo of the seed words with your smartphone, so you have something just in case. +If you plan to keep your RaspiBlitz running store this word list offline or in a password safe. -You can use this [RaspiBlitz Recovery Sheet (PDF)](https://github.com/rootzoll/raspiblitz/raw/v1.7/home.admin/assets/RaspiBlitzRecoverySheet.pdf) to write down those seed words for save storage. +You can use this [RaspiBlitz Recovery Sheet (PDF)](https://github.com/rootzoll/raspiblitz/raw/v1.7/home.admin/assets/RaspiBlitzRecoverySheet.pdf) to write down your seed words for safe storage. -If you dont had a full copy of the blockchain pre-synced/validated on your harddrive/ssd then you will now be asked how you want to get your copy of the blockchain .. there are two basic options here: +If you don't have a full copy of the blockchain pre-synced/validated on your hard drive/SSD then you will now be asked how you want to get your copy of the blockchain. +There are two basic options : ![SSH4](pictures/ssh4-blockchain.png) -#### 1. SYNC - Selfvalidate all Blocks +#### 1. SYNC - Self validate all Blocks -With the new RaspberryPi 4 (with SSD & min 2GB RAM) this is the best way to go. It will take around 3-6 days to sync & validate directly with the bitcoin network. With this option, you have done it the original `don't trust, verify` way. +For the new RaspberryPi 4 (with SSD & min 2GB RAM) this is the best way to go. +It will take around 3-6 days to sync & validate directly with the bitcoin network. +With this option, you have done it the original `don't trust, verify` way. -*For the old RaspberryPi 3 this is not recommended. A RaspberryPi 3 has a very low power CPU and syncing+validating the blockchain directly with the peer2peer network can take multiple weeks - that's why for a RP3 you should choose the COPY option .* +*For the old RaspberryPi 3 this is not recommended. +A RaspberryPi 3 has a very low power CPU and syncing+validating the blockchain directly with the peer2peer network can take multiple weeks - that's why for a RP3 you should choose the COPY option .* #### 2. COPY - Copy from Laptop or another RaspiBlitz over Local Network -If you have a friend that is already running a synced RaspiBlitz or you have a laptop with enough free space on the harddrive that can download & validate the Blockchain much faster you can also choose the `COPY` option. You can then delete existing blockchain your RaspiBlitz already started syncing for you. +If you have a friend that is already running a synced RaspiBlitz or you have a laptop with enough free space on the hard drive that can download & validate the Blockchain much faster you can also choose the `COPY` option. +You can then delete existing blockchain your RaspiBlitz already started syncing for you ![SSH4](pictures/ssh4-copy.png) -To copy from another RaspiBlitz choose `BLITZ` and follow the instructions. Know that the other Blitz will be offline to the lightning network during the copy that will take multiple hours. +To copy from another RaspiBlitz choose `BLITZ` and follow the instructions. +Know that the other Blitz will be offline to the lightning network during the copy that will take multiple hours. -To copy from your laptop/computer (`WINDOWNS`, `MACOS` & `LINUX` options) you first need to download & validate the blockchain on your own computer/laptop. Todo so install latest bitcoin-core (0.18.1 or higher) from [bitcoin.org](https://bitcoin.org/en/download) and keep it running until blockchain is synced (will need around 400 GB). Then under the `COPY` option choose the Operating System. The copy will be done over the local network by SCP (SSH file transfer) - follow the instructions given in the dialogs. It's advised to keep a backup of the bitcoin-core & the blockchain data (e.g. on your laptop) in case you need to re-setup the RaspiBlitz. +To copy from your laptop/computer (`WINDOWS`, `MACOS` & `LINUX` options) you first need to download & validate the blockchain on your own computer/laptop. +To do so, install latest bitcoin-core (0.18.1 or higher) from [bitcoin.org](https://bitcoin.org/en/download) and keep it running until the blockchain is synced (will need around 400 GB). +Then under the `COPY` option choose the Operating System. +The copy will be done over the local network by SCP (SSH file transfer) - follow the instructions given in the dialogues. +It's advised to keep a backup of Bitcoin Core & the blockchain data directory on your laptop/computer in case you need to re-setup the RaspiBlitz. -More details: [I have the full blockchain on another computer. How do I copy it to the RaspiBlitz?](FAQ.md#i-have-the-full-blockchain-on-another-computer-how-do-i-copy-it-to-the-raspiblitz) +More details: [I have the full blockchain on another computer. How do I copy it to the RaspiBlitz?](FAQ.md#i-have-the-full-blockchain-on-another-storage-how-do-i-copy-it-to-the-raspiblitz) -If you dont have the Bitcoin Blockchain already on another laptop or RaspiBlitz simply choose `SELFSYNC`. +If you don't have the Bitcoin blockchain already on another laptop or RaspiBlitz simply choose `SELFSYNC`. And hooray :D Your RaspiBlitz is ready to go! Welcome new node operator. @@ -328,15 +371,20 @@ If you hit OK, the RaspiBlitz will go into a final reboot. ![SSH5](pictures/ssh5-reboot.png) -Just wait a bit and then the SSH command to login again. Dont forget to use this time your password A ... which is always for password for system login. +Just wait a bit and then the SSH command to login again. +Logging in via SSH requires password A that you setup earlier. ![SSH5](pictures/ssh5-unlock.png) -If you run LND you will be asked to unlock your wallet - thats always your password C. BTW under `SETTINGS` in the main menu you can activate the Auto-Unlock if you prefer. +If you run LND you will be asked to unlock your wallet - this requires password C. +There is an option to activate auto-unlock of LND if you prefer, this can be found under `SETTINGS` in the main menu. ![SSH5](pictures/ssh5-blocksync.png) -Remeber that now your RaspiBlitz might need a longer time to sync/validate the blockchain - this can be multiple days. In the beginnig you might see fast progress but its normal that this gets slower later on. Also your RaspberryPi CPU might get quite hot ... thats also OK during this inital sync time - the RaspberryPi has its own protection against overheating and will push thru. +Your RaspiBlitz might need quite some time to sync and validate the blockchain -- this can be multiple days. +In the beginning you might see fast progress but this gets slower later on as historical blocks start to get fuller. +Your RaspberryPi CPU will likely get quite hot during initial sync. +However this is OK as the RaspberryPi has its own protection against overheating and will ensure the CPU doesn't critically overheat. ### Main Menu @@ -346,35 +394,41 @@ Once the Blockchain is synced you will enter the SSH Main Menu: All options on the main menu will be explained below in the feature documentation. -*OK .. so from here on out, your RaspiBlitz is ready to play with.* +*OK .. +so from here on out, your RaspiBlitz is ready to play with.* If you need an idea of what the most basic next steps to experience Lightning would be: -* Fund on-chain Wallet +* Fund on-chain wallet * Open a channel * Make a payment -If you would prefer to do this from a web browser with a dashboard UI, instead of an SSH terminal, go to `SERVICES`, activate the `RTL Webinterface`, and after install you will find a new menu option for RTL in the SSH main menu - it will give you all the information so that you can now open the RTL Webinterface in your browser. +If you would prefer to do this from a web browser with a dashboard UI, instead of an SSH terminal, go to `SERVICES`, activate the `RTL Webinterface`, and after install you will find a new menu option for RTL in the SSH main menu - it will give you all the information so that you can now open the RTL web interface in your browser. Have fun riding the lightning :D -*BTW always love seeing photos of new RaspBlitzes added to the network on twitter @rootzoll - also there is a [RaspiBlitz Donation Page](https://raspiblitz.org/#donation), why not try to send some satoshis there with your new RaspiBlitz :D * +*We always love seeing photos of new RaspBlitzes added to the network, tag [@rootzoll](https://twitter.com/rootzoll) in your pictures on twitter. +There is also a [RaspiBlitz Donation Page](https://raspiblitz.org/#donation), why not try to send some satoshis there with your new RaspiBlitz :D * * [How can I get further help/support?](#support) ### Feature Documentation -These are the features available through the RaspiBlitz SSH menus. They have the goal to offer some basic/fallback functionality & configurations. More complex or user-friendly tasks are best to be done with wallets, apps and scripts you connect to your Lightning Node via [APIs](#interface--apis) - because you have a full Bitcoin- and Lightning-Node on the RaspiBlitz. +These are the features available through the RaspiBlitz SSH menus. +They have the goal to offer some basic/fallback functionality & configurations. +More complex or user-friendly tasks are best to be done with wallets, apps and scripts you connect to your Lightning Node via [APIs](#interface--apis) - because you have a full Bitcoin- and Lightning-Node on the RaspiBlitz. So let's take a look at the SSH main menu in detail: #### INFO: Raspiblitz Status Screen -This is the screen that gets displayed on the LCD/display. It's useful to call in a remote situation from SSH if you don't have your RaspiBlitz next to you, or if you want to copy+paste your nodeID or make a screenshot. +This is the screen that gets displayed on the LCD/display. +It's useful to call in a remote situation from SSH if you don't have your RaspiBlitz next to you, or if you want to copy+paste your nodeID or make a screenshot. ![SSH9dz](pictures/ssh9z-ready.png) -*It's not automatically updating. It's just for one-time info.* +*It's not automatically updating. +It's just for one-time info.* * [Why is my bitcoin IP on the display red?](FAQ.md#why-is-my-bitcoin-ip-on-the-display-red) * [Why is my node address on the display red?](FAQ.md#why-is-my-node-address-on-the-display-red) @@ -382,21 +436,30 @@ This is the screen that gets displayed on the LCD/display. It's useful to call i #### LIGHTNING (Basic Node Management) -Under `LND/c-lightning Wallet options` you find some basic steps to manage your Lightning node. Those are very simplified in the RaspiBlitz SSH menu for the reason of learning. For more advanced management of your Lightning node see additional apps under `SERVICES`. +Under `LND/c-lightning Wallet options` you will find some basic tools for managing your Lightning node. +These are very simplified in the RaspiBlitz SSH menu for learning purposes. +For more advanced management of your Lightning node see additional apps under `SERVICES`. ##### FUNDING: Fund your on-chain Wallet -Before you can open channels with other nodes you need to put some coins in your on-chain wallet (managed by your lightning sofware). Use this option to generate an address to send funds to. +Before you can open channels with other nodes you need to put some coins in your on-chain wallet (managed by your lightning software). +Use this option to generate an address to send funds to. -*Reminder: RaspiBlitz is still experimental software. With funding your lightning node you accept the risk of losing funds. So just play with small amounts - something in the area of 20 EUR/USD should be enough to make your first experiences. Also, it's a good privacy practice to [coinjoin your coins](https://bitcoin-only.com/privacy) before sending them to any Lightning Network wallet.* +*Reminder: RaspiBlitz is still experimental software. +With funding your lightning node you accept the risk of losing funds. +So just play with small amounts - something in the area of 20 EUR/USD should be enough to make your first experiences. +Also, it's a good privacy practice to [coinjoin your coins](https://bitcoin-only.com/privacy) before sending them to any Lightning Network wallet.* -You can fund it multiple times - starting with small amounts first to test. Your lightning node will always generate a different address, but all funds you send will get into the same LND on-chain wallet. +You can fund it multiple times - starting with small amounts first to test. +Your lightning node will always generate a different address, but all funds you send will get into the same LND on-chain wallet. ##### CONNECT: Connect to a Peer Before you can open a channel with another node on the network, you need to connect this node as a peer to your node. -Opening a channel with a peer is just optional. Having another node as peer helps your node to receive information about the lightning network through the gossip protocol. It will help your node to find better routes through the network. +Opening a channel with a peer is just optional. +Having another node as peer helps your node to receive information about the lightning network through the gossip protocol. +It will help your node to find better routes through the network. ##### CHANNEL: Open a Channel with Peer @@ -404,23 +467,29 @@ To open a payment channel with another node, you can use this option. Find interesting nodes to open channels with through online directories like [1ML.com](https://1ml.com/) or join the RaspiBlitz NodeManager telegram group to meet people to open channels with: https://t.me/raspiblitz -Bear in mind that this option will open a public channel that can be seen by everyone in the network. This is good if you want to route payments. If your intention is to use it privately only, you must go to the command line and open the channel with the -private option. +Bear in mind that this option will open a public channel that can be seen by everyone in the network and chosen by them as part of their payment route. +This is good if you want to route payments. +If you do not want to route payments for others, you can use a so-called "private" (i.e. unannounced) channel which others cannot use as part of their payment route. +To do this you must go to the command line and open the channel with the `-private` option. -*This is just a very basic shell script. For more usability, try the RTL Webinterface (under Services) or connect a (mobile) wallet with your RaspiBlitz.* +*This is just a very basic shell script. +For more usability, try the RTL Webinterface (under Services) or connect a (mobile) wallet with your RaspiBlitz.* ##### SEND: Pay an Invoice/PaymentRequest Pay an invoice through lightning. -*This is just a very basic shell script. For more usability try the RTL Webinterface (under Services) or connect a (mobile) wallet with your RaspiBlitz.* +*This is just a very basic shell script. +For more usability try the RTL Webinterface (under Services) or connect a (mobile) wallet with your RaspiBlitz.* -If you are looking for something to test payments with Lightning ... why not [donate some satoshis to RaspiBlitz development](https://raspiblitz.org/#donation)? Thanks :) +If you are looking for something to test payments with Lightning, why not [donate some satoshis to RaspiBlitz development](https://raspiblitz.org/#donation)? Thanks :) ##### RECEIVE: Create Invoice/PaymentRequest Create an invoice to send to someone for a service to be paid through lightning. -*This is just a very basic shell script. For more usability try the RTL Webinterface (under Services) or connect a (mobile) wallet with your RaspiBlitz.* +*This is just a very basic shell script. +For more usability try the RTL Webinterface (under Services) or connect a (mobile) wallet with your RaspiBlitz.* ##### NAME: Change name of your Node @@ -428,11 +497,12 @@ Here you can change the alias name of your node as it is shown as part of the Li ##### CLOSE ALL: Closing all open Channels -*This option is just available if you have channels open.* +*This option is only available if you have channels open.* -With this feature you can close down all open channels and get the funds locked up in those channels back to your on-chain wallet. +With this feature you can close down all open channels and get the funds locked up in those channels returned to your on-chain wallet. -You may choose to force-close some channels where the channel partner is no longer reachable. Keep in mind that when you force-close a channel, it can take a much longer time until your funds are available again through your on-chain wallet. +You may choose to force-close some channels where the channel partner is no longer reachable. +Keep in mind that when you force-close a channel it can take a much longer time until your funds are available again through your on-chain wallet. ##### CASHOUT: Remove Funds from on-chain Wallet @@ -444,35 +514,39 @@ Here you will find basic settings for your RaspiBlitz: ![MainMenu-Settings](pictures/settings.png) -Activate/Deactivate settings with the space bar and then select 'OK' to activate changes. You can find more details about those options (top to down): +Activate/Deactivate settings with the space bar and then select 'OK' to activate changes. +You can find more details about those options (top to down): ##### Touchscreen (experimental) -Your RaspiBlitz has an LCD that is touchscreen capable. You can switch on this new feature that is still in development. +Your RaspiBlitz has an LCD that is touchscreen capable. +You can switch on this new feature that is still in development. ![RTL](pictures/touchscreen.png) -It will give you 4 buttons on the right side. +It will enable 4 touch buttons on the left hand side of the screen. - Info - to be defined later -- Node - shows the nodeid/uri as QR code (used to open channels from mobile wallets) +- Node - shows the nodeID/uri as QR code (used to open channels from mobile wallets) - Invoice - creates an Invoice-QR code that can be used for payments - Off - Shutdown or Restart the RaspiBlitz ##### LCD Rotate -If you switch this on, you can rotate the LCD of your RaspiBlitz 180 degrees. This might make sense if you have a special case or wall mount. +If you switch this on you can rotate the LCD of your RaspiBlitz 180 degrees. +This might make sense if you have a special case or wall mount. ##### Run behind Tor -You can run your Bitcoin- & Lightning-Node, as well as additional Apps, as a Tor hidden service - replacing your IP with an .onion-address +You can run both your Bitcoin & Lightning nodes, as well as additional apps, behind a Tor hidden service. +This replaces your clearnet IP address with an `.onion` style hidden service address. ![tor1](pictures/tor1.png) Running your node as a hidden service has some benefits: -* You don't publish your IP running a node so it's much harder to resolve your real name and location. -* You tunnel through the NAT of your router and make Bitcoin and Lightning reachable to all other Tor nodes. +* You don't publish your IP address so it's much harder to resolve your real name and location. +* You tunnel through the NAT of your router and make your Bitcoin and Lightning nodes reachable (i.e. allow _incoming_ connections) from all other Tor nodes on the network(s). * By using a Tor address it's possible to move the node to a different IPv4 address and keep the existing (i.e. previously opened and funded) channels functional. But this can also come with the following side effects: @@ -480,23 +554,27 @@ But this can also come with the following side effects: * Some Mobile wallets don't support connecting to RaspiBlitz over Tor yet. * Lightning nodes that don't run Tor cannot reach you (like behind NAT). -*Using Tor hides your IP address but will possibly increase the [time](https://twitter.com/SeverinAlexB/status/1442138426740981761) it will take for your node to route a payment. Setting up over clearnet will give you a lower response time when routing but your IP address will be freely availible to the rest of the network like the node [tippin.me](https://1ml.com/node/03c2abfa93eacec04721c019644584424aab2ba4dff3ac9bdab4e9c97007491dda). If you need to be private and/or don't want to doxx your home network then Tor might be the option for you. However if privacy isn't something you need and/or want, or you are trying to set up a service that your node is the back end for then clearnet might be more advantageous choice.* +*Using Tor hides your IP address but will possibly increase the [time](https://twitter.com/SeverinAlexB/status/1442138426740981761) it will take for your node to route a payment. +Setting up over clearnet will give you a lower response time when routing payments but your IP address will be freely available to the rest of the network like the node [tippin.me](https://1ml.com/node/03c2abfa93eacec04721c019644584424aab2ba4dff3ac9bdab4e9c97007491dda). +If you need to be private and/or don't want to doxx your home network then Tor might be the option for you. +However if privacy isn't something you need and/or want, or you are trying to set up a service that your node is the back end for, then clearnet might be more advantageous choice.* To try it out, just switch on the service - you can deactivate it later on if it's not working for you. ##### Parallel Testnet/Signet -It is very convenient to learn and test to play around in a "sandbox" environment. RaspiBlitz allows this through activating "Testnet & Signet" that run in parallel to the "Mainnet". +It is very convenient to learn and test to play around in a "sandbox" environment. +RaspiBlitz allows this through activating "testnet & signet" that run in parallel to the "mainnet". Once activated you will see an additional option in the SSH Main Menu that will give you more options to operate the Testnet & Signet. -You can get Bitcoin Testnet coins you can use Faucets from different places on the internet, here are a few links: +To get some bitcoin testnet coins, you can use "faucets" from different places on the internet, here are a few links: * https://coinfaucet.eu/en/btc-testnet/ * https://testnet-faucet.mempool.co/ * https://kuttler.eu/en/bitcoin/btc/faucet/ * https://faucet.lightning.community/ -You can read more about TESTNET and Bitcoin Faucets here: https://kuttler.eu/code/bitcoin-testnet-blockchain-size-in-2020/ +You can read more about TESTNET and Bitcoin faucets here: https://kuttler.eu/code/bitcoin-testnet-blockchain-size-in-2020/ ##### ZeroTier @@ -504,23 +582,30 @@ With ZeroTier you can add your RaspiBlitz to a software defined network - see fo ##### LND LIGHTNING LABS NODE -This needs to switched on to see the sub-settings options for LND. If switched on it means the LND lightning node implementation is installed and running on your RaspiBlitz - it can run in parallel to c-lightning. If activated you will find an additional option in the SSH Main Menu that offers you more options to operate the LND node. Also under `SERVICES` some apps might just be available if LND is activated. +This needs to be switched on to see the sub-settings options for LND. +If switched on it means the LND lightning node implementation is installed and running on your RaspiBlitz - it can run in parallel to c-lightning. +If activated you will find an additional option in the SSH Main Menu that offers you more options for operating the LND node. +Also under `SERVICES` some apps might only be available if LND is activated. ##### LND Channel Autopilot -The channels autopilot feature of LND allows to automatically uses around half of your on-chain funds (if available) to open new channels with other lightning nodes. -Channels autopilot is very useful to get started transacting swiftly if you're a newbie as the channels are generated for you. -It is very likely that after a while, once you will have a hang of the concept of channels and how they work that you will not need channels autopilot anymore. +The channel autopilot feature of LND allows an "autopilot" to automatically use around half of your on-chain (i.e. bitcoin) funds, if available, to open new channels with other lightning nodes. +The autopilot can be very useful to get started transacting swiftly if you're a newbie, as channels are opened for you. +It is very likely that after a while, once you will have a hang of the concept of channels and how they work, that you will not need channels autopilot any more. -Beware that presently toggling the Channels Autopilot setting will trigger a reboot of your Raspiblitz. It is not a problem per se, just a bit of waste of time [Improvement request #1953](https://github.com/rootzoll/raspiblitz/issues/1953) +Beware that currently, toggling the Channels Autopilot setting will trigger a reboot of your RaspiBlitz. +It is not a problem per se, just a bit of waste of time [Improvement request #1953](https://github.com/rootzoll/raspiblitz/issues/1953) ##### LND Accept Keysend -Keysend is a feature of LND that allows your node to accept payments without having created an invoice first. This needs to be activated, for example, if you want to use your nodes for experimental messaging over the Lightning Network (see RaspiBlitz MOBILE apps like SendMany). +Keysend is a feature of LND that allows your node to accept payments without having created an invoice first. +This needs to be activated, for example, if you want to use your nodes for experimental messaging over the Lightning Network (see RaspiBlitz MOBILE apps like SendMany). ##### LND Circuitbreaker (Firewall for LND) -Not everybody is acting friendly in the Lightning network. Circuitbreaker is a background service you can activate that acts similar to a firewall to protect your now better. For details see: https://github.com/lightningequipment/circuitbreaker/blob/master/README.md +Not all peers in the Lightning network are necessarily friendly. +Circuitbreaker is a background service you can activate that acts similarly to a firewall to protect your node. +For details see: https://github.com/lightningequipment/circuitbreaker/blob/master/README.md ##### LND Auto-Unlock @@ -528,47 +613,60 @@ The RaspiBlitz will automatically unlock the LND wallet upon every start. This feature is based on https://github.com/Stadicus/guides/blob/master/raspibolt/raspibolt_6A_auto-unlock.md -It can be activated under "Services" -> "Auto-unlock LND". We recommend that it be turned on, when DynamicDNS is used. If there is a public IP change on your router, LND restarts automatically, and without Auto-Unlock it will stay inactive/unreachable until you manually unlock it. +It can be activated under "Services" -> "Auto-unlock LND". +We recommend that it be turned on when DynamicDNS is used. +If there is a public IP change on your router LND restarts automatically, and without Auto-Unlock it will stay inactive/unreachable until you manually unlock it which could be annoying. * [When using Auto-Unlock, how much security do I lose?](FAQ.md#when-using-auto-unlock-how-much-security-do-i-lose) ##### LND StaticChannelBackup on Nextcloud -See [below on this README](README.md#backup-for-on-chain---channel-funds) for your Backup options to secure your funds against loss. Storing the encrypted Static Channel Backup file to your Nextcloud account is an easy and secure way to do this. +See [below on this README](README.md#backup-for-on-chain---channel-funds) for your Backup options when it comes to securing your funds against accidental loss. +Storing the encrypted Static Channel Backup file to your Nextcloud account is an easy and secure way to do this. -Nextcloud is an open-source project to host your own files: https://en.wikipedia.org/wiki/Nextcloud - in its basics its an open DropBox replacement ... but can do much much more. You can run it yourself or use a hosted Nextcloud server. Find free Nextcloud providers here to sign up: https://nextcloud.com/signup/ +Nextcloud is an open-source project to host your own files: https://en.wikipedia.org/wiki/Nextcloud - in its basics its an open DropBox replacement ... but can do much much more. +You can run it yourself or use a hosted Nextcloud server. +Find free Nextcloud providers here to sign up: https://nextcloud.com/signup/ ##### StaticChannelBackup on USB Drive -You can connect a small extra USB drive to your RaspiBlitz (choose a small one up to 32GB - don't use second HDD or SSD here, that would drain too much power from the RaspiBlitz). On that USB drive your latest StaticChannelBackup will be stored - just in case your HDD gets an error. +You can connect a small extra USB drive to your RaspiBlitz (choose a small one up to 32GB, don't use second HDD or SSD here as that would drain too much power from the RaspiBlitz). +That USB drive will then be used to store your latest StaticChannelBackup, just in case your HDD encounters an error. ##### StaticChannelBackup per SCP/SSH to other server -An option for more advanced users that you only can set directly in the `raspiblitz.conf` is the automated backup of the Static Channel Backup to another server per SSH/SCP. For this you need to set the value: +An option for more advanced users -- that you only can set directly in the `raspiblitz.conf` -- is the automated backup of the StaticChannelBackup to another server by SSH/SCP. +For this you need to set the value: `scpBackupTarget='[USER]@[SERVER]:[DIRPATH-WITHOUT-ENDING-/]'` -and you can optionally set custom options for the scp command (for example to set a non-default port) with: +and you can optionally set custom options for the SCP command (for example to set a non-default port) with: `scpBackupOptions='[YOUR-CUSTOM-OPTIONS]'` -On target server add the root ssh public key of your RaspiBlitz to the authorized_keys for the user - how to do this see: https://www.linode.com/docs/security/authentication/use-public-key-authentication-with-ssh/ +On the target server add the root ssh public key of your RaspiBlitz to the `authorized_keys` file for the user - how to do this see: https://www.linode.com/docs/security/authentication/use-public-key-authentication-with-ssh/ ##### C-LIGHTNING NODE -This needs to switched on to see the sub-settings options for c-lightning. If switched on it means the c-lighting node implementation is installed and running on your RaspiBlitz - it can run in parallel to LND. If activated you will find an additional option in the SSH Main Menu that offers you more options to operate the c-lightning node. Also under `SERVICES` some apps might just be available if c-lightning is activated. +This needs to be switched on to see the sub-settings options for c-lightning. +If switched on it means the c-lighting node implementation is installed and running on your RaspiBlitz - it can run in parallel to LND. +If activated you will find an additional option in the SSH main menu that offers you more options to operate the c-lightning node. +Also under `SERVICES` some apps might only be available if c-lightning is activated. For more details on this lightning node implementation go to the [c-lightning FAQ page](FAQ.cl.md). ##### CL CLBOSS Automatic Node Manager -CLBOSS is an automated manager for C-Lightning routing payments nodes. CLBOSS is effectively a bunch of heuristics modules wired together to a regular clock to continuously monitor your node. +CLBOSS is an automated manager for C-Lightning routing payments nodes. +CLBOSS is effectively a bunch of heuristics modules wired together to a regular clock to continuously monitor your node. Find more info at the [CLBOSS GitHub](https://github.com/ZmnSCPxj/clboss). ##### CL Wallet Encryption -You can protect your c-lightning wallet by encrypting it with your passwordC. On every restart/reboot you will need to decrypt/unlock with that password before c-lightning can use the wallet. This adds some physical security for example in case your node get stolen. +You can protect your c-lightning wallet by encrypting it with your password C. +On every system restart you will need to decrypt/unlock with that password before c-lightning can use the wallet. +This adds some physical security for example in case your node get stolen. #### SERVICES: Activate/Deactivate Services @@ -576,15 +674,19 @@ The RaspiBlitz offers further Services, Apps and configuration (scroll down to s ![MainMenu-Services](pictures/services.png) -Activate/Deactivate service selection with the space bar and then select 'OK' to trigger Install/Uninstall. You can find more details about those options below (top to bottom): +Activate/Deactivate service selection with the space bar and then select 'OK' to trigger Install/Uninstall. +You can find more details about those options below (top to bottom): ##### Electrum Rust Server -Enables a user to run his own Electrum server on the RaspiBlitz. The server indexes the entire Bitcoin blockchain saved locally on your HDD/SSD, and the resulting index enables fast queries for any given user wallet, allowing the user to keep real-time track of his balances and his transaction history using the [Electrum wallet](https://electrum.org). +Enables a user to run their own Electrum server on the RaspiBlitz. +The server indexes the entire Bitcoin blockchain from the copy saved locally on your HDD/SSD, and the resulting index enables fast queries for any given user wallet. +This allows the user to keep real-time track of their balance and transaction history using any wallet which speaks the Electrum Protocol, for example the [Electrum wallet](https://electrum.org). -Since Electrum Rust Server runs on the user's own machine, there is no need for the wallet to communicate with external Electrum servers, thus preserving the privacy of addresses and balances. +Since Electrum Rust server runs on the user's own machine there is no need for the wallet to communicate with external Electrum servers, thus preserving the privacy of addresses and balances. -By contrast, if you use your Trezor Hardware Wallet with the trezor.io wallet, it will tell their third party server your public keys - connecting it with your IP. Now you can use your Trezor with the Electrum Wallet, just talking to your own Electrum Server, preserving your privacy. +By contrast, if you use your Trezor Hardware Wallet with the trezor.io web-wallet, it will tell their third party server your public keys - connecting them with your IP. +Now you can use your Trezor with the Electrum Wallet by talking to your _own_ Electrum Server, preserving your privacy. Learn how you can use Electrum with your own Server over Tor: @@ -596,7 +698,8 @@ After install, you will see a new `ELECTRS` option in the SSH main menu - it wil ##### BTCPayServer -[BTCPay Server](https://github.com/btcpayserver) is a self-hosted, open-source cryptocurrency payment processor. It's secure, private, censorship-resistant and free. +[BTCPay Server](https://github.com/btcpayserver) is a self-hosted, open-source cryptocurrency payment processor. +It's secure, private, censorship-resistant and free. ![BTCPAY](pictures/btcpay.png) @@ -606,7 +709,8 @@ After install, you will see a new `BTCPAY` option in the SSH main menu - it will ##### BTC-RPC-Explorer -BTC-RPC-Explorer is a blockchain explorer website you can run on your own RaspiBlitz. See an example running on: https://btc-explorer.com +BTC-RPC-Explorer is a blockchain explorer website you can run on your own RaspiBlitz. +See an example running on: https://btc-explorer.com ![EXPLORER](pictures/blockexplorer.png) @@ -616,9 +720,12 @@ After install, you will see a new `EXPLORE` option in the SSH main menu - it wil ##### Specter Desktop -Bitcoin Core has a very powerful command line interface and a wonderful daemon. Using pre-signed bitcoin transactions (PSBT) and [Hardware Wallet Interface](https://github.com/bitcoin-core/HWI) (HWI), it can also work with hardware wallets. At the moment it is very Linux-focused. The same applies to multi-signature setups. +Bitcoin Core has a very powerful command line interface and a wonderful daemon. +Using pre-signed bitcoin transactions (PSBT) and [Hardware Wallet Interface](https://github.com/bitcoin-core/HWI) (HWI), it can also work with hardware wallets. +At the moment it is very Linux-focused. +The same applies to multi-signature setups. -The goal of Specter Desktop is to make a convenient and user-friendly GUI around Bitcoin Core, focusing on multi-signature setups with airgapped hardware wallets like Trezor, Ledger, COLDCARD or the Specter-DIY. +The goal of the Specter Desktop wallet is to make a convenient and user-friendly GUI around Bitcoin Core, focusing on multi-signature setups with air-gapped hardware wallets like Trezor, Ledger, COLDCARD or the Specter-DIY. ![SPECTER](pictures/specter.jpg) @@ -636,11 +743,15 @@ After install, you will see a new `MEMPOOL` option in the SSH main menu - it wil ##### JoinMarket -JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. Its aim is to improve the confidentiality and privacy of bitcoin transactions. +JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. +Its aim is to improve the confidentiality and privacy of bitcoin transactions. Video Tutorial
--watch--> https://www.youtube.com/watch?v=uGHRjilMhwY -A CoinJoin transaction requires other people to take part. The right resources (coins) have to be in the right place, at the right time, in the right quantity. This isn't a software or tech problem, it's an economic problem. JoinMarket works by creating a new kind of market that would allocate these resources in the best way. +A CoinJoin transaction requires other people to take part. +The right resources (coins) have to be in the right place, at the right time, in the right quantity. +This isn't a software or tech problem, it's an economic problem. +JoinMarket works by creating a new kind of market that would allocate these resources in the best way. For more details see [here](https://github.com/JoinMarket-Org/joinmarket-clientserver). @@ -652,11 +763,13 @@ Extract the original Bitcoin Whitepaper as PDF directly from the blockchain of y ##### RTL Webinterface -The RTL Webinterface is available as an LND & c-lightning Control Dashboard you can run in your browser with a nice GUI - it offers much more control over your Lightning node than the RaspiBlitz SSH menus. It's recommended to give it a try. +The RTL Webinterface is available as an LND & c-lightning control dashboard you can run in your browser with a nice GUI. +It offers much more control over your Lightning node than the RaspiBlitz SSH menus. +It's recommended to give it a try. ![RTL](pictures/RTL-dashboard.png) -Get all the details on how to mannage your channels with RTL in this video: +Get all the details on how to manage your channels with RTL in this video: Video Tutorial
--watch--> https://www.youtube.com/watch?v=pESO_Pm0v10 @@ -676,7 +789,8 @@ After install, you will see a new `THUB` option in the SSH main menu - it will g ##### Lightning Terminal (LIT) with loop, pool & faraday -Lightning Terminal (LiT) is a browser-based interface for managing channel liquidity on LND. It bundles the former single tools called loop, pool & faraday with an easy to use browser interface. +Lightning Terminal (LiT) is a browser-based interface for managing channel liquidity on LND. +It bundles the former single tools called loop, pool & faraday with an easy to use browser interface. ![LIT](pictures/lit.png) @@ -720,13 +834,15 @@ https://github.com/curly60e/pyblock/blob/master/README.md ##### Channel Tools (chantools) -This tool provides helper functions that can be used to rescue funds locked in LND channels in case lnd itself cannot run properly anymore. Also some other usefull command line features. +This tool provides helper functions that can be used to rescue funds locked in LND channels in case LND itself cannot run properly any more. +Also some other useful command line features. https://github.com/guggero/chantools ##### Sphinx Relay Server -The Sphinx App allows chat over the Lightning Network with LND and ties into the idea of [Podcasting 2.0](https://u.today/father-of-podcasting-integrates-bitcoin-lightning-into-his-app). To use the mobile app with your own RaspiBlitz you need to install the [Sphinx Relay Server](https://github.com/stakwork/sphinx-relay/blob/master/README.md). +The Sphinx App allows chat over the Lightning Network with LND and ties into the idea of [Podcasting 2.0](https://u.today/father-of-podcasting-integrates-bitcoin-lightning-into-his-app). +To use the mobile app with your own RaspiBlitz you need to install the [Sphinx Relay Server](https://github.com/stakwork/sphinx-relay/blob/master/README.md). ![SPHINX](https://github.com/stakwork/sphinx-relay/raw/master/public/relay.jpg) @@ -734,7 +850,9 @@ After install, you will see a new `SPHINX` option in the SSH main menu - it will ##### C-Lightning RTL Webinterface -The same RTL as above but running with c-lightning node. Can run parrallel to the LND version. See deatils above. +The same RTL as above but running with c-lightning node. +Can run parallel to the LND version. +See details above. ##### C-Lightning Sparko Webwallet @@ -764,18 +882,21 @@ This feature should support connecting your RaspiBlitz to a mobile wallets or ot ![MOBILE](pictures/mobile.png) -At the moment, the following mobile wallets are supported - some are just available if LND or c-lightning is activated: +At the moment the following mobile wallets are supported - some are only available if LND or c-lightning is activated: * [Zeus (iOS/Android)](https://github.com/ZeusLN/zeus) (LND & c-lightning) * [Fully Noded (iOS over Tor)](https://apps.apple.com/us/app/fully-noded/id1436425586) * [SendMany (Android)](https://github.com/fusion44/sendmany/blob/master/README.md) (only LND) * [Sphinx Chat App (iOS/Android)](https://sphinx.chat/) (only LND) -Mobile wallets work as a remote control app for your RaspiBlitz. First you need to install the apps on your phone - a QR code with the links to the app stores are displayed. Then you need to `pair` them with your RaspiBlitz - also via a QR code displayed on the LCD. If you run your RaspiBlitz without an LCD, there is the fallback option to display that QR code on the terminal as ASCII code (which might involve lowering your terminal's font size). +Mobile wallets work as a remote control app for your RaspiBlitz. +First you need to install the apps on your phone - a QR code with the links to the app stores are displayed. +Then you need to `pair` them with your RaspiBlitz - also via a QR code displayed on the LCD. +If you run your RaspiBlitz without an LCD, there is the fallback option to display that QR code on the terminal as ASCII code (which might involve lowering your terminal's font size). ##### Electrum Rust Server -Information how to connect to Electrum Rust Server (if installed). +Information how to connect to Electrum Rust Server (if installed). ##### BTCPAY: Get the connection string for the BTCPay Server @@ -802,27 +923,33 @@ Here are the following export options to get the Macaroon and TLS files to be us ###### SSH Download -SCP is a SSH like command to transfer files. If we're able to SSH into the RaspiBlitz, also the SCP to transfer the files should work. If you choose this option, RaspiBlitz will print prepared SCP commands you can copy+paste to run in a second terminal. +SCP is a SSH-like command used to transfer files. +If we're able to SSH into the RaspiBlitz then using SCP to transfer files should also work. +If you choose this option, RaspiBlitz will print prepared SCP commands you can copy+paste to run in a second terminal. This method is recommended to export to: * [Zap Desktop Wallet](https://github.com/LN-Zap/zap-desktop) ###### Browser download -Opens an ad-hoc webserver so that you can download the files in your local network through the browser. +Opens an ad-hoc web server so that you can download the files in your local network through the browser. -*This is the least secure way to transfer those files - everybody in your local network has access to those file during download. Remember with the Admin-Macaroon somebody could take over your node and spend all your funds. Just use as last fallback.* +*This is the least secure way to transfer those files - everybody in your local network has access to those file during download. +Remember with the Admin-Macaroon somebody could take over your node and spend all your funds. +Just use as last fallback.* ####### Hex-String -The Macaroons and TLS.cert files can be copy+pasted as Hex-Strings from RaspiBlitz to any other app that supports that format. If you choose this option, RaspiBlitz will print all the files for you as Hex-String to do so. +The Macaroons and TLS.cert files can be copy+pasted as Hex-Strings from RaspiBlitz to any other app that supports that format. +If you choose this option, RaspiBlitz will print all the files for you as Hex-String to do so. This method is recommended to export to: * [Joule Browser Wallet](https://lightningjoule.com) #### SUBSCRIBE: Subscription Services -The RaspiBlitz offers now also Subscriptions .. those are free or paid third-party services. +The RaspiBlitz offers now also Subscriptions. +These might be free or paid third-party services. ![MainMenu-Services](pictures/subscriptions.png) @@ -832,29 +959,40 @@ At the moment, the following subscription services are available: ##### IP2TOR (paid) -IP2TOR is a tunnel service where you can run your RaspiBlitz anonymously behind TOR but you rent a port on a clearnet IP through which you can make services of your RaspiBlitz easy reachable for everybody on the internet. You don't need to care about your local router or firewall settings. You can pay this service also directly through Lightning from your RaspiBlitz as subscription. +IP2TOR is a tunnel service where you can run your RaspiBlitz anonymously behind TOR but you rent a port on a clearnet IP through which you can make services of your RaspiBlitz easy reachable for everybody on the internet. +You don't need to care about your local router or firewall settings. +You can pay for this service directly through Lightning from your RaspiBlitz as subscription. -At first you select what service of your RaspiBlitz you like to tunnel thru a IP2TOR bridge. +At first you select what services of your RaspiBlitz you like to tunnel through a IP2TOR bridge. -You will get a list of available IP2TOR bridge offerings. Select `OK` on an IP2TOR bridge offering and you will see more details on it, such as how many satoshis the subscription will cost you - your node should be funded and have channels open at this point. +You will get a list of available IP2TOR bridge offerings. +Select `OK` on an IP2TOR bridge offering and you will see more details on it, such as how many satoshis the subscription will cost you. +Your node should be funded and have channels open already at this point. -Then you get a list of available IP2TOR bridge offerings. By selecting `OK` on a IP2TOR bridge offering you can get more details on it and you will also see how many satoshis the subscription will cost you - your node should be funded and you should have channels open at this point. +Then you get a list of available IP2TOR bridge offerings. +By selecting `OK` on a IP2TOR bridge offering you can get more details on it and you will also see how many satoshis the subscription will cost you - your node should be funded and you should have channels open at this point. -If you choose `AGREE` on the details of a IP2TOR bridge offering the RaspiBlitz tries for you to setup the IP2TOR bridge. If everything worked you will find now the subscription under `MAINMENU` > `SUBSCRIBE` > `LIST My Subscriptions` where you can cancel it again. +If you choose `AGREE` on the details of a IP2TOR bridge offering the RaspiBlitz tries for you to setup the IP2TOR bridge. +If everything worked you will find now the subscription under `MAINMENU` > `SUBSCRIBE` > `LIST My Subscriptions` where you can cancel it again. To try out the IP2TOR tunnel choose in `MAINMENU` the extra menu point of the Service you choose the bridge for and it should give you now an updated URL or try calling the API on the IP and Port that is displayed under the details of the subscription in the `LIST My Subscriptions` section. ##### HTTPS with LetsEncrypt (free) -If you want a Webservice like BTCPay Server or LNbits available to the outside internet (like with IP2TOR) people expect you to offer HTTPS address so that the communication between the client and your RaspiBlitz is encrypted. You could use the self-signed HTTPS certificate that RaspiBlitzis offering you, but this will give users Security Warnings in their browser and is not very user friendly. That's where you can use a LetsEncrypt Subscription to get a free valid HTTPS certificate that is excepted without warning from almost all common browsers. +If you want a web service, like BTCPay Server or LNbits, to be available to the outside internet (like with IP2TOR) people expect you to offer an HTTPS address so that the communication between the client and your RaspiBlitz is encrypted. +You could use the self-signed HTTPS certificate that RaspiBlitz is offering you, but this will give users Security Warnings in their browser and is not very user friendly. +That's where you can use a LetsEncrypt Subscription to get a free valid HTTPS certificate that is excepted without warning from almost all common browsers Because you also need a domain name for that you will need to open a free account, the following are presently supported, would be good to add more with the help of the community: [DuckDNS.org](https://www.duckdns.org) [DYNU.com](https://www.dynu.com) (AT THE MOMENT NOT AVAILABLE) -When you create a new LetsEncrypt subscription, you will be asked for your subdomain on DuckDNS and the Auth-Token of your DuckDNS account. Then RaspiBlitz tries to setup everything for you. If everything worked, you will find the subscription under `MAINMENU` > `SUBSCRIBE` > `LIST My Subscriptions`, where you can cancel it at any time if you wish. +When you create a new LetsEncrypt subscription, you will be asked for your subdomain on DuckDNS and the auth-token of your DuckDNS account. +Then RaspiBlitz tries to setup everything for you. +If everything worked, you will find the subscription under `MAINMENU` > `SUBSCRIBE` > `LIST My Subscriptions`, where you can cancel it at any time if you wish. -To try out the IP2TOR tunnel, go into `MAINMENU` and the extra menu point of the Service you want to use the bridge for. It should give you an updated URL to call your service. +To try out the IP2TOR tunnel, go into `MAINMENU` and the extra menu point of the Service you want to use the bridge for. +It should give you an updated URL to call your service. HTTPS can be a hairy topic, you can try using a SSL Checker to help you quickly diagnose problems with your SSL certificate installation: [www.sslshopper.com/ssl-checker.html](https://www.sslshopper.com/ssl-checker.html) @@ -878,7 +1016,8 @@ Use this if you want to report a software problem with your RaspiBlitz, so that ##### BACKUP-LND: Backup your LND data (Rescue-File) -This stops your RaspiBlitz and creates an LND-Rescue ZIP file that you can download via SCP to your laptop. This can be used to move your LND id, wallet & channels to another RaspiBlitz. +This stops your RaspiBlitz and creates an LND-Rescue ZIP file that you can download via SCP to your laptop. +This can be used to move your LND id, wallet & channels to another RaspiBlitz. *NOTICE: If you start your RaspiBlitz after this backup again the backup is outdated and using it can risk losing your channel funds.* @@ -897,19 +1036,28 @@ Multiple options to repair/backup your c-lightning node: ##### MIGRATION: Migrate Blitz Data to new Hardware -This stops your RaspiBlitz and creates a Migration ZIP file you can download/export per SCP to your laptop. This contains all important data of your RaspiBlitz including LND, your Blitz configuration and also data from your installed apps. Can be used to migrate your RaspiBlitz to a new hardware - for example if you want to replace the HDD with a SSD. How to import a Migration File [see here](README.md#import-a-migration-file). +This stops your RaspiBlitz and creates a Migration ZIP file you can download/export per SCP to your laptop. +This contains all the important data from your RaspiBlitz including LND, your Blitz configuration and also data from your installed apps. +Can be used to migrate your RaspiBlitz to a new hardware - for example if you want to replace the HDD with a SSD. +For details on how to import a Migration File [see here](README.md#import-a-migration-file). *NOTICE: If you start your RaspiBlitz after exporting the migration file again it is outdated and using it can risk losing your channel funds.* ##### COPY-SOURCE: Offer your Blockchain to another RaspiBlitz for Setup -To expedite the setup process, you can connect another RaspiBlitz and copy over your blockchain data to it. Your RaspiBlitz will be `offline` during that process and it can take between 4 to 6 hours. +To expedite the setup process, you can connect another RaspiBlitz and copy over your blockchain data to it. +Your RaspiBlitz will be `offline` during that process and it can take between 4 to 6 hours. -Make sure both RaspiBlitzes are connected to the same local network. During setup with the new RaspiBlitz, choose the `COPY` option to get the blockchain data and then select the source computer `RASPIBLITZ`. Now you can activate the `COPY-SOURCE` option, enter the given IP of the new RaspiBlitz and its Password A (not yours) .. then the process should start. +Make sure both RaspiBlitzes are connected to the same local network. +During setup with the new RaspiBlitz, choose the `COPY` option to get the blockchain data and then select the source computer `RASPIBLITZ`. +Now you can choose the `COPY-SOURCE` option, enter the IP address of the _new_ RaspiBlitz and its Password A (not yours), after which the process should start automatically. ##### RESET-CHAIN: Delete Blockchain and Re-Download -Use this option if your blockchain data got corrupted. It will keep your LND data. You can even keep your channels open. Just keep in mind that your Lightning node will appear offline to the network until you have re-downloaded the blockchain. +Use this option if your blockchain data got corrupted. +It will keep your LND data. +You can even keep your channels open. +Just keep in mind that your Lightning node will appear offline to the network until you have re-downloaded the blockchain. ##### RESET-HDD: Delete HDD data but keep blockchain @@ -941,25 +1089,31 @@ The options are explained in detail: ![UpdateMenu](pictures/update.png) -*Please note that the RaspiBlitz does not support Auto-Update, to ensure that there is no remote control of your node from a central server.* +*Please note that the RaspiBlitz does not support any form of automatic (over the air) updates. +This is to ensure that there can be no remote control of your node from a central server.* ##### RELEASE: Update RaspiBlitz to a new Version -This is a common way to update your RaspiBlitz. Choose this option to prepare your RaspiBlitz for a new SD card image containing the new version release. +This is a common way to update your RaspiBlitz. +Choose this option to prepare your RaspiBlitz for a new SD card image containing the new version release. ##### PATCH: Patch RaspiBlitz code -With Patching you have now an easy way to sync your RaspiBlitz code/scripts with the official RaspiBlitz GitHub Repo or even your own forked GitHub Repo. This is an option for people that report bugs and we like to offer them a quick script update (patch) between RaspiBlitz releases or for people who want to develop on the RaspiBlitz and sync code between their IDE, forked GitHub and their RaspiBlitz. +With Patching you have now an easy way to sync your RaspiBlitz code/scripts with the official RaspiBlitz GitHub Repo or even your own forked GitHub Repo. +This is an option for people that report bugs and we like to offer them a quick script update (patch) between RaspiBlitz releases or for people who want to develop on the RaspiBlitz and sync code between their IDE, forked GitHub and their RaspiBlitz. ##### LND: Interim LND Update -Sometimes there is a new LND release that has some breaking changes that once you updated the LND database cannot be reversed (like the update from 0.9.2 to 0.10.0). Then RaspiBlitz offers you an optional update ... this is where you then can update LND. +Sometimes there is a new LND release that has some breaking changes that once you updated the LND database cannot be reversed (like the update from 0.9.2 to 0.10.0). +In these cases RaspiBlitz will offer you an _optional_ update. +This is where you then can update LND. -If you choose this you get the option to do this `VERIFIED` that means it offers you the optional LND update we tested the RaspiBlitz with or `RECKLESS` which will just grab the latest LND release from the GitHub releases page (also Release Candidates) and install it with no further guarantees and verification checks - this is for people that run nodes to test new releases and how they work with existing RaspiBlitz apps. +If you choose this you get the option to do this `VERIFIED` that means it offers you the optional LND update we tested the RaspiBlitz with or `RECKLESS` which will just grab the latest LND release from the GitHub releases page (also Release Candidates) and install it with no further guarantees and verification checks. +The `RECKLESS` option is aimed at people that run nodes to test new releases and how they work with existing RaspiBlitz apps. ##### BITCOIN: Interim Bitcoin Update -Like with LND you have the possibility to update the bitcoin core version here. +Like with LND you have the ability to update the Bitcoin core version here. #### REBOOT: Reboot RaspiBlitz @@ -971,59 +1125,71 @@ A safe way to shutdown the RaspiBlitz. #### EXIT: Console Terminal -The `EXIT` option next to `OK` closes the SSH main menu and exits to the terminal - where the user can make use of the CLI clients `bitcoin-cli` & `lncli` directly. +The `EXIT` option next to `OK` closes the SSH main menu and exits to the terminal where the user can make use of the CLI clients, `bitcoin-cli` & `lncli`, directly. -With the command `raspiblitz`, it's possible to return to the main menu. +In the terminal running the command `raspiblitz` will return you to the SSH main menu. ## Import a Migration File As mentioned above you can export a Migration File from your RaspiBlitz with `MAINMENU > REPAIR > MIGRATION` and store it on your laptop. -A Migration file contains all the important data from your RaspiBlitz, like your LND data, Bitcoin Wallet, raspiblitz.config, Tor/SSH keys .. and also installed apps. You can use this to migrate your RaspiBlitz to new hardware. +A Migration file contains all the important data from your RaspiBlitz, like your LND data, Bitcoin Wallet, raspiblitz.config, Tor/SSH keys, and also installed apps. +You can use this to migrate your RaspiBlitz to new hardware. -If you want to import it again to a new RaspiBlitz (for example with an updated HDD/SSD), you can choose the `FROMBACKUP` option on the first setup dialog of a fresh sd card image. +If you want to import it again to a new RaspiBlitz (for example with an updated HDD/SSD), you can choose the `FROMBACKUP` option on the first setup dialogue of a fresh SD card image. ![SSH0](pictures/ssh0-welcome2.png) -If you start MIGRATION you might get asked to use a existing blockchain on the harddrive/ssd and deleting the rest or even formatting the complete drive. Once thats done you get instructions how to upload the migration file (use the password `raspiblitz` when asked on executing the upload command): +If you start MIGRATION you be get asked whether you would like to use a existing blockchain on the hard drive/SSD and delete the rest, or whether you'd prefer to format the entire drive. +Once that's done you are shown instructions on how to upload the migration file (use the password `raspiblitz` when asked on executing the upload command): ![MIGRATION1](pictures/migration1.png) -After this you will be asked to set a new PasswordA and your RaspiBlitz will go into recovery/provision process Then RaspiBlitz might give you the option again to self-sync or copy the blockchain from another computer/blitz and after a final reboot. +After this you will be asked to set a new password A, and your RaspiBlitz will go into recovery/provision process. +Then RaspiBlitz might give you the option again to self-sync or copy the blockchain from another computer/blitz, and afterwards a final reboot. Then the blockchain needs to sync up and you should be back to normal. ## Make a RaspiBlitz out of your Umbrel or MyNode -Another kind of migration is when you already run a full node with the Umbrel or myNode software and you like to change it to RaspiBlitz without closing channels. You basically have all the hardware needed and just need to change software. You don't need the [LCD from the shopping list](#amazon-shopping-list-buy-parts--build-it-yourself) - RaspiBlitz can also run without an LCD. +Another kind of migration is when you already run a full node with the Umbrel or myNode software and you like to change it to RaspiBlitz without closing channels. +You basically have all the hardware needed and just need to change software. +You don't need the [LCD from the shopping list](#amazon-shopping-list-buy-parts--build-it-yourself) - RaspiBlitz can also run without an LCD. -*NOTE: This migration is still experimental. You will still use the terminal to setup & manage your RaspiBlitz. If that is too technical for you please wait for the RaspiBlitz v1.8, which will introduce a WebUI for your browser that make the migration to RaspiBlitz familiar like with your old node user experiences.* +*NOTE: This migration is still experimental. +You will still use the terminal to setup & manage your RaspiBlitz. +If that is too technical for you please wait for the RaspiBlitz v1.8, which will introduce a WebUI for your browser that will make the migration to RaspiBlitz more familiar to your old node user experience.* Before you start migration: * if you have on-chain funds on your old node - make sure to have the backup seed words * if you have lightning channels open on your old node - make sure to have downloaded the latest Static Channel Backup file to your laptop -Also be aware that at the moment RaspiBlitz can only transfer your blockchain and LND wallet data (including channels) over to RaspiBlitz. Any data/pairing of additional apps cannot be transfered and may get lost. +Also be aware that at the moment RaspiBlitz can only transfer your blockchain and LND wallet data (including channels) over to RaspiBlitz. +Any data/pairing of additional apps cannot be transferred and may get lost. Instructions for Migration: * shutdown your old node -* remove the sd card +* remove the SD card * [download the latest Raspiblitz sd card image & flash it to your sd card](#downloading-the-software) -* if you like to use a HDMI monitor for status & progress, create a empty file called `hdmi` (without any ending) on the sd card while connected to your laptop -* [insert sd card, boot up & login per SSH](#boot-your-raspiblitz) +* if you want to use a HDMI monitor for status & progress, create a empty file called `hdmi` (without any ending) on the SD card while connected to your laptop +* [insert sd card, boot up & login by SSH](#boot-your-raspiblitz) -Now RaspiBlitz should show you that old data from your node was detected and offer you todo the migration. +Now RaspiBlitz should show you that old data from your node was detected and offer to do the migration for you. -* If you continue it will prepare the data & reboot. +* If you choose to continue it will prepare the data & reboot. * The RaspiBlitz recover/update modus is starting - that will take a while and finally reboot. -* Login per SSH as before and reset the passwords (`FINAL RECOVERY LOGIN` on LCD). Then a final reboot will happen. -* Login per SSH with your new password A & unlock LND wallet with password C. Now blockchain needs to catch up and then your RaspiBlitz should be ready and show you (under INFO) your on-chain & channel balance. +* Login by SSH as before and reset the passwords (`FINAL RECOVERY LOGIN` on LCD). +Then a final reboot will happen. +* Login by SSH with your new password A & unlock LND wallet with password C. +Now blockchain needs to catch up and then your RaspiBlitz should be ready and show you (under INFO) your on-chain & channel balance. -If you don't have an LCD or HDMI monitor connected it might be a bit difficult to see what state your RaspiBlitz is in. Just (re-)try to login per SSH again after the reboots (might always take some time until it reacts). +If you don't have an LCD or HDMI monitor connected it might be a bit difficult to see what state your RaspiBlitz is in. +Just (re-)try to login by SSH again after the reboots. +It can take some time after a reboot before the operating system and SSH service is started, so just keep trying at intervals until successful. ## Interface / APIs -To develop your own scripts/apps and connect other services/apps to your RaspiBlitz, you have multiple interfaces/APIs available: +To develop your own scripts/apps and connect other services/apps to your RaspiBlitz you have multiple interfaces/APIs available: ### Bitcoin @@ -1038,21 +1204,26 @@ To develop your own scripts/apps and connect other services/apps to your RaspiBl * `gRPC` running on port 10009 (public) [DOC](https://api.lightning.community/) * `REST` running on port 8080 (public) [DOC](https://api.lightning.community/rest/index.html) -If you activate Tor, then your LND gRPC & REST APIs will also be reachable publicly as a Hidden Service. +If you activate Tor then your LND gRPC & REST APIs will also be reachable publicly as a Hidden Service. ### Backup for On-Chain- & Channel-Funds -Since LND v0.6 (and RaspiBlitz v1.2), a feature called Static-Channel-Backups is available. Within RaspiBlitz this is used when a `channel.backup` file is mentioned. +Since LND v0.6 (and RaspiBlitz v1.2), a feature called Static-Channel-Backups is available. +Within RaspiBlitz this is used when a `channel.backup` file is mentioned. -At this point in time, it is the best way to backup and protect your channel funds on RaspiBlitz - so it's recommended to make use of it. +At this point in time it is the best way to backup and protect your channel funds on RaspiBlitz, so it's recommended to make use of it. -To recover your funds this way, you will need two things: +To recover your funds this way you will need two things: - the 24-word seed - the latest `channel.backup` file -You should have written down the word seed during wallet setup; keep it at a safe (offline) location. The `channel.backup` is stored on the HDD and updated by LND every time a new channel is opened or closed. The latest version of this file is needed to recover all your funds. In case your HDD gets damaged, RaspiBlitz always keeps a copy of the latest version of the `channel.backup` file on the SD card within the sub-directories of: `/home/admin/.lnd/data/chain/`. +You should have written down the word seed during wallet setup; keep it at a safe (offline) location. +The `channel.backup` is stored on the HDD and updated by LND every time a new channel is opened or closed. +The latest version of this file is needed to recover all your funds. +In case your HDD gets damaged RaspiBlitz always keeps a copy of the latest version of the `channel.backup` file on the SD card within the sub-directories of: `/home/admin/.lnd/data/chain/`. -If you want to get one step further in securing your funds against total fall-out of the RaspiBlitz (gets completely damaged, stolen or lost) then you can additionally set up an off-location or cloud backup of the `channel.backup` file. The file itself is encrypted by your word seed - so it's OK to store the file to untrusted third parties for backup (if you want). +If you want to go one step further in securing your funds against total loss of the RaspiBlitz (gets completely damaged, stolen or lost), then you can additionally set up an off-location or cloud backup of the `channel.backup` file. +The file itself is encrypted by your word seed so it's acceptable to store the file with untrusted third parties for backup purposes (if you want) This video explains in detail how you can set further back Static Channel information: @@ -1062,7 +1233,9 @@ The following options are also explained here shortly: #### A) DropBox Backup Target -Activate the StaticChannelBackup to DropBox in the `SETTINGS` menu of your RaspiBlitz. It will ask you for the Dropbox-Authtoken. This is how you can get this token: +Toggle the StaticChannelBackup option to DropBox in the `SETTINGS` menu of your RaspiBlitz. +It will ask you for the Dropbox-Authtoken. +This is how you can get this token: Go to your web browser, do the following: @@ -1086,27 +1259,32 @@ Go to your web browser, do the following: Now go back to the 'Settings' tab and under 'OAuth2', choose 'no expiration' under 'Access token expiration' then click the 'Generate' button. You will now see a long string of letters and numbers appear. This is your **Dropbox-Authtoken**. Make sure to copy the complete token string .. there might be more if you scroll to the right in the token field. -To test it, try opening or closing a channel, and then check if you can find a copy of `channel.backup` in your Dropbox. You can check the background-script logs to see details on errors: `sudo journalctl -f -u background` +To test it, try opening or closing a channel and then check if you can find a copy of `channel.backup` in your Dropbox. +You can check the background-script logs to see details on errors: `sudo journalctl -f -u background` #### B) SCP Backup Target -*You can also backup the SCB to your own server, but this needs manual setup:* +*You can also backup the StaticChannelBackup file to your own server, but this needs manual setup:* -In the `/mnt/hdd/raspiblitz.conf` the parameter `scpBackupTarget='[USER]@[SERVER]:[DIRPATH-WITHOUT-ENDING-/]'` can be set to activate this feature. On that remote server the public key of the RaspiBlitz root user needs to be part of the authorized keys - so that no password is needed for the background script to make the backup. +In the `/mnt/hdd/raspiblitz.conf` the parameter `scpBackupTarget='[USER]@[SERVER]:[DIRPATH-WITHOUT-ENDING-/]'` can be set to activate this feature. +On the remote server, the public key of the RaspiBlitz root user needs to be added to the `authorized_keys` file so that no password is needed for the background script to make the backup. The script `/home/admin/config.scripts/internet.sshpubkey.sh` helps on initialization (init); it will show and transfer ssh-pubkey to a remote server. -To test it, try opening or closing a channel, and then check if you can find a copy of `channel.backup` on your remote server. You can check the background-script logs to see details on errors: `sudo journalctl -f -u background` +To test it, try opening or closing a channel and then check if you can find a copy of `channel.backup` on your remote server. +You can check the background-script logs to see details on errors: `sudo journalctl -f -u background` #### C) Local Backup Target (USB Thumbdrive) -*You can also backup the SCB to another local drive, e.g. a USB stick:* +*You can also backup the StaticChannelBackup to another local drive, e.g. a USB stick:* -You can use a small USB thumb drive (everything over 120MB is fine). Please don't use a second HDD/SSD for this because that might drain too much power and could hurt the security of your data more than it helps. +You can use a small USB thumb drive (everything over 120MB is fine). +Please don't use a second HDD/SSD for this because that might drain too much power and could hurt the security of your data more than it helps. To activate this feature, go to `MAINMENU` > `SETTINGS` > `StaticChannelBackup on USB Drive` and follow the instructions. -To test it, try opening or closing a channel, and then check if you can find a copy of `channel.backup` in the specified location. You can check the background-script logs to see details on errors: `sudo journalctl -f -u background` +To test it, try opening or closing a channel and then check if you can find a copy of `channel.backup` in the specified location. +You can check the background-script logs to see details on errors: `sudo journalctl -f -u background` ## Updating RaspiBlitz to new Version @@ -1122,32 +1300,50 @@ If you have a RaspiBlitz v1.0 or v1.1 or higher do the following: * Remove power * Remove SD card -Now download the new RaspiBlitz SD card image and write it to your SD card. Yes, you simply overwrite the old one, it's OK! The RaspiBlitz stores all your personal data on the HDD. See details about latest SD card image [here](#installing-the-software). +Now download the new RaspiBlitz SD card image and write it to your SD card. +Yes, you simply overwrite the old one -- it's OK! The RaspiBlitz stores all your personal data on the HDD. +See details about latest SD card image [here](#installing-the-software). -*If you have done manual changes to the system (installed packages, added scripts, etc), you might need to do some preparations before overwriting your SD card - see [FAQ](FAQ.md#why-do-i-need-to-re-burn-my-sd-card-for-an-update).* +*If you have done manual changes to the system (installed packages, added scripts, etc.), you might need to take some additional steps before overwriting your SD card - see [FAQ](FAQ.md#why-do-i-need-to-re-burn-my-sd-card-for-an-update).* -If done successfully, simply put the SD card into the RaspiBlitz and power on again. Then follow the instructions on the display ... and don't worry, you don't need to re-download the blockchain again. It is worth noting here that your SSH password will be reset to `raspiblitz`. You will be prompted to change this once the update is finished. +If done successfully simply put the SD card into the RaspiBlitz and power on again. +Then follow the instructions on the display ... and don't worry, you don't need to re-download the blockchain again. +It is worth noting here that your SSH password will be reset to `raspiblitz`. +You will be prompted to change this once the update is finished. * [Why do I need to re-burn my SD card for an update?](FAQ.md#why-do-i-need-to-re-burn-my-sd-card-for-an-update) ## Build the SD Card Image -A ready-to-use SD card image of RaspiBlitz is provided by us for download, to get everybody started quickly (see above). But if you want to build that image yourself - here is a quick guide: +A ready-to-use SD card image of RaspiBlitz is provided by us for download, to get everybody started quickly (see above). +But if you want to build that image yourself - here is a quick guide: * Get a latest RaspiOS 64-bit: [DOWNLOAD](https://downloads.raspberrypi.org/raspios_arm64/images). * Write the image to an SD card: [TUTORIAL](https://www.raspberrypi.org/documentation/installation/installing-images/README.md). * Add a file called `ssh` to the root of the SD card when mounted on your laptop to enable SSH login. * Start the card on a Raspi and login via SSH with `ssh pi@[IP-OF-YOUR-RASPI]`. Password is `raspberry`. -Now you are ready to start the SD card build script (check the code to see if the installation and config are OK for you). Copy the following command into your terminal and execute: +Now you are ready to start the SD card build script (check the code to see if the installation and config are OK for you). +Copy the following command into your terminal and execute: `wget https://raw.githubusercontent.com/rootzoll/raspiblitz/v1.7/build_sdcard.sh && sudo bash build_sdcard.sh` -As you can see from the URL, you can find the build script in this Git repo under `build_sdcard.sh`. You can check what gets installed and configured in detail. Feel free to post improvements as pull requests. +As you can see from the URL, you can find the build script in this Git repo under `build_sdcard.sh`. +You can check what gets installed and configured in detail. +Feel free to post improvements as pull requests. -The whole build process takes a while. At the end the LCD drivers get installed and a reboot is needed. A user `admin` is created during the process. Remember the default password is now `raspiblitz`. You can login per SSH again - this time use admin: `ssh admin@[IP-OF-YOUR-RASPI]`. The install dialog of the RaspiBlitz schould automatically start. If you do not want to continue with the installation at this moment and use this sd card as a template for setting up multiple RaspiBlitzes, click `Cancel` and run `release`. Once you see the LCD going white and the activity LED of the pi starts going dark, you can unplug power and remove the SD card. You have now built your own RaspiBlitz SD card image. +The whole build process takes a while. +At the end the LCD drivers get installed and a reboot is needed. +A user `admin` is created during the process. +Remember the default password is now `raspiblitz`. +You can login by SSH again - this time use admin: `ssh admin@[IP-OF-YOUR-RASPI]`. +The install dialogue of the RaspiBlitz should automatically start. +If you do not want to continue with the installation at this moment, and use this SD card as a template for setting up multiple RaspiBlitzes, click `Cancel` and run `release`. +Once you see the LCD going white and the activity LED of the pi starts going dark you can unplug power and remove the SD card. +You have now built your own RaspiBlitz SD card image. -*Note: If you plan to use your self-build sd card as a MASTER copy and distribute it: Use a smaller 8GB card for that. This way it's ensured that it will fit on every 16 GB card recommended for RaspiBlitz later on.* +*Note: If you plan to use your self-build SD card as a MASTER copy and distribute it: Use a smaller 8GB card for that. +This way it's ensured that it will fit on every 16 GB card recommended for RaspiBlitz later on.* * [Can I run RaspiBlitz on other computers than RaspberryPi?](FAQ.md#can-i-run-raspiblitz-on-other-computers-than-raspberrypi) * [How can I build an SD card from another branch?](FAQ.md#how-can-i-build-an-sd-card-from-another-branch) @@ -1166,7 +1362,9 @@ Do you still have more questions? Check the [RaspiBlitz-FAQ-Archive](FAQ.md). ## Community Development -Everybody is welcome to join, improve, and extend the RaspiBlitz - it's a work in progress. [Check the issues](https://github.com/rootzoll/raspiblitz/issues) if you wanna help out or add new ideas. You find the scripts used for RaspiBlitz interactions on the device at `/home/admin` or in this Git repo's subfolder `home.admin`. +Everybody is welcome to join, improve, and extend the RaspiBlitz - it's a work in progress. +[Check the issues](https://github.com/rootzoll/raspiblitz/issues) if you wanna help out or add new ideas. +You find the scripts used for RaspiBlitz interactions on the device at `/home/admin` or in this Git repo's subfolder `home.admin`. To start your Deep Dive into the RaspiBlitz project, the following YouTube video (July 2020) is recommended: [https://www.youtube.com/watch?v=QXUGg45CWLo](https://www.youtube.com/watch?v=QXUGg45CWLo) @@ -1178,4 +1376,4 @@ Also get inspired for a deep-dive with the original "[RaspiBolt](https://stadicu Join me on twitter [@rootzoll](https://twitter.com/rootzoll), visit us at an upcoming [#lightninghackday](https://twitter.com/hashtag/LightningHackday?src=hash) or check by one of our bitcoin meetups in Berlin ... every 1st Thursday evening a month at the room77 bar - feel free to buy me a beer with lightning there :) -* [How can I get further help/support?](#support) \ No newline at end of file +* [How can I get further help/support?](#support) From f0d0ed8c24f0cee8f7fd953341979c714f4af9dd Mon Sep 17 00:00:00 2001 From: theword3 <78681498+theword3@users.noreply.github.com> Date: Sun, 17 Oct 2021 11:47:08 +0300 Subject: [PATCH 03/35] bonus.rtl.sh: Fix C-Lightning changes of config (#2625) fixes #2626 --- home.admin/config.scripts/bonus.rtl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/bonus.rtl.sh b/home.admin/config.scripts/bonus.rtl.sh index 243e831a2..f1ab3b319 100755 --- a/home.admin/config.scripts/bonus.rtl.sh +++ b/home.admin/config.scripts/bonus.rtl.sh @@ -382,14 +382,14 @@ if [ "$1" = "prestart" ]; then # C-Lightning changes of config # https://github.com/Ride-The-Lightning/RTL/blob/master/docs/C-Lightning-setup.md - if [ "${LNCLE}" == "cl" ]; then + if [ "${LNTYPE}" == "cl" ]; then echo "# CL Config" cat /home/rtl/${systemdService}/RTL-Config.json | \ jq ".port = \"${RTLHTTP}\"" | \ jq ".multiPass = \"${RPCPASSWORD}\"" | \ jq ".nodes[0].lnNode = \"${hostname}\"" | \ jq ".nodes[0].lnImplementation = \"CLT\"" | \ - jq ".nodes[0].Authentication.macaroonPath = \"CLme/bitcoin/c-lightning-REST/certs\"" | \ + jq ".nodes[0].Authentication.macaroonPath = \"/home/bitcoin/c-lightning-REST/certs\"" | \ jq ".nodes[0].Authentication.configPath = \"${CLCONF}\"" | \ jq ".nodes[0].Authentication.swapMacaroonPath = \"/home/rtl/.loop/${CHAIN}/\"" | \ jq ".nodes[0].Authentication.boltzMacaroonPath = \"/home/rtl/.boltz-lnd/macaroons/\"" | \ From 515e21198327e0e977f0e1ead132eee84a83ddbe Mon Sep 17 00:00:00 2001 From: openoms Date: Sun, 17 Oct 2021 09:52:57 +0100 Subject: [PATCH 04/35] FAQ.cl: add notes on updatin C-lightning --- FAQ.cl.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/FAQ.cl.md b/FAQ.cl.md index 1bcf68808..184ba60b3 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -35,6 +35,9 @@ - [Recover from a cl-rescue file](#recover-from-a-cl-rescue-file) - [Recover from a seed](#recover-from-a-seed) - [Rescan the chain after restoring a used c-lightning wallet](#rescan-the-chain-after-restoring-a-used-c-lightning-wallet) +- [Update](#update) + - [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) - [Script file help list](#script-file-help-list) --- @@ -586,8 +589,28 @@ Will need to pay through a peer which supports the onion messages which means yo sudo -u bitcoin lightningd --rescan=700000 ``` -## Script file help list +## Update +### Update to a new C-lightning release +* See the tagged releases by the C-lightning team: [github.com/ElementsProject/lightning/releases](https://github.com/ElementsProject/lightning/releases) +* Will be able to update to new releases from the menu - `UPDATE` - `CL` +* Since downgrading the lightning database is not allowed the updated version will persist if the SDcard is reflashed. +### Experimental update to the latest master +* 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: + ``` + config.scripts/cl.install.sh update + ``` +* if the database version is not compatible with the default version after a downgrade there will be an error message in `sudo journalctl -u lightningd` similar to: + ``` + Refusing to migrate down from version 178 to 176 + ``` +* in this case update to the next release from the menu or the latest master again with: + ``` + config.scripts/cl.install.sh update + ``` + +## Script file help list * generate a list of the help texts on a RaspiBlitz: ``` From 46264131c182b1a276ee16c33f71aa85e307cc14 Mon Sep 17 00:00:00 2001 From: openoms Date: Sun, 17 Oct 2021 10:34:46 +0100 Subject: [PATCH 05/35] CL: show port on infoscreen fixing #2635 --- home.admin/00infoBlitz.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/00infoBlitz.sh b/home.admin/00infoBlitz.sh index ac81a2ae6..40ccbe054 100755 --- a/home.admin/00infoBlitz.sh +++ b/home.admin/00infoBlitz.sh @@ -258,7 +258,7 @@ if [ "${lightning}" == "cl" ]; then if [ ${#address} -eq 0 ];then address=$(echo "${ln_getInfo}" | grep '"ipv4"' -A 1 | tail -1 | cut -d '"' -f4) fi - ln_external="${pubkey}@${address}" + ln_external="${pubkey}@${address}:${ln_port}" ln_tor=$(echo "${ln_external}" | grep -c ".onion") if [ ${ln_tor} -eq 1 ]; then ln_publicColor="${color_green}" From 2993ad76e8e856acf2ec7f2c925b19f48b7e8aa0 Mon Sep 17 00:00:00 2001 From: openoms Date: Sun, 17 Oct 2021 10:13:57 +0100 Subject: [PATCH 06/35] CL: do not announce 127.0.0.1 and check in CLCONF fixes #2634 --- home.admin/config.scripts/cl.check.sh | 5 +++++ home.admin/config.scripts/cl.install.sh | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/cl.check.sh b/home.admin/config.scripts/cl.check.sh index def3f1c11..f4a90fe93 100644 --- a/home.admin/config.scripts/cl.check.sh +++ b/home.admin/config.scripts/cl.check.sh @@ -21,6 +21,11 @@ source <(/home/admin/config.scripts/network.aliases.sh getvars cl $2) # so it tries to make sure the config is in valid shape ###################################################################### +# do not announce 127.0.0.1 https://github.com/rootzoll/raspiblitz/issues/2634 +if [ $(grep -c "^announce-addr=127.0.0.1" < ${CLCONF}) -gt 0 ];then + sed -i "/^announce-addr=127.0.0.1/d" ${CLCONF} +fi + if [ $(grep -c "^sparko" < ${CLCONF}) -gt 0 ];then if [ ! -f /home/bitcoin/${netprefix}cl-plugins-enabled/sparko ]\ || [ "$(eval echo \$${netprefix}sparko)" != "on" ]; then diff --git a/home.admin/config.scripts/cl.install.sh b/home.admin/config.scripts/cl.install.sh index aa8b6a24e..558730dd5 100644 --- a/home.admin/config.scripts/cl.install.sh +++ b/home.admin/config.scripts/cl.install.sh @@ -183,7 +183,6 @@ if [ "$1" = on ]||[ "$1" = update ]||[ "$1" = testPR ];then echo "# lightningd configuration for ${network} ${CHAIN} network=${CLNETWORK} -announce-addr=127.0.0.1:${portprefix}9736 log-file=cl.log log-level=info plugin-dir=/home/bitcoin/${netprefix}cl-plugins-enabled From 02c4ee5323ec17eaadd95bbe8890708a6cbd3188 Mon Sep 17 00:00:00 2001 From: openoms Date: Sun, 17 Oct 2021 20:08:32 +0100 Subject: [PATCH 07/35] FAQ.cl: add notes obout the seedwords.info file --- FAQ.cl.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/FAQ.cl.md b/FAQ.cl.md index 184ba60b3..d0b5c339f 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -475,7 +475,7 @@ the amounts can be specified in `sat` or `btc` 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 ``` - lightning-cli fundchannel feerate=PERKB_FEERATE utxos='["TRANSACTION_ID:INDDEX_NUMBER"]' -kid=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 ``` ### Offers @@ -560,11 +560,18 @@ Will need to pay through a peer which supports the onion messages which means yo ## Backups * https://lightning.readthedocs.io/FAQ.html#how-to-backup-my-wallet * General details: https://lightning.readthedocs.io/BACKUP.html + ### Seed -* 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 the RaspiBlitz the seed is stored in the disk with the option to encrypt +* 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 +* 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` +* Show manually with: +`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. ### How to display the hsm_secret in a human-readable format? -* If there is no seed available it isbest is to save the hsm_secret as a file with `scp`. To display as text: +* If there is no seed available it is best to save the hsm_secret as a file with `scp`. +To display it as text: ``` sudo cat /home/bitcoin/.lightning/bitcoin/hsm_secret | xxd ``` From 4cf02caa43f6780139c4c924a9783d087559c47f Mon Sep 17 00:00:00 2001 From: openoms Date: Mon, 18 Oct 2021 10:58:05 +0100 Subject: [PATCH 08/35] RTL: add lnServerUrl config for lnd testnets --- home.admin/config.scripts/bonus.rtl.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/home.admin/config.scripts/bonus.rtl.sh b/home.admin/config.scripts/bonus.rtl.sh index f1ab3b319..d1c56f409 100755 --- a/home.admin/config.scripts/bonus.rtl.sh +++ b/home.admin/config.scripts/bonus.rtl.sh @@ -375,6 +375,7 @@ if [ "$1" = "prestart" ]; then jq ".nodes[0].Authentication.swapMacaroonPath = \"/home/rtl/.loop/${CHAIN}/\"" | \ jq ".nodes[0].Authentication.boltzMacaroonPath = \"/home/rtl/.boltz-lnd/macaroons/\"" | \ jq ".nodes[0].Settings.userPersona = \"OPERATOR\"" | \ + jq ".nodes[0].Settings.lnServerUrl = \"https://localhost:${portprefix}8080\"" | \ jq ".nodes[0].Settings.channelBackupPath = \"/home/rtl/${systemdService}-SCB-backup-$hostname\"" | \ jq ".nodes[0].Settings.swapServerUrl = \"https://localhost:${SWAPSERVERPORT}\"" > /home/rtl/${systemdService}/RTL-Config.json.tmp mv /home/rtl/${systemdService}/RTL-Config.json.tmp /home/rtl/${systemdService}/RTL-Config.json From fe5bb749838f77adce24f27f2cff4f575603af01 Mon Sep 17 00:00:00 2001 From: /rootzoll Date: Mon, 25 Oct 2021 11:31:12 +0200 Subject: [PATCH 09/35] # 2084onlycopystation (#2664) --- home.admin/XXcopyStation.sh | 198 ++++++++++------------ home.admin/setup.scripts/eventInfoWait.sh | 7 +- 2 files changed, 90 insertions(+), 115 deletions(-) diff --git a/home.admin/XXcopyStation.sh b/home.admin/XXcopyStation.sh index aa8e7bb3f..51ec8c95e 100755 --- a/home.admin/XXcopyStation.sh +++ b/home.admin/XXcopyStation.sh @@ -13,26 +13,9 @@ fi # where to find the BITCOIN data directory (no trailing /) pathBitcoinBlockchain="/mnt/hdd/bitcoin" -# where to find the LITECOIN data directory (no trailing /) -pathLitecoinBlockchain="/mnt/hdd/litecoin" - # where to find the RaspiBlitz HDD template directory (no trailing /) pathTemplateHDD="/mnt/hdd/app-storage/templateHDD" -# 0 = ask before formatting/init new HDD -# 1 = auto-formatting every new HDD that needs init -nointeraction=1 - -# override values if XXcopyStation.conf files exists -# use when you run this outside RaspiBlitz -# - clean Ubuntu install -# - install bitcoind as systemd service -# - disable automount: https://askubuntu.com/questions/89244/how-to-disable-automount-in-nautiluss-preferences#102601 -# - clone the github to get script (or download) -# - set your pathes bitcoin/template in conf file -source ./XXcopyStation.conf 2>/dev/null -# -- start script with parameter "-foreground" - ####### SCRIPT ############# # check sudo @@ -62,7 +45,7 @@ if [ -d "$pathBitcoinBlockchain" ]; then echo "# OK found $pathBitcoinBlockchain" else echo "# FAIL path of 'pathBitcoinBlockchain' does not exists: ${pathBitcoinBlockchain}" - echo "error='pathBitcoinBlockchain nit found'" + echo "error='pathBitcoinBlockchain not found'" exit 1 fi @@ -88,6 +71,10 @@ echo "# ******************************" echo "# RASPIBLITZ COPYSTATION SCRIPT" echo "# ******************************" echo +echo "Make sure that no target HDD/SSDs are not connected yet .." +echo +sudo sed -i "s/^state=.*/state=copystation/g" /home/admin/raspiblitz.info 2>/dev/null +sleep 10 echo "*** CHECKING CONFIG" @@ -104,29 +91,10 @@ fi systemctl stop lnd 2>/dev/null systemctl stop background 2>/dev/null -#if [ "${nointeraction}" == "1" ]; then -# echo "setting RaspiBlitz LCD info" -# sudo sed -i "s/^state=.*/state=copystation/g" /home/admin/raspiblitz.info 2>/dev/null -# sudo sed -i "s/^message=.*/message='Disconnect target HDDs!'/g" /home/admin/raspiblitz.info 2>/dev/null -# echo "Disconnect target HDDs! .. 30sec until continue." -# sleep 30 -#else -# echo -# echo "*** INIT HDD SCAN" -# echo "Please make sure that no HDDs that you want to sync later to are not connected now." -# echo "PRESS ENTER when ready." -# read key -#fi - # finding system drives (the drives that should not be synced to) echo "# OK - the following drives detected as the system drive: $datadisk" echo -if [ "${nointeraction}" == "1" ]; then - sudo sed -i "s/^message=.*/message='Connect target HDDs ..'/g" /home/admin/raspiblitz.info 2>/dev/null - sleep 5 -fi - # BASIC IDEA: # 1. get fresh data from bitcoind --> template data # 2. detect HDDs @@ -136,12 +104,17 @@ fi echo echo "*** RUNNING ***" lastBlockchainUpdateTimestamp=1 +firstLoop=1 while : do + + # reset external data stores (needed because local vars dont work in deeper while loops) + echo "" > /var/cache/raspiblitz/copystationHddsInfoString.tmp + rm /var/cache/raspiblitz/copystationFoundTargets.flag ################################################ - # 1. get fresh data from bitcoind for template data + # 1. get fresh data from bitcoind for template data (skip on first loop) # only execute every 30min nowTimestamp=$(date +%s) @@ -158,13 +131,12 @@ do # stop blockchains echo "# Stopping Blockchain ..." systemctl stop bitcoind 2>/dev/null - systemctl stop litecoind 2>/dev/null sleep 10 # sync bitcoin echo "# Syncing Bitcoin to template folder ..." - sudo sed -i "s/^message=.*/message='Updating Template: Bitcoin'/g" /home/admin/raspiblitz.info 2>/dev/null + sed -i "s/^message=.*/message='Updating Template: Bitcoin'/g" /home/admin/raspiblitz.info # make sure the bitcoin directory in template folder exists if [ ! -d "$pathTemplateHDD/bitcoin" ]; then @@ -176,27 +148,9 @@ do # do the sync to the template folder for BITCOIN rsync -a --info=progress2 --delete ${pathBitcoinBlockchain}/chainstate ${pathBitcoinBlockchain}/blocks ${pathTemplateHDD}/bitcoin - litecoindirsize=$(sudo du -s -b /mnt/hdd/litecoin | awk '$1=$1' | cut -d " " -f1) - if [ -d "${pathLitecoinBlockchain}" ] && [ ${litecoindirsize} -gt 1000000000 ]; then - - # sync litecoin - echo "# Syncing Litecoin ..." - - echo "# creating the litecoin subfolder in the template folder" - mkdir ${pathTemplateHDD}/litecoin 2>/dev/null - chmod 777 ${pathTemplateHDD}/litecoin 2>/dev/null - - sudo sed -i "s/^message=.*/message='Updating Template: Litecoin'/g" /home/admin/raspiblitz.info 2>/dev/null - - # do the sync to the template folder for LITECOIN - rsync -a --info=progress2 --delete ${pathLitecoinBlockchain}/chainstate ${pathLitecoinBlockchain}/blocks ${pathTemplateHDD}/litecoin - - fi - # restart bitcoind (to let further setup while syncing HDDs) echo "# Restarting Blockchain ..." systemctl start bitcoind 2>/dev/null - systemctl start litecoind 2>/dev/null # update timer lastBlockchainUpdateTimestamp=$(date +%s) @@ -209,14 +163,14 @@ do echo "**************************************" echo "SYNCING TEMPLATE -> CONNECTED HDD/SSDs" echo "**************************************" - echo "NOTE: Only use to prepare fresh HDDs" - - sleep 4 - echo "" > ./.syncinfo.tmp + sleep 2 lsblk -o NAME | grep "^[s|v]d" | while read -r detectedDrive ; do isSystemDrive=$(echo "${datadisk}" | grep -c "${detectedDrive}") if [ ${isSystemDrive} -eq 0 ]; then + # remember that disks were found + touch /var/cache/raspiblitz/copystationFoundTargets.flag + # check if drives 1st partition is named BLOCKCHAIN & in EXT4 format isNamedBlockchain=$(lsblk -o NAME,FSTYPE,LABEL | grep "${detectedDrive}" | grep -c "BLOCKCHAIN") isFormatExt4=$(lsblk -o NAME,FSTYPE,LABEL | grep "${detectedDrive}" | grep -c "ext4") @@ -224,96 +178,120 @@ do # init a fresh device if [ ${isNamedBlockchain} -eq 0 ] || [ ${isFormatExt4} -eq 0 ]; then - echo "*** NEW EMPTY HDD FOUND ***" - echo "Device: ${detectedDrive}" + echo + echo "**************************************************************" + echo "*** NEW EMPTY HDD FOUND ---> ${detectedDrive}" echo "isNamedBlockchain: ${isNamedBlockchain}" echo "isFormatExt4:" ${isFormatExt4} # check if size is OK size=$(lsblk -o NAME,SIZE -b | grep "^${detectedDrive}" | awk '$1=$1' | cut -d " " -f 2) echo "size: ${size}" - if [ ${size} -lt 250000000000 ]; then - whiptail --title "FAIL" --msgbox " -THE DEVICE IS TOO SMALL <250GB -Please remove device and PRESS ENTER - " 9 46 + if [ ${size} -lt 900000000000 ]; then + echo "!! THE HDD/SSD IS TOO SMALL <900GB - use at least 1TB" + sed -i "s/^message=.*/message='HDD smaller than 1TB: ${detectedDrive}'/g" /home/admin/raspiblitz.info + echo + sleep 10 else - # if config value "nointeraction=1" default to format - if [ "${nointeraction}" != "1" ]; then - whiptail --title "Format HDD" --yes-button "Format" --no-button "Cancel" --yesno " -Found new HDD. Do you want to FORMAT now? -Label of device with: ${detectedDrive} - " 10 54 - choice=$? - else - choice=0 - sudo sed -i "s/^message=.*/message='Formatting new HDD: ${formatPartition}'/g" /home/admin/raspiblitz.info 2>/dev/null - fi - - # on cancel - if [ "${choice}" != "0" ]; then - whiptail --title "Format HDD" --msgbox " -OK NO FORMAT - Please remove device now. - " 8 46 - exit 1 - fi + choice=0 + sed -i "s/^message=.*/message='Formatting new HDD: ${detectedDrive}'/g" /home/admin/raspiblitz.info # format the HDD echo "Starting Formatting of device ${detectedDrive} ..." - sudo /home/admin/config.scripts/blitz.datadrive.sh format ext4 ${detectedDrive} + /home/admin/config.scripts/blitz.datadrive.sh format ext4 ${detectedDrive} + sleep 4 fi - fi # end init new HDD + else + echo + echo "*** ALREADY ACTIVE HDD FOUND ---> ${detectedDrive}" + sleep 1 + fi ################################################ - # 3. sync HDD with template data + # 3. sync HDD with template data (skip on first loop) partition=$(lsblk -o NAME,FSTYPE,LABEL | grep "${detectedDrive}" | grep "BLOCKCHAIN" | cut -d ' ' -f 1 | tr -cd "[:alnum:]") - if [ ${#partition} -gt 0 ]; then + if [ "${firstLoop}" != "1" ] && [ ${#partition} -gt 0 ]; then # temp mount device echo "mounting: ${partition}" mkdir /mnt/hdd2 2>/dev/null - sudo mount -t ext4 /dev/${partition} /mnt/hdd2 + mount -t ext4 /dev/${partition} /mnt/hdd2 # rsync device mountOK=$(lsblk -o NAME,MOUNTPOINT | grep "${detectedDrive}" | grep -c "/mnt/hdd2") if [ ${mountOK} -eq 1 ]; then - sudo sed -i "s/^message=.*/message='Syncing Template -> ${partition}'/g" /home/admin/raspiblitz.info 2>/dev/null + hddsInfoString=$(cat /var/cache/raspiblitz/copystationHddsInfoString.tmp | tr '\n' ' ') + sed -i "s/^message=.*/message='${hddsInfoString} ${partition}>SYNC'/g" /home/admin/raspiblitz.info rsync -a --info=progress2 --delete ${pathTemplateHDD}/* /mnt/hdd2 - sudo chmod -R 777 /mnt/hdd2 + chmod -R 777 /mnt/hdd2 rm -r /mnt/hdd2/lost+found 2>/dev/null - echo "${partition} " >> ./.syncinfo.tmp + echo "${partition}>OK" >> /var/cache/raspiblitz/copystationHddsInfoString.tmp else echo "# FAIL: was not able to mount --> ${partition}" fi # unmount device - sudo umount -l /mnt/hdd2 - + umount -l /mnt/hdd2 + fi fi done + # check for flag + foundTargets=$(ls /var/cache/raspiblitz/copystationFoundTargets.flag 2>/dev/null | grep -c "copystationFoundTargets.flag") + hddsInfoString=$(cat /var/cache/raspiblitz/copystationHddsInfoString.tmp | tr '\n' ' ') + clear - echo "**** SYNC LOOP DONE ****" - synced=$(cat ./.syncinfo.tmp | tr '\r\n' ' ') - echo "HDDs ready synced: ${synced}" - echo "*************************" - echo "Its safe to disconnect/remove HDDs now." - echo "Or connect a new HDD/SSD for syncing." - echo "To stop copystation script: CTRL+c" - echo "" + if [ "${foundTargets}" == "1" ] && [ "${firstLoop}" == "1" ]; then - sudo sed -i "s/^message=.*/message='Ready HDDs: ${synced}'/g" /home/admin/raspiblitz.info 2>/dev/null + # after script found discs and did formatting ... go into full loop + echo "OK first loop done ..." + firstLoop=0 + sleep 1 - sleep 25 + elif [ "${foundTargets}" == "0" ]; then + + echo "**** NO TARGET HDD/SSDs CONNECTED ****" + echo + echo "Best way to start a new batch:" + echo "- Disconnect powered USB-Hub (best unplug USB cable at USB-Hub)" + echo "- Connect all HDD/SSDs to the disconnected USB-Hub" + echo "- Connect powered USB-Hub to Blitz (plug USB cable in)" + echo "- During formatting remember names of physical HDD/SSDs" + echo "- As soon as you see an OK for that HDD/SSD name you can remove it" + echo + echo "Next round starts in 30 seconds ..." + echo "To stop copystation script: CTRL+c and then 'restart'" + echo "You can close SSH terminal and script will run in background can can be re-entered." + + sed -i "s/^message=.*/message='No target HDDs connected - connect USB Hub'/g" /home/admin/raspiblitz.info + firstLoop=1 + sleep 30 + + else + + echo "**** SYNC LOOP DONE ****" + echo "HDDs ready synced:" + cat /var/cache/raspiblitz/copystationHddsInfoString.tmp + echo + echo "*************************" + echo + echo "Next round starts in 25 seconds ..." + echo "To stop copystation script: CTRL+c and then 'restart'" + echo "You can close SSH terminal and script will run in background can can be re-entered." + + sed -i "s/^message=.*/message='Ready HDDs: ${hddsInfoString}'/g" /home/admin/raspiblitz.info + sleep 25 + + fi clear echo "starting new sync loop" sleep 5 - -done + +done \ No newline at end of file diff --git a/home.admin/setup.scripts/eventInfoWait.sh b/home.admin/setup.scripts/eventInfoWait.sh index 6b26a609e..e40a834fa 100644 --- a/home.admin/setup.scripts/eventInfoWait.sh +++ b/home.admin/setup.scripts/eventInfoWait.sh @@ -140,11 +140,8 @@ Use your Password A elif [ "${eventID}" == "copystation" ] && [ "${mode}" == "lcd" ]; then - dialog --backtitle "${backtitle}" --cr-wrap --infobox " -Copy-Station Mode -ssh admin@${localip} -Use your Password A -" 7 41 + dialog --backtitle "${backtitle}" --title " Copy-Station Mode " --cr-wrap --infobox " +${contentString}" 7 41 elif [ "${eventID}" == "walletlocked" ] && [ "${mode}" == "lcd" ]; then From abad5448e2aa15aa0baaca185bce9e3a469f7b86 Mon Sep 17 00:00:00 2001 From: Alazne Morales <86524177+alaznem@users.noreply.github.com> Date: Tue, 26 Oct 2021 13:16:26 +0000 Subject: [PATCH 10/35] modify wording of a correct signature verification (#2660) gpg (GnuPG) 2.2.12 is displaying the term `gpg: Good signature from ...` and not "correct signature" as currently written in the FAQ. --- FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FAQ.md b/FAQ.md index 078fa8d57..f1f5d6de7 100644 --- a/FAQ.md +++ b/FAQ.md @@ -138,7 +138,7 @@ If you know have all the three elements needed - the imported public key, the im gpg --verify [SIGNATURE-FILE] [IMAGE-FILE] ``` -As a result you should see a "correct signature" message with a main fingerprint the same as you can find on the [keybase.io/rootzoll](https://keybase.io/rootzoll) that is ending on `1C73 060C 7C17 6461`. If that fingerprint is correct, the SD card image you downloaded is a original release RaspiBlitz. +As a result you should see a "good signature" message with a main fingerprint the same as you can find on the [keybase.io/rootzoll](https://keybase.io/rootzoll) that is ending on `1C73 060C 7C17 6461`. If that fingerprint is correct, the SD card image you downloaded is a original release RaspiBlitz. ## How to update an old RaspiBlitz BEFORE v1.0? (LEGACY) From a45adc3473cfbf9dbbf63f73a70c660ab6c753ca Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 Oct 2021 01:00:32 +0200 Subject: [PATCH 11/35] #2667 fix --- home.admin/_background.sh | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/home.admin/_background.sh b/home.admin/_background.sh index 552c377b9..59f065122 100755 --- a/home.admin/_background.sh +++ b/home.admin/_background.sh @@ -475,15 +475,12 @@ do finishedIBD=$($bitcoincli_alias getblockchaininfo | grep "initialblockdownload" | grep -c "false") if [ ${finishedIBD} -eq 1 ]; then - echo "CHECK FOR END OF IBD --> reduce RAM, check TOR and restart ${network}d" + echo "CHECK FOR END OF IBD --> reduce RAM for next reboot" # remove flag - sudo rm /home/admin/selfsync.flag + sudo rm /mnt/hdd/${network}/blocks/selfsync.flag - # stop bitcoind - sudo systemctl stop ${network}d - - # set dbcache back to normal (to give room for other apps) + # set dbcache back to normal (to give room for other apps after reboot in the future) kbSizeRAM=$(sudo cat /proc/meminfo | grep "MemTotal" | sed 's/[^0-9]*//g') if [ ${kbSizeRAM} -gt 1500000 ]; then echo "Detected RAM >1GB --> optimizing ${network}.conf" @@ -493,17 +490,6 @@ do sudo sed -i "s/^dbcache=.*/dbcache=128/g" /mnt/hdd/${network}/${network}.conf fi - # if TOR was activated during setup make sure bitcoin runs behind TOR latest from now on - if [ "${runBehindTor}" = "on" ]; then - echo "TOR is ON -> make sure bitcoin is running behind TOR after IBD" - sudo /home/admin/config.scripts/internet.tor.sh btcconf-on - else - echo "TOR is OFF after IBD" - fi - - # restart bitcoind - sudo systemctl start ${network}d - fi fi fi From b9d3d469960492c815b7aeb527ca4dcc40e59d46 Mon Sep 17 00:00:00 2001 From: /rootzoll Date: Thu, 28 Oct 2021 11:58:44 +0200 Subject: [PATCH 12/35] add commit has info to github menu (#2674) --- home.admin/99updateMenu.sh | 2 +- home.admin/config.scripts/blitz.github.sh | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/home.admin/99updateMenu.sh b/home.admin/99updateMenu.sh index 296dddbae..a25c89f9c 100755 --- a/home.admin/99updateMenu.sh +++ b/home.admin/99updateMenu.sh @@ -127,7 +127,7 @@ patch() PR "Checkout a PullRequest to test" ) - CHOICE=$(whiptail --clear --title "GitHub-User: ${activeGitHubUser} Branch: ${activeBranch}" --menu "" 11 55 4 "${OPTIONS[@]}" 2>&1 >/dev/tty) + CHOICE=$(whiptail --clear --title " GitHub user:${activeGitHubUser} branch:${activeBranch} (${commitHashShort})" --menu "" 11 60 4 "${OPTIONS[@]}" 2>&1 >/dev/tty) clear case $CHOICE in diff --git a/home.admin/config.scripts/blitz.github.sh b/home.admin/config.scripts/blitz.github.sh index d3b65b3b3..971cd942f 100755 --- a/home.admin/config.scripts/blitz.github.sh +++ b/home.admin/config.scripts/blitz.github.sh @@ -10,22 +10,28 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then echo "FOR DEVELOPMENT USE ONLY!" echo "RaspiBlitz Sync Scripts" - echo "XXsyncScripts.sh info" - echo "XXsyncScripts.sh [-run|-clean|-install|-justinstall] branch [repo]" + echo "blitz.github.sh info" + echo "blitz.github.sh [-run|-clean|-install|-justinstall] branch [repo]" exit 1 fi -cd /home/admin/raspiblitz source /mnt/hdd/raspiblitz.conf 2>/dev/null +cd /home/admin/raspiblitz + # gather info activeGitHubUser=$(sudo -u admin cat /home/admin/raspiblitz/.git/config 2>/dev/null | grep "url = " | cut -d "=" -f2 | cut -d "/" -f4) activeBranch=$(git branch 2>/dev/null | grep \* | cut -d ' ' -f2) +commitHashLong=$(git log -n1 --format=format:"%H") +commitHashShort=${commitHashLong:0:7} # if parameter is "info" just give back basic info about sync if [ "$1" == "info" ]; then + echo "activeGitHubUser='${activeGitHubUser}'" echo "activeBranch='${activeBranch}'" + echo "commitHashLong='${commitHashLong}'" + echo "commitHashShort='${commitHashShort}'" exit 1 fi From cce38cdaae8c860a4641b71225420ff9d4a702f3 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 Oct 2021 14:02:35 +0200 Subject: [PATCH 13/35] add new torrent file --- .../raspiblitz-v1.7.1-2021-10-28.img.gz.torrent | Bin 0 -> 25446 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent diff --git a/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent b/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent new file mode 100644 index 0000000000000000000000000000000000000000..e28be9a9fb0c8320c46a76d427176f7766d88516 GIT binary patch literal 25446 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

+GRd^2S$sqEs0NPb>3lJ~ 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 VXUw-vH#%@~X?9_BWoa;FWo17qb?E>A literal 0 HcmV?d00001 From 306c7d9f914170e513c76aab0fd5f2e326c838a8 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 Oct 2021 15:17:38 +0200 Subject: [PATCH 14/35] Uploaded patch for v1.7.1 --- CHANGES.md | 2 ++ FAQ.md | 2 +- README.md | 10 +++++----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index dd0617663..8c18d488a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,8 @@ ## What's new in Version 1.7.1 of RaspiBlitz? +There was a small patch-update with raspiblitz-v1.7.1-2021-10-28.img.gz to fix a restart-loop after blockchain was self-synced. + - New: C-lightning v0.10.1 [details](https://github.com/ElementsProject/lightning/releases/tag/v0.10.1) - New: C-lightningREST v0.5.1 [details](https://github.com/Ride-The-Lightning/c-lightning-REST/releases/tag/v0.5.1) - New: CL Spark Wallet v0.3.0rc with BOLT12 offers [details](https://github.com/shesek/spark-wallet/releases) diff --git a/FAQ.md b/FAQ.md index f1f5d6de7..e1c56fbe3 100644 --- a/FAQ.md +++ b/FAQ.md @@ -138,7 +138,7 @@ If you know have all the three elements needed - the imported public key, the im gpg --verify [SIGNATURE-FILE] [IMAGE-FILE] ``` -As a result you should see a "good signature" message with a main fingerprint the same as you can find on the [keybase.io/rootzoll](https://keybase.io/rootzoll) that is ending on `1C73 060C 7C17 6461`. If that fingerprint is correct, the SD card image you downloaded is a original release RaspiBlitz. +As a result you should see a "good signature" message with a main fingerprint the same as you can find on the [keybase.io/rootzoll](https://keybase.io/rootzoll) that is ending on `1C73 060C 7C17 6461` the sub fingerprint should end on `A2D7 AA9D D1B5 CC56 47DA`. If that fingerprint is correct, the SD card image you downloaded is a original release RaspiBlitz. ## How to update an old RaspiBlitz BEFORE v1.0? (LEGACY) diff --git a/README.md b/README.md index 03b2c321d..f56d45fd9 100644 --- a/README.md +++ b/README.md @@ -119,19 +119,19 @@ In the end your RaspiBlitz should look like this: |Philosophy|Trust|Sovereignty| |Difficulty level|Easy|Medium| |Pros|Make Blitz accessible to everyone|You don't need to trust us, build from your own forked repository| -|Instructions|[Download 1.7.1 image](https://raspiblitz.fulmo.org/images/raspiblitz-v1.7.1-2021-10-12.img.gz) and [Flash the sd card](README.md#write-the-sd-card-image-to-your-sd-card)|[Build your own sd card image](#build-the-sd-card-image)| -|Verify what?|[Signature file](https://raspiblitz.fulmo.org/images/raspiblitz-v1.7.1-2021-10-12.img.gz.sig) and [verify the Sig](FAQ.md#how-to-verify-the-sd-card-image-after-download) OR SHA-256 (below)|All of the code, don't trust, verify| +|Instructions|[Download 1.7.1 image](https://raspiblitz.fulmo.org/images/raspiblitz-v1.7.1-2021-10-28.img.gz) and [Flash the sd card](README.md#write-the-sd-card-image-to-your-sd-card)|[Build your own sd card image](#build-the-sd-card-image)| +|Verify what?|[Signature file](https://raspiblitz.fulmo.org/images/raspiblitz-v1.7.1-2021-10-28.img.gz.sig) and [verify the Sig](FAQ.md#how-to-verify-the-sd-card-image-after-download) OR SHA-256 (below)|All of the code, don't trust, verify| If downloading the maintainer SD card image: -* GPG 64-bit: 1C73 060C 7C17 6461 -* SHA-256: 4b5481e0f27afe9b5aa8bab5805f7df033f2596db29a1e47c25d2f0109d9c003 +* GPG 64-bit (main): 1C73 060C 7C17 6461 & (sub): AA9D D1B5 CC56 47DA +* SHA-256: 6d06813860ccb9ba335086a0e53fb01f80c9ae699a59bfffdb8a89ae94087aad Which verification method should I used: Hash or Signature? * Signed file prove to you that the SD card image was actually built by the lead developer of the RaspiBlitz project. (Safest) * Hash function checks file integrity. (Secure) The maintainer sd card image can also be downloaded via torrent: -* [assets/raspiblitz-v1.7.1-2021-10-12.img.gz.torrent](https://github.com/rootzoll/raspiblitz/raw/dev/home.admin/assets/raspiblitz-v1.7.1-2021-10-12.img.gz.torrent) +* [assets/raspiblitz-v1.7.1-2021-10-12.img.gz.torrent](https://github.com/rootzoll/raspiblitz/raw/dev/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent) Useful info: * [What's new in Version 1.7.1 of RaspiBlitz?](CHANGES.md#whats-new-in-version-171-of-raspiblitz) From 194972579263fa5ae32b55edb048a6653afd9f9f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 Oct 2021 15:18:25 +0200 Subject: [PATCH 15/35] fix torrent link text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f56d45fd9..5e833f1c3 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ Which verification method should I used: Hash or Signature? * Hash function checks file integrity. (Secure) The maintainer sd card image can also be downloaded via torrent: -* [assets/raspiblitz-v1.7.1-2021-10-12.img.gz.torrent](https://github.com/rootzoll/raspiblitz/raw/dev/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent) +* [assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent](https://github.com/rootzoll/raspiblitz/raw/dev/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent) Useful info: * [What's new in Version 1.7.1 of RaspiBlitz?](CHANGES.md#whats-new-in-version-171-of-raspiblitz) From d45839facf6d03b01771d30ce117e7abe8f4f72f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 Oct 2021 16:05:22 +0200 Subject: [PATCH 16/35] fix torrent link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e833f1c3..45ecb9502 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ Which verification method should I used: Hash or Signature? * Hash function checks file integrity. (Secure) The maintainer sd card image can also be downloaded via torrent: -* [assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent](https://github.com/rootzoll/raspiblitz/raw/dev/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent) +* [assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent](https://github.com/rootzoll/raspiblitz/raw/v1.7/home.admin/assets/raspiblitz-v1.7.1-2021-10-28.img.gz.torrent) Useful info: * [What's new in Version 1.7.1 of RaspiBlitz?](CHANGES.md#whats-new-in-version-171-of-raspiblitz) From d81801d2a911cdfd45108d04b5f050199b57ca97 Mon Sep 17 00:00:00 2001 From: openoms Date: Sat, 30 Oct 2021 23:50:36 +0100 Subject: [PATCH 17/35] FAQ.cl: add sqlite3 queries about channel closes --- FAQ.cl.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/FAQ.cl.md b/FAQ.cl.md index d0b5c339f..2eba4bb77 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -38,6 +38,7 @@ - [Update](#update) - [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) --- @@ -617,6 +618,18 @@ To display it as text: config.scripts/cl.install.sh update ``` +## sqlite3 queries + +* Query the reasons for force closes + ``` + sudo -u bitcoin sqlite3 /home/bitcoin/.lightning/bitcoin/lightningd.sqlite3 'select short_channel_id, timestamp, cause, message from channel_state_changes inner join channels on channel_id = id where new_state = 7 order by timestamp' + ``` + +* Query the reasons for cooperative channel closes + ``` + sudo -u bitcoin sqlite3 /home/bitcoin/.lightning/bitcoin/lightningd.sqlite3 'select short_channel_id, timestamp, cause, message from channel_state_changes inner join channels on channel_id = id where new_state = 4 order by timestamp' + ``` + ## Script file help list * generate a list of the help texts on a RaspiBlitz: From 38e4de5908a27a1333bfc04c99ed6d51070558b9 Mon Sep 17 00:00:00 2001 From: openoms <43343391+openoms@users.noreply.github.com> Date: Tue, 2 Nov 2021 12:19:33 +0000 Subject: [PATCH 18/35] Fix RESET-LND (#2690) * initialize LND wallet after reset * diplay seed for mainnet after reset and init * display and delete the seed for mainnet * lnd.install: remove seedwordFile after shred The seed will be safely deleted after having been displayed, the same as during the initial setup. The seedwordFile is created and kept for testnet and signet if active. --- home.admin/98repairMenu.sh | 12 ++++++++++-- home.admin/config.scripts/lnd.install.sh | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/home.admin/98repairMenu.sh b/home.admin/98repairMenu.sh index 0336383c3..843f61914 100755 --- a/home.admin/98repairMenu.sh +++ b/home.admin/98repairMenu.sh @@ -124,8 +124,16 @@ case $CHOICE in echo "stopping lnd ..." sudo systemctl stop lnd sudo rm -r /mnt/hdd/lnd - /home/admin/70initLND.sh - + # create wallet + /home/admin/config.scripts/lnd.install.sh on mainnet initwallet + # display and delete the seed for mainnet + sudo /home/admin/config.scripts/lnd.install.sh display-seed mainnet delete + if [ "${tlnd}" == "on" ];then + /home/admin/config.scripts/lnd.install.sh on testnet initwallet + fi + if [ "${slnd}" == "on" ];then + /home/admin/config.scripts/lnd.install.sh on signet initwallet + fi # go back to main menu (and show) /home/admin/00raspiblitz.sh exit 0; diff --git a/home.admin/config.scripts/lnd.install.sh b/home.admin/config.scripts/lnd.install.sh index c6d1b29a5..0d82653d5 100644 --- a/home.admin/config.scripts/lnd.install.sh +++ b/home.admin/config.scripts/lnd.install.sh @@ -267,6 +267,7 @@ if [ "$1" = "display-seed" ]; then if [ "${deleteSeedInfoAfterDisplay}" == "1" ]; then echo "# deleting seed info" sudo shred ${seedwordFile} + sudo rm ${seedwordFile} fi else walletFile="/mnt/hdd/lnd/data/chain/${network}/${CHAIN}/wallet.db" From 2594e8f1fa92bfa7064b21442f529535db0ce0c9 Mon Sep 17 00:00:00 2001 From: Evan Kaloudis Date: Thu, 11 Nov 2021 09:47:06 -0500 Subject: [PATCH 19/35] Remove TestFlight label from Zeus (#2687) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45ecb9502..f5fc33801 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ There are further Services that can be switched on: You can connect the following Wallet-Apps to your RaspiBlitz: -* **Zeus** (Android & iOS-TestFlight) [details](https://zeusln.app) +* **Zeus** (Android & iOS) [details](https://zeusln.app) * **Fully Noded** (iOS) [details](https://apps.apple.com/us/app/fully-noded/id1436425586) * **SendMany** (Android) [details](https://github.com/fusion44/sendmany/blob/master/README.md) * **Sphinx Chat App** (Android & iOS) [details](https://sphinx.chat) From a0fd288e553678d0816d682e968a2eea0d165a9b Mon Sep 17 00:00:00 2001 From: openoms Date: Wed, 17 Nov 2021 06:19:53 -0600 Subject: [PATCH 20/35] FAQ.cl.md: formatting and updates --- FAQ.cl.md | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/FAQ.cl.md b/FAQ.cl.md index 2eba4bb77..9b4bb9b43 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -63,7 +63,6 @@ The channels would need to be closed to use the same funds in an other node. * https://lightning.readthedocs.io/ ## Commands and aliases - * Check if the C-lightning daemon is running: ``` sudo systemctl status lightningd @@ -80,6 +79,7 @@ or with the alias: `cllog` alias clconf='sudo nano /home/bitcoin/.lightning/config' alias cllog='sudo tail -n 30 -f /home/bitcoin/.lightning/bitcoin/cl.log' ``` + ## Directories * All data is stored on the disk in: `/mnt/hdd/app-data/.lightningd` @@ -91,18 +91,17 @@ or with the alias: `cllog` ### Default values * on the RaspiBlitz for mainnet - ``` - network=bitcoin - announce-addr=127.0.0.1:9736 - log-file=cl.log - log-level=info - plugin-dir=/home/bitcoin/cln-plugins-enabled - # Tor settings - proxy=127.0.0.1:9050 - bind-addr=127.0.0.1:9736 - addr=statictor:127.0.0.1:9051/torport=9736 - always-use-proxy=true - ``` + ``` + network=bitcoin + log-file=cl.log + log-level=info + plugin-dir=/home/bitcoin/cln-plugins-enabled + # Tor settings + proxy=127.0.0.1:9050 + bind-addr=127.0.0.1:9736 + addr=statictor:127.0.0.1:9051/torport=9736 + always-use-proxy=true + ``` ### All possible config settings * can be shown by running: `lightningd --help` @@ -264,7 +263,8 @@ or with the alias: `cllog` ### Implemented plugins * summary * sparko -* clboss +* [CLBOSS](#clboss) +* [feeadjuster](#feeadjuster) ### Add a custom plugin * Place the plugin in the `/home/bitcoin/cl-plugins-enabled` directory @@ -312,12 +312,13 @@ https://github.com/ZmnSCPxj/clboss#clboss-status ### Feeadjuster * Install: +`config.scripts/cl-plugin.feedadjuster.sh on` -* to set the default fees in the config add: - ``` - fee-base=BASEFEE_IN_MILLISATS - fee-per-satoshi=PPM_FEE_IN_SATS - ``` +* to set the default fees add to the C-lightning `config` file: + ``` + fee-base=BASEFEE_IN_MILLISATS + 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): ``` plugin.add_option( @@ -526,7 +527,6 @@ Will need to pay through a peer which supports the onion messages which means yo * https://bitcoin.stackexchange.com/questions/107484/how-can-i-decode-the-feature-string-of-a-lightning-node-with-bolt-9 * Convert the hex number from `lightning-cli listpeers` to binary: https://www.binaryhexconverter.com/hex-to-binary-converter and count the position of the bits from the right. - ## Testnets * for testnet and signet there are prefixes `t` and `s` used for the aliases, daemons and their own plugin directory names. * Testnet @@ -576,16 +576,20 @@ To display it as text: ``` sudo cat /home/bitcoin/.lightning/bitcoin/hsm_secret | xxd ``` + ### Channel database -* Stored on the disk and synchronised to the SDcard with the help of the bakcup plugin. +* Stored on the disk and synchronised to the SDcard with the help of the `backup` plugin. ### Recovery * https://lightning.readthedocs.io/FAQ.html#database-corruption-channel-state-lost * https://lightning.readthedocs.io/FAQ.html#loss + #### Recover from a cl-rescue file * use the `REPAIR-CL` - `FILERESTORE` option in the menu for instructions to upload + #### Recover from a seed * use the `REPAIR-CL` - `SEEDRESTORE` option in the menu for instructions to paste the seedwords to restore + #### Rescan the chain after restoring a used c-lightning wallet * https://lightning.readthedocs.io/FAQ.html#rescanning-the-block-chain-for-lost-utxos * Stop `lightningd`: @@ -619,19 +623,16 @@ To display it as text: ``` ## sqlite3 queries - * Query the reasons for force closes ``` sudo -u bitcoin sqlite3 /home/bitcoin/.lightning/bitcoin/lightningd.sqlite3 'select short_channel_id, timestamp, cause, message from channel_state_changes inner join channels on channel_id = id where new_state = 7 order by timestamp' ``` - * Query the reasons for cooperative channel closes ``` sudo -u bitcoin sqlite3 /home/bitcoin/.lightning/bitcoin/lightningd.sqlite3 'select short_channel_id, timestamp, cause, message from channel_state_changes inner join channels on channel_id = id where new_state = 4 order by timestamp' ``` ## Script file help list - * generate a list of the help texts on a RaspiBlitz: ``` cd /home/admin/config.scripts/ From c677233c3800ead3ef0de294bb193b91c60cd408 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 25 Nov 2021 23:47:22 +0100 Subject: [PATCH 21/35] update link to wifi guide in faq (#2719) --- FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FAQ.md b/FAQ.md index e1c56fbe3..c5b80c27f 100644 --- a/FAQ.md +++ b/FAQ.md @@ -380,7 +380,7 @@ You don't need a LAN port on your laptop as long as you can connect over WLAN to ## Is it possible to connect the Blitz over Wifi instead of using a LAN cable? A LAN cable is recommended because it reduces a possible source of error on the network connection side. But how to setup WLAN when you don't have a LAN-Router/Switch available see here: -https://stadicus.github.io/RaspiBolt/raspibolt_20_pi.html#prepare-wifi +https://raspibolt.github.io/raspibolt/raspibolt_20_pi.html#prepare-wifi ## Can I directly connect the RaspiBlitz to my laptop? From 0515d39eab297305c5a1149cf30fe09a4934f6b1 Mon Sep 17 00:00:00 2001 From: Stadicus Date: Thu, 25 Nov 2021 23:52:22 +0100 Subject: [PATCH 22/35] README: update RaspiBolt links (#2716) The RaspiBolt guide has moved, so the links are updated to point to https://raspibolt.github.io/raspibolt/ --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f5fc33801..93517c98a 100644 --- a/README.md +++ b/README.md @@ -295,7 +295,7 @@ For each password please choose unique, single strings, without spaces and speci You can use this [RaspiBlitz Recovery Sheet (PDF)](https://github.com/rootzoll/raspiblitz/raw/v1.7/home.admin/assets/RaspiBlitzRecoverySheet.pdf) to write those passwords down for safe storage and also use it later on for your Seed Words. -*The password A,B,C idea is based on the [RaspiBolt Guide Preparations](https://stadicus.github.io/RaspiBolt/raspibolt_10_preparations.html#write-down-your-passwords) - check out for more background.* +*The password A,B,C idea is based on the [RaspiBolt Guide Preparations](https://raspibolt.github.io/raspibolt/raspibolt_10_preparations.html#write-down-your-passwords) - check out for more background.* First, password A is requested - this is the password which will be used for SSH login and it's also set for the existing users: admin, root, bitcoin & pi. @@ -611,7 +611,7 @@ For details see: https://github.com/lightningequipment/circuitbreaker/blob/maste The RaspiBlitz will automatically unlock the LND wallet upon every start. -This feature is based on https://github.com/Stadicus/guides/blob/master/raspibolt/raspibolt_6A_auto-unlock.md +This feature is based on [https://raspibolt.github.io/raspibolt/raspibolt_6A_auto-unlock.html]. It can be activated under "Services" -> "Auto-unlock LND". We recommend that it be turned on when DynamicDNS is used. @@ -1372,7 +1372,7 @@ Get all details on "How to contribute to RaspiBlitz Development" on this video: Video Tutorial
--watch--> https://www.youtube.com/watch?v=ZVtZepV3OfM -Also get inspired for a deep-dive with the original "[RaspiBolt](https://stadicus.github.io/RaspiBolt/)" tutorial on how to build a lightning node on the RaspberryPi, the base work on which the RaspiBlitz was developed - so much thx to Stadicus :) +Also get inspired for a deep-dive with the original "[RaspiBolt](https://raspibolt.github.io/raspibolt/)" tutorial on how to build a lightning node on the RaspberryPi, the base work on which the RaspiBlitz was developed - so much thx to Stadicus :) Join me on twitter [@rootzoll](https://twitter.com/rootzoll), visit us at an upcoming [#lightninghackday](https://twitter.com/hashtag/LightningHackday?src=hash) or check by one of our bitcoin meetups in Berlin ... every 1st Thursday evening a month at the room77 bar - feel free to buy me a beer with lightning there :) From 2aba9583829e84f1485788277ef98241eec2f131 Mon Sep 17 00:00:00 2001 From: Jai Mistry <33847544+JaiMistry@users.noreply.github.com> Date: Mon, 29 Nov 2021 04:37:01 -0800 Subject: [PATCH 23/35] Remove extra "the" words in FAQ.md (#2736) Found 4 extra instances of the word "the" in FAQ.md --- FAQ.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/FAQ.md b/FAQ.md index c5b80c27f..363822fd3 100644 --- a/FAQ.md +++ b/FAQ.md @@ -343,7 +343,7 @@ Make the fonts smaller until the QR code fits into your (fullscreen) terminal. I ## Why is my bitcoin IP on the display red? -The bitcoin IP is red when the RaspiBlitz detects that it cannot reach the port of bitcoin node from the outside. This means the bitcoin node can peer with other bitcoin nodes, but other bitcoin nodes cannot initiate a peering with you. Don't worry, you don't need a publicly reachable bitcoin node to run a (public) lightning node. If you want to change this however, you need to forward port 8333 on your router to the the RaspiBlitz. How to do this is different on every router. +The bitcoin IP is red when the RaspiBlitz detects that it cannot reach the port of bitcoin node from the outside. This means the bitcoin node can peer with other bitcoin nodes, but other bitcoin nodes cannot initiate a peering with you. Don't worry, you don't need a publicly reachable bitcoin node to run a (public) lightning node. If you want to change this however, you need to forward port 8333 on your router to the RaspiBlitz. How to do this is different on every router. Some routers support a feature called UPnP where devices can automatically request a forwarding to be publicly reachable. By turning on `BTC UPnP` in the main menu `SERVICES` section, you can try if your router supports this feature. @@ -351,7 +351,7 @@ On details how to set port forwarding manually on your router model see: https:/ ## Why is my node address on the display red? -The node address is red when the RaspiBlitz detects that it cannot reach the port of the LND node from the outside - when the device is behind a NAT or firewall of the the router. Your node is not publicly reachable. This means you can peer+openChannel with other public nodes, but other nodes cannot peer+openChannel with you. To change this you need to forward port 9735 on your router to the the RaspiBlitz. How to do this is different on every router. +The node address is red when the RaspiBlitz detects that it cannot reach the port of the LND node from the outside - when the device is behind a NAT or firewall of the router. Your node is not publicly reachable. This means you can peer+openChannel with other public nodes, but other nodes cannot peer+openChannel with you. To change this you need to forward port 9735 on your router to the RaspiBlitz. How to do this is different on every router. Some routers support a feature called UPnP where devices can automatically request a forwarding to be publicly reachable. By turning on `LND UPnP` in the main menu `SERVICES` section, you can try if your router supports this feature. @@ -686,7 +686,7 @@ If you get this error by LND it means that something is wrong with the macaroons Fixing this depends on where you get this error: * If you get it in a mobile wallet, then redo the connection with the RaspiBlitz to get fresh macaroons. -* If you get this from RTL or from the scripts of the SSH menus of the RaspiBlitz, then go to "EXPORT Macacroons and TLS.cert" in SSH main menu and choose the the "RESET Macaroons & TLS" option. +* If you get this from RTL or from the scripts of the SSH menus of the RaspiBlitz, then go to "EXPORT Macacroons and TLS.cert" in SSH main menu and choose the "RESET Macaroons & TLS" option. Also make sure to check again on your power supply - it needs to deliver equal or more then 3A and should deliver a stable current. If you think your HDD is degrading - maybe this is a good time to replace it. See for details the FAQ question: [How can I recover my coins from a failing RaspiBlitz?](FAQ.md#how-can-i-recover-my-coins-from-a-failing-raspiblitz) From 22868f35f9b5a5b7c108a0952c9a59b5974bd77a Mon Sep 17 00:00:00 2001 From: pretyflaco Date: Tue, 30 Nov 2021 13:59:17 +0300 Subject: [PATCH 24/35] Update blitz.debug.sh (#2740) Changed lnd to c-lightning log output for c-lightning node --- home.admin/config.scripts/blitz.debug.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.debug.sh b/home.admin/config.scripts/blitz.debug.sh index e5e2131a0..b93c65bf9 100755 --- a/home.admin/config.scripts/blitz.debug.sh +++ b/home.admin/config.scripts/blitz.debug.sh @@ -87,7 +87,7 @@ if [ "${lightning}" == "cl" ] || [ "${cl}" == "on" ] || [ "${cl}" == "1" ]; then sudo systemctl status lightningd -n2 --no-pager echo echo "*** LAST 30 C-LIGHTNING (MAINNET) INFO LOGS ***" - echo "sudo tail -n 30 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log" + echo "sudo tail -n 30 /home/bitcoin/.lightning/${network}/cl.log" sudo tail -n 30 /home/bitcoin/.lightning/${network}/cl.log else echo "- not activated -" From a500cc7cf2727f9cf1c587fcca8307b72e9c4f66 Mon Sep 17 00:00:00 2001 From: HWWAIT Date: Thu, 9 Dec 2021 13:31:22 +1100 Subject: [PATCH 25/35] Spellcheck Security.md (#2778) Added minor spelling fixes. --- SECURITY.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index cfd1fd76f..31ba18e20 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,12 +1,12 @@ # Security Policy -*NOTE: This document is just a first draft and still under contruction.* +*NOTE: This document is just a first draft and still under construction.* Only use this software with funds you could afford to lose. Especially a lightning wallet that is a hot wallet, which has constant connection to the internet and can be target of exploitation. Just because the software is OpenSource does not mean its free of errors. Especially if you run additional apps, the RaspiBlitz team cannot review all the code of those external projects. -The software is provided "AS IS", without warrenty of any kind. In no event shall the +The software is provided "AS IS", without warranty of any kind. In no event shall the authors or copyright holders be liable for any claim, damages or other liability. [details on legal license](LICENSE.md) @@ -16,7 +16,7 @@ Updates are made only for the latest version. Security patches can be done with `MAINMENU > UPDATE > PATCH` for the current branch in the case of a high risk issue before next release. -The latest version always have the `latest` tag. To make sure you are using the lastest version, run: +The latest version always have the `latest` tag. To make sure you are using the latest version, run: ``` curl -s https://api.github.com/repos/rootzoll/raspiblitz/releases/latest|grep tag_name|head -1|cut -d '"' -f4 ``` @@ -63,12 +63,12 @@ The default is the on-chain lightning wallet - that's the wallet where you norma ## Bitcoin Core Wallet (deactivated by default) -Beside lightning you have a bitcoin core installed. Normally, bitcoin core acts just as a blockchain informational service to the lightning wallet and its internal seperate on-chain wallet is deactivated. +Beside lightning you have a Bitcoin core installed. Normally, Bitcoin core acts just as a blockchain informational service to the lightning wallet and its internal separate on-chain wallet is deactivated. -Some apps (like Fully Noded or JoinMarket) activate the bitcoin core wallet and use it for their own needs. This on-chain balance will not be reflected in the rest of the RaspiBlitz software and is NOT backuped by the seed words from the RaspiBlitz setup. If you make use of the bitcoin core wallet please take care of these funds. +Some apps (like Fully Noded or JoinMarket) activate the Bitcoin core wallet and use it for their own needs. This on-chain balance will not be reflected in the rest of the RaspiBlitz software and is NOT backed up by the seed words from the RaspiBlitz setup. If you make use of the Bitcoin core wallet please take care of these funds. # Off-chain Funds (Lightning Channels) -Please note that there is no perfect backup concept for the funds in your lightning channels yet. We strongly recommend using the `Static Channel Backup` provided by LND and consider off-line location backup of that file to have the best chances to recover Lightning funds in a case of recoverying from a disaster. +Please note that there is no perfect backup concept for the funds in your lightning channels yet. We strongly recommend using the `Static Channel Backup` provided by LND and consider off-line location backup of that file to have the best chances to recover Lightning funds in a case of recovering from a disaster. For more practical information on this topic see: [Backup Channel Funds](README.md#backup-for-on-chain---channel-funds) From 40dd28066f2d6afbfd63f20862b6d1d24cc839e9 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 13 Dec 2021 14:42:41 -0800 Subject: [PATCH 26/35] Updated README header (#2784) Fixed the header for Hex-String --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93517c98a..e0684747a 100644 --- a/README.md +++ b/README.md @@ -938,7 +938,7 @@ Opens an ad-hoc web server so that you can download the files in your local netw Remember with the Admin-Macaroon somebody could take over your node and spend all your funds. Just use as last fallback.* -####### Hex-String +###### Hex-String The Macaroons and TLS.cert files can be copy+pasted as Hex-Strings from RaspiBlitz to any other app that supports that format. If you choose this option, RaspiBlitz will print all the files for you as Hex-String to do so. From d9f7a72b1dd694c2f316b2a3919055ec03c9c2a6 Mon Sep 17 00:00:00 2001 From: openoms Date: Sat, 18 Dec 2021 02:29:57 +0000 Subject: [PATCH 27/35] cl: move the autounlock file to /home/bitcoin/ to fix permission errors in #2812 --- home.admin/99clRepairMenu.sh | 2 +- home.admin/config.scripts/cl.hsmtool.sh | 22 +++++++++---------- .../config.scripts/cl.install-service.sh | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/home.admin/99clRepairMenu.sh b/home.admin/99clRepairMenu.sh index c94588a02..e043a5802 100644 --- a/home.admin/99clRepairMenu.sh +++ b/home.admin/99clRepairMenu.sh @@ -23,7 +23,7 @@ if [ "$(eval echo \$${netprefix}clEncryptedHSM)" = "off" ];then elif [ "$(eval echo \$${netprefix}clEncryptedHSM)" = "on" ];then OPTIONS+=(PASSWORD_C "Change the hsm_secret encryption password") OPTIONS+=(DECRYPT "Decrypt the hsm_secret") - if [ ! -f "/root/.${netprefix}cl.pw" ]; then + if [ ! -f "/home/bitcoin/.${netprefix}cl.pw" ]; then OPTIONS+=(AUTOUNLOCK-ON "Auto-decrypt the hsm_secret after boot") else OPTIONS+=(AUTOUNLOCK-OFF "Do not auto-decrypt the hsm_secret after boot") diff --git a/home.admin/config.scripts/cl.hsmtool.sh b/home.admin/config.scripts/cl.hsmtool.sh index 2e646143d..b74ec083b 100644 --- a/home.admin/config.scripts/cl.hsmtool.sh +++ b/home.admin/config.scripts/cl.hsmtool.sh @@ -3,7 +3,7 @@ # keeps the password in memory between restarts: /dev/shm/.${netprefix}cl.pw # see the reasoning: https://github.com/ElementsProject/lightning#hd-wallet-encryption # does not store the password on disk unless auto-unlock is enabled -# autounlock password is in /root/.${netprefix}cl.pw +# autounlock password is in /home/bitcoin/.${netprefix}cl.pw # command info if [ $# -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]||\ @@ -41,7 +41,7 @@ hsmSecretPath="/home/bitcoin/.lightning/${CLNETWORK}/hsm_secret" passwordFile=/dev/shm/.${netprefix}cl.pw if grep -Eq "${netprefix}clEncryptedHSM=on" /mnt/hdd/raspiblitz.conf;then if grep -Eq "${netprefix}clAutoUnlock=on" /mnt/hdd/raspiblitz.conf;then - passwordFile=/root/${netprefix}cl.pw + passwordFile=/home/bitcoin/${netprefix}cl.pw fi fi @@ -81,7 +81,7 @@ function passwordToFile() { sudo touch $passwordFile sudo chmod 600 $passwordFile sudo chown bitcoin:bitcoin $passwordFile - sudo tee $passwordFile 1>/dev/null < "$data" + sudo -u bitcoin tee $passwordFile 1>/dev/null < "$data" shred "$data";; 1) shred "$data" @@ -103,8 +103,8 @@ function shredPasswordFile() { if [ -f /dev/shm/.${netprefix}cl.pw ];then sudo shred -uvz /dev/shm/.${netprefix}cl.pw fi - if [ -f /root/${netprefix}cl.pw ];then - sudo shred -uvz /root/${netprefix}cl.pw + if [ -f /home/bitcoin/${netprefix}cl.pw ];then + sudo shred -uvz /home/bitcoin/${netprefix}cl.pw fi } @@ -338,10 +338,10 @@ elif [ "$1" = "decrypt" ]; then elif [ "$1" = "autounlock-on" ]; then if grep -Eq "${netprefix}clEncryptedHSM=on" /mnt/hdd/raspiblitz.conf;then - echo "# Moving the password from $passwordFile to /root/.${netprefix}cl.pw" - sudo -u bitcoin mv /dev/shm/.${netprefix}cl.pw /root/.${netprefix}cl.pw + echo "# Moving the password from $passwordFile to /home/bitcoin/.${netprefix}cl.pw" + sudo -u bitcoin mv /dev/shm/.${netprefix}cl.pw /home/bitcoin/.${netprefix}cl.pw else - passwordFile=/root/.${netprefix}cl.pw + passwordFile=/home/bitcoin/.${netprefix}cl.pw passwordToFile fi # setting value in raspiblitz config @@ -351,9 +351,9 @@ elif [ "$1" = "autounlock-on" ]; then echo "# Autounlock is on for C-lightning $CHAIN" elif [ "$1" = "autounlock-off" ]; then - if [ -f /root/${netprefix}cl.pw ];then - sudo cp /root/.${netprefix}cl.pw /dev/shm/.${netprefix}cl.pw - sudo shred -uzv /root/.${netprefix}cl.pw + if [ -f /home/bitcoin/${netprefix}cl.pw ];then + sudo cp /home/bitcoin/.${netprefix}cl.pw /dev/shm/.${netprefix}cl.pw + sudo shred -uzv /home/bitcoin/.${netprefix}cl.pw sudo chmod 600 /dev/shm/.${netprefix}cl.pw sudo chown bitcoin:bitcoin /dev/shm/.${netprefix}cl.pw fi diff --git a/home.admin/config.scripts/cl.install-service.sh b/home.admin/config.scripts/cl.install-service.sh index f1a96a7c1..a2bca143f 100644 --- a/home.admin/config.scripts/cl.install-service.sh +++ b/home.admin/config.scripts/cl.install-service.sh @@ -36,7 +36,7 @@ fi if grep -Eq "${netprefix}clEncryptedHSM=on" /mnt/hdd/raspiblitz.conf;then if grep -Eq "${netprefix}clAutoUnlock=on" /mnt/hdd/raspiblitz.conf;then - passwordFile=/root/.${netprefix}cl.pw + passwordFile=/home/bitcoin/.${netprefix}cl.pw else passwordFile=/dev/shm/.${netprefix}cl.pw fi From d575aec1306dcd343d706557573ab7105c874d24 Mon Sep 17 00:00:00 2001 From: openoms Date: Sat, 18 Dec 2021 02:34:24 +0000 Subject: [PATCH 28/35] FAQ.cl: correct rescan intructions --- FAQ.cl.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/FAQ.cl.md b/FAQ.cl.md index 9b4bb9b43..afb7aa806 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -105,7 +105,7 @@ or with the alias: `cllog` ### All possible config settings * can be shown by running: `lightningd --help` - * Place the settings 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 A bitcoin lightning daemon (default values shown for network: bitcoin). @@ -596,9 +596,20 @@ To display it as text: ``` sudo systemctl stop lightningd ``` + An ungraceful method: + ``` + sudo killall ligthningd * Rescan from the block 700000 ``` - sudo -u bitcoin lightningd --rescan=700000 + sudo -u bitcoin lightningd --rescan -700000 --log-level debug + ``` +* Rescan the last 1000 blocks: + ``` + sudo -u bitcoin lightningd --rescan 1000 --log-level debug + ``` +* can monitor in a new window using the shortcut: + ``` + cllog ``` ## Update From 6cd17ad27a901cc852fc734bd23500c02df02d57 Mon Sep 17 00:00:00 2001 From: openoms Date: Sat, 18 Dec 2021 02:52:25 +0000 Subject: [PATCH 29/35] cl.hsmtool: correct passwordfile name everywhere --- home.admin/config.scripts/cl.hsmtool.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home.admin/config.scripts/cl.hsmtool.sh b/home.admin/config.scripts/cl.hsmtool.sh index b74ec083b..9da869c9f 100644 --- a/home.admin/config.scripts/cl.hsmtool.sh +++ b/home.admin/config.scripts/cl.hsmtool.sh @@ -41,7 +41,7 @@ hsmSecretPath="/home/bitcoin/.lightning/${CLNETWORK}/hsm_secret" passwordFile=/dev/shm/.${netprefix}cl.pw if grep -Eq "${netprefix}clEncryptedHSM=on" /mnt/hdd/raspiblitz.conf;then if grep -Eq "${netprefix}clAutoUnlock=on" /mnt/hdd/raspiblitz.conf;then - passwordFile=/home/bitcoin/${netprefix}cl.pw + passwordFile=/home/bitcoin/.${netprefix}cl.pw fi fi @@ -103,8 +103,8 @@ function shredPasswordFile() { if [ -f /dev/shm/.${netprefix}cl.pw ];then sudo shred -uvz /dev/shm/.${netprefix}cl.pw fi - if [ -f /home/bitcoin/${netprefix}cl.pw ];then - sudo shred -uvz /home/bitcoin/${netprefix}cl.pw + if [ -f /home/bitcoin/.${netprefix}cl.pw ];then + sudo shred -uvz /home/bitcoin/.${netprefix}cl.pw fi } @@ -351,7 +351,7 @@ elif [ "$1" = "autounlock-on" ]; then echo "# Autounlock is on for C-lightning $CHAIN" elif [ "$1" = "autounlock-off" ]; then - if [ -f /home/bitcoin/${netprefix}cl.pw ];then + if [ -f /home/bitcoin/.${netprefix}cl.pw ];then sudo cp /home/bitcoin/.${netprefix}cl.pw /dev/shm/.${netprefix}cl.pw sudo shred -uzv /home/bitcoin/.${netprefix}cl.pw sudo chmod 600 /dev/shm/.${netprefix}cl.pw From 5e6ca681e44256d05f021507e73c778b183b0cc0 Mon Sep 17 00:00:00 2001 From: Tracachang <54238558+Tracachang@users.noreply.github.com> Date: Sat, 8 Jan 2022 19:04:36 +0000 Subject: [PATCH 30/35] Update FAQ.cl.md (#2872) typo error --- FAQ.cl.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FAQ.cl.md b/FAQ.cl.md index afb7aa806..ae3491dc8 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -312,7 +312,7 @@ https://github.com/ZmnSCPxj/clboss#clboss-status ### Feeadjuster * Install: -`config.scripts/cl-plugin.feedadjuster.sh on` +`config.scripts/cl-plugin.feeadjuster.sh on` * to set the default fees add to the C-lightning `config` file: ``` @@ -809,4 +809,4 @@ reckless -> if you just want to update to the latest release published on C-lightning GitHub releases (RC or final) without any testing or security checks. -``` \ No newline at end of file +``` From fd4256223c4ada1e1b4fdd8794792b1208514188 Mon Sep 17 00:00:00 2001 From: JayDeLux Date: Thu, 13 Jan 2022 23:41:06 +0100 Subject: [PATCH 31/35] Minor typo in text (#2883) Minor typo in text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0684747a..208cef118 100644 --- a/README.md +++ b/README.md @@ -981,7 +981,7 @@ To try out the IP2TOR tunnel choose in `MAINMENU` the extra menu point of the Se If you want a web service, like BTCPay Server or LNbits, to be available to the outside internet (like with IP2TOR) people expect you to offer an HTTPS address so that the communication between the client and your RaspiBlitz is encrypted. You could use the self-signed HTTPS certificate that RaspiBlitz is offering you, but this will give users Security Warnings in their browser and is not very user friendly. -That's where you can use a LetsEncrypt Subscription to get a free valid HTTPS certificate that is excepted without warning from almost all common browsers +That's where you can use a LetsEncrypt Subscription to get a free valid HTTPS certificate that is accepted without warning by most browsers. Because you also need a domain name for that you will need to open a free account, the following are presently supported, would be good to add more with the help of the community: [DuckDNS.org](https://www.duckdns.org) From 4878730baba75ee3019a95d95cbc880f502a017d Mon Sep 17 00:00:00 2001 From: openoms Date: Mon, 17 Jan 2022 13:34:40 +0000 Subject: [PATCH 32/35] FAQ.cl: add manual instructions for hsmtool #2897 --- FAQ.cl.md | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/FAQ.cl.md b/FAQ.cl.md index ae3491dc8..33d5bdd4e 100644 --- a/FAQ.cl.md +++ b/FAQ.cl.md @@ -30,6 +30,8 @@ - [Backups](#backups) - [Seed](#seed) - [How to display the hsm_secret in a human-readable format?](#how-to-display-the-hsm_secret-in-a-human-readable-format) + - [How to test the seedwords?](#how-to-test-the-seedwords) + - [How to restore the hsm_secret from text?](#how-to-restore-the-hsm_secret-from-text) - [Channel database](#channel-database) - [Recovery](#recovery) - [Recover from a cl-rescue file](#recover-from-a-cl-rescue-file) @@ -570,11 +572,44 @@ Will need to pay through a peer which supports the onion messages which means yo * Show manually with: `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. + ### How to display the hsm_secret in a human-readable format? -* If there is no seed available it is best to save the hsm_secret as a file with `scp`. -To display it as text: +* If there is no seed available it is best to save the hsm_secret as a file with `scp` or note down the alphanumeric characters in the two line displayed with: ``` - sudo cat /home/bitcoin/.lightning/bitcoin/hsm_secret | xxd + sudo xxd /home/bitcoin/.lightning/bitcoin/hsm_secret + ``` + +### How to test the seedwords? +* The manual process: + ``` + # display the hsm_secret in hex: + sudo -u bitcoin xxd /home/bitcoin/.lightning/bitcoin/hsm_secret + + # input seed and generate an hsm_secret in a temporary location: + lightning-hsmtool generatehsm /dev/shm/test_hsm_secret + + # compare + xxd /dev/shm/test_hsm_secret + + # delete temp file + srm /dev/shm/test_hsm_secret + ``` + +### How to restore the hsm_secret from text? +* example from https://lightning.readthedocs.io/BACKUP.html#backing-up-your-c-lightning-node: + ``` + cat > hsm_secret_hex.txt < hsm_secret + + # move in place (will overwrite! - remove the ##) + ## sudo mv /home/bitcoin/.lightning/bitcoin/hsm_secret + + # fix the owner and tighten permissions + sudo chown bitcoin:bitcoin /home/bitcoin/.lightning/bitcoin/hsm_secret + chmod 0400 /home/bitcoin/.lightning/bitcoin/hsm_secret ``` ### Channel database From 343e7b1592d69615c5435555c490fea819e6f0bc Mon Sep 17 00:00:00 2001 From: Anthony Potdevin <31413433+apotdevin@users.noreply.github.com> Date: Fri, 28 Jan 2022 19:24:52 +0100 Subject: [PATCH 33/35] Update bonus.thunderhub.sh (#2916) In the latest release there is a breaking change. To run on a different port you now have to specify an env var --- home.admin/config.scripts/bonus.thunderhub.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/bonus.thunderhub.sh b/home.admin/config.scripts/bonus.thunderhub.sh index 63e163eb6..a2e30417d 100755 --- a/home.admin/config.scripts/bonus.thunderhub.sh +++ b/home.admin/config.scripts/bonus.thunderhub.sh @@ -121,6 +121,7 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then # ----------- LOG_LEVEL='debug' TOR_PROXY_SERVER='socks://127.0.0.1:9050' +PORT=3010 # ----------- # Interface Configs @@ -216,7 +217,7 @@ After=lnd.service [Service] WorkingDirectory=/home/thunderhub/thunderhub -ExecStart=/usr/bin/npm run start -- -p 3010 +ExecStart=/usr/bin/npm run start User=thunderhub Restart=always TimeoutSec=120 From d3f042f48ad1a50f3b3ad43f1479e6056f98a28b Mon Sep 17 00:00:00 2001 From: Marnix <93143998+MarnixCroes@users.noreply.github.com> Date: Sun, 30 Jan 2022 16:12:57 +0000 Subject: [PATCH 34/35] Update LICENSE (#2918) Update LICENSE to 2022 --- LICENSE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index c4677f01a..be546fc4a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 The RaspiBlitz developers +Copyright (c) 2018-2022 The RaspiBlitz developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file +THE SOFTWARE. From 87b210012f0d6ef71fbdba53b8c31a0daa1bf434 Mon Sep 17 00:00:00 2001 From: Bitcoin Runners <51644913+bitcoinrunners@users.noreply.github.com> Date: Wed, 16 Feb 2022 23:07:05 +0000 Subject: [PATCH 35/35] Update FAQ.md with minor typo correction. (#2962) --- FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FAQ.md b/FAQ.md index 363822fd3..d45732c54 100644 --- a/FAQ.md +++ b/FAQ.md @@ -132,7 +132,7 @@ curl https://keybase.io/rootzoll/pgp_keys.asc | gpg --import Next, download the "signature file" for the SD card image. It's the same download link as for the image file - just added a `.sig` at the end. You should also always find the download link for the signature file in the README right below the image download link following the `SIGNATURE` link. -If you know have all the three elements needed - the imported public key, the image signature and the image file itself - you can verify the download with: +If you now have all the three elements needed - the imported public key, the image signature and the image file itself - you can verify the download with: ``` gpg --verify [SIGNATURE-FILE] [IMAGE-FILE]