diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f8c4379b4..194c59204 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,9 @@ # Community development + Everybody is welcome to join, improve, and extend the RaspiBlitz - it's a work in progress. Check the issues if you wanna help out or add new ideas. You can find the scripts used for RaspiBlitz interactions on the device at /home/admin or in this Git repo's subfolder home.admin. ## Understanding Blitz project + RaspiBlitz is inspired by the [RaspiBolt guide](https://raspibolt.github.io/raspibolt/). Tutorial on how to build a lightning node on the RaspberryPi. So much thx to Stadicus :) To start your Deep Dive into the RaspiBlitz project, watch [this video](https://www.youtube.com/watch?v=QXUGg45CWLo). @@ -12,23 +14,28 @@ To start your Deep Dive into the RaspiBlitz project, watch [this video](https:// * Be sure to contribute back, every little help is wanted. ## Getting started + Get all details on "How to contribute to RaspiBlitz Development" on [this video](https://www.youtube.com/watch?v=ZVtZepV3OfM). ### Levels + All levels are important. Even advanced users help on basic levels for other Blitzers. Every help is welcome. Not all enhancements needs to go through all levels, these are levels of difficulty, scalability depends on your skills. #### Basic + 1. **Reporting user side** --> Open an issue to indicate a problem or make a feature request. 1. **Community support** --> Solve other people issues. 1. **Good first issue** --> The purpose of the good first issue label is to highlight which issues are suitable for a new contributor without a deep understanding of the codebase. #### Medium + 1. **Sovereignty** --> Fork the repo to have the changes controlled by you. 1. **Experiment** --> Try things out on your RaspiBlitz. 1. **Executable** --> Turn your experiment into a basic shell script. #### Advanced + 1. **Config script** --> Integrate your executable into the RaspiBlitz environment. 1. **SSH-GUI** --> Make it easier for others to use your config script. 1. **WEB-GUI** --> Turn your feature into customer ready diff --git a/FAQ.cl.md b/FAQ.cl.md deleted file mode 100644 index 26256c4ae..000000000 --- a/FAQ.cl.md +++ /dev/null @@ -1,1046 +0,0 @@ - -# Core Lightning on the RaspiBlitz FAQ - - -## Table of Contents -- [Common questions about the different Lightning Network implementations](#common-questions-about-the-different-lightning-network-implementations) - - [Can LND and CLN nodes open channels to each other and route payments?](#can-lnd-and-cln-nodes-open-channels-to-each-other-and-route-payments) - - [Can I run LND and CLN connected to the same node?](#can-i-run-lnd-and-cln-connected-to-the-same-node) - - [Can I convert an LND node to CLN (or the opposite)?](#can-i-convert-an-lnd-node-to-cln-or-the-opposite) - - [Is there a table to quickly compare LND and CLN?](#is-there-a-table-to-quickly-compare-lnd-and-cln) -- [CLN official documentation and support channels](#cln-official-documentation-and-support-channels) -- [Commands and aliases](#commands-and-aliases) -- [Directories](#directories) -- [Config file](#config-file) - - [Default values](#default-values) -- [CLN cheatsheet](#cln-cheatsheet) -- [Plug-ins](#plug-ins) - - [General info](#general-info) - - [Directories](#directories-1) - - [Implemented plugins](#implemented-plugins) - - [Add a custom plugin](#add-a-custom-plugin) - - [CLBOSS](#clboss) - - [Feeadjuster](#feeadjuster) - - [Dual funded channels](#dual-funded-channels) - - [Reading](#reading) - - [Setting up](#setting-up) - - [Open a dual funded channel](#open-a-dual-funded-channel) - - [Fundchannel syntax](#fundchannel-syntax) - - [Multifundchannel syntax](#multifundchannel-syntax) - - [Offers](#offers) - - [Poncho - hosted channels](#poncho---hosted-channels) -- [Feature bits](#feature-bits) -- [Testnets](#testnets) -- [Backups](#backups) - - [Backup strategy](#backup-strategy) - - [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) - - [Recover from a seed](#recover-from-a-seed) - - [Emergency recovery in case of lost channel states](#emergency-recovery-in-case-of-lost-channel-states) - - [Restore a CLN node from the database backup on the SDcard](#restore-a-cln-node-from-the-database-backup-on-the-sdcard) - - [Rescan the chain after restoring a used CLN wallet](#rescan-the-chain-after-restoring-a-used-cln-wallet) - - [Guesstoremote to recover funds from force-closed channels](#guesstoremote-to-recover-funds-from-force-closed-channels) -- [sqlite3 queries](#sqlite3-queries) -- [Extract the private and public key from the hsm\_secret file](#extract-the-private-and-public-key-from-the-hsm_secret-file) -- [Update](#update) - - [Update to a new CLN release](#update-to-a-new-cln-release) - - [Experimental update to the latest master](#experimental-update-to-the-latest-master) -- [sqlite3 queries](#sqlite3-queries-1) -- [Script file help list](#script-file-help-list) -- [All possible config options](#all-possible-config-options) - -## Common questions about the different Lightning Network implementations - -### Can LND and CLN nodes open channels to each other and route payments? -* Yes, all [BOLT specification](https://github.com/lightningnetwork/lightning-rfc) compliant implementations can open channels to each other and route payments. - -### Can I run LND and CLN connected to the same node? -* Yes, both can run parallel on a RaspiBlitz and even have channels with each other. - -### Can I convert an LND node to CLN (or the opposite)? -* No, currently there are no tools available to convert between the databases storing the channel states. -The channels would need to be closed to use the same funds in an other node. - -### Is there a table to quickly compare LND and CLN? -* see [github.com/openoms/lightning-node-management/blob/master/node-types/comparison.md](https://github.com/openoms/lightning-node-management/blob/master/node-types/comparison.md) - ---- - -## CLN official documentation and support channels -* https://lightning.readthedocs.io/ -* https://github.com/ElementsProject/lightning -* Telegram: https://t.me/lightningd -* Discord: https://discord.gg/YGdpyj2aXj -* IRC: #c-lightning on libera.chat or https://matrix.to/#/#c-lightning:libera.chat -## Commands and aliases -* Check if the CLN daemon is running: - ``` - sudo systemctl status lightningd - ``` -* Follow it's system output for debugging: - ``` - sudo journalctl -fu lightningd - ``` -* The logs can be accessed in the menu `SYSTEM` - `CLLOG` -or with the alias: `cllog` -* The frequently used commands are shortened with alisases. Check them with the command `alias`: - ``` - alias cl='sudo -u bitcoin /usr/local/bin/lightning-cli --conf=/home/bitcoin/.lightning/config' - 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` -* and symlinked to: -`/home/bitcoin/.lightningd` - -## Config file -* Edit in the menu `SYSTEM` - `CLNCONF` or use the alias `clconf` - -### Default values -* on the RaspiBlitz for mainnet - ``` - 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 - ``` -* find [all the possible config options](#all-possible-config-options) below. - -## CLN cheatsheet - - -## Plug-ins - -### General info -* https://lightning.readthedocs.io/PLUGINS.html#a-day-in-the-life-of-a-plugin -* https://github.com/lightningd/plugins/ - -### Directories -* The plugins are installed to: -`/home/bitcoin/cl-plugins-available` -* and symlinked to: -`/home/bitcoin/cl-plugins-enabled` -* All plugins in the `/home/bitcoin/cl-plugins-enabled` directory are loaded automatically as set in the config file: `/home/bitcoin/.lightningd/config` - -### Implemented plugins -* summary -* sparko -* [CLBOSS](#clboss) -* [feeadjuster](#feeadjuster) - -### Add a custom plugin -* Place the plugin in the `/home/bitcoin/cl-plugins-enabled` directory -* Make sure it is owned by the `bitcoin` user and is executable: - ``` - sudo chown bitcoin:bitcoin /home/bitcoin/cl-plugins-enabled/PLUGIN_NAME - sudo chmod +x /home/bitcoin/cl-plugins-enabled/PLUGIN_NAME - ``` -* start with - ``` - lightning-cli plugin start /home/bitcoin/cl-plugins-enabled/PLUGIN_NAME - ``` -* or to load it automatically on restart: - ``` - sudo systemctl restart lightningd - ``` - From the directory `/home/bitcoin/cl-plugins-enabled` it will load auomatically after restarts. -* To just load it run it once store in (and start from): - `/home/bitcoin/cl-plugins-available/` - -### CLBOSS -A plugin for automatic LN node management. -CLBOSS only requires to have funds deposited to the onchain wallet of CLN. -The recommended amount to start is ~ 10 million satoshis (0.1 BTC). - -It does automatically: - -* generate outbound capacity - opens channels -* generate inbound capacity - submarine swaps through the boltz.exchange API -* aware of onchain fees and mempool through CLN and makes transactions when fees are low -* manages rebalancing - performs probing -* closes bad channels (inactive or low traffic) - this function needs to activated manually - -Overall it is a tool which makes users able to send and receive lightning payments with minimal interaction, basically setting up a routing node by itself. - -The transactions made by CLBOSS does cost money and running it requires a fair amount of trust in the (fully open-source - MIT) code. -Neither the CLBOSS nor the RaspiBlitz developers can take responsibility for lost sats, use at your own discretion! - -* Activate it in the menu - `SETTINGS` - `-CL CLBOSS` -* Discussion: https://github.com/rootzoll/raspiblitz/issues/2490 -* Advanced usage -https://github.com/ZmnSCPxj/clboss#clboss-status -* Stopping CLBOSS will leave the node in the last state. No channels will be closed or funds removed when CLBOSS is uninstalled. -* Check the running version: - ``` - /home/bitcoin/cl-plugins-enabled/clboss --version - ``` - -### Feeadjuster - -* Install: -`config.scripts/cl-plugin.feeadjuster.sh on` - -* to set the default fees add to the CLN config file (`clconf`) - ``` - fee-base=BASEFEE_IN_MILLISATS - fee-per-satoshi=PPM_FEE_IN_SATS - ``` - -* example feeadjuster options - ``` - fee-base=0 - fee-per-satoshi=200 - feeadjuster-imbalance=0.2 - feeadjuster-threshold=0.10 - feeadjuster-threshold-abs=0.01btc - feeadjuster-enough-liquidity=1000000000msat - feeadjuster-deactivate-fee-update - feeadjuster-adjustment-method=hard - ``` -* effect displayed in the logs (`cllog`) - ``` - plugin-feeadjuster.py: - Plugin feeadjuster initialized (0 base / 200 ppm) with an imbalance of 20%/80%, - update_threshold: 10%, update_threshold_abs: 1000000000msat, - enough_liquidity: 1000000000msat, deactivate_fuzz: None, - forward_event_subscription: False, adjustment_method: get_ratio_hard, - fee_strategy: get_fees_global, listchannels_by_dst: True - ``` - -* more options for the feeadjuster to be set in the CLN config can be seen in the [code](https://github.com/lightningd/plugins/blob/master/feeadjuster/feeadjuster.py#L323) - -* start the feeadjuster - ``` - cl plugin start /home/bitcoin/cl-plugins-available/plugins/feeadjuster/feeadjuster.py - ``` -* stop (best to run only periodically) - ``` - cl plugin stop /home/bitcoin/cl-plugins-available/plugins/feeadjuster/feeadjuster.py - ``` -* Can use menu - `CL` - `SUEZ` to visualize the channel balances and fee settings -* check the list of base fees - ``` - cl listpeers | grep fee_base_msat - ``` -* check the list of proportional fees - ``` - cl listpeers | grep fee_proportional_millionths - ``` -* set the fees to the defaults - ``` - cl setchannelfee all - ``` - -### Dual funded channels -#### Reading -* https://medium.com/blockstream/c-lightning-opens-first-dual-funded-mainnet-lightning-channel-ada6b32a527c -* https://medium.com/blockstream/setting-up-liquidity-ads-in-c-lightning-54e4c59c091d -* https://twitter.com/niftynei/status/1389328732377255938 -* lightning-rfc PR: https://github.com/lightningnetwork/lightning-rfc/pull/851/files -* represented by the feature bits 28/29 - -#### Setting up -* activate the feature on your node: -Type: `clconf` or use the menu `SYSTEM` - `CLCONF`. -Add the line: - ``` - experimental-dual-fund - ``` - Save and restart CLN. - -* set up a liquidity ad: - ``` - lightning-cli funderupdate -k policy=match policy_mod=100 - ``` - or set in the config for example - see the meaning of each line in https://medium.com/blockstream/setting-up-liquidity-ads-in-c-lightning-54e4c59c091d : - - ``` - experimental-dual-fund - funder-policy=match - funder-policy-mod=100 - lease-fee-base-msat=500sat - lease-fee-basis=50 - channel-fee-max-base-msat=100sat - channel-fee-max-proportional-thousandths=2 - ``` -* check the settings used currently on your node: - ``` - lightning-cli funderupdate - ``` -* check your advertised settings (needs some minutes to appear): - ``` - lightning-cli listnodes $(lightning-cli getinfo | jq .id) - ``` - -#### Open a dual funded channel -* check if a node has onchain liquidity on offer: - ``` - lightning-cli listnodes nodeid - ``` - - Example: - ``` - lightning-cli listnodes 02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636 - ``` -* list all nodes known in the graph with active offers: - ``` - lightning-cli listnodes | grep option_will_fund -B20 -A7 - ``` -* note the node `id` and `compact_lease` - -* connect to the node - ``` - lightning-cli connect nodeID@IP_or.onion - ``` -#### Fundchannel syntax -* the amount is the own funds in the wallet contributed -use equal amounts to have a balanced channel from start -the amounts can be specified in `sat` or `btc` - ``` - lightning-cli fundchannel -k id=NODE_ID amount=OWN_AMOUNTsat request_amt=PEER_CONTRIBUTION_AMOUNTsat compact_lease=COMPACT_LEASE - ``` - It can fail if the offer changed or there are not enough funds available on either side. - -* open a dual funded channel with a chosen utxo and miner feerate -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:INDEX_NUMBER"]' -k id=NODE_ID amount=OWN_AMOUNTsat request_amt=PEER_CONTRIBUTION_AMOUNTsat compact_lease=COMPACT_LEASE - ``` - -#### Multifundchannel syntax -* discussed in https://github.com/ElementsProject/lightning/issues/4642#issuecomment-1149657371 -* see a good format (json autoformatting tools help - like `CTRL`+`SHIFT`+`i` in VSCode): - ``` - ₿ lightning-cli multifundchannel '[ - { - "id": "nodeID1", - "amount": "amount_in_sats" - }, - { - "id": "nodeID2", - "amount": "amount_in_sats" - }, - { - "id": "nodeID3", - "amount": "amount_in_sats" - }, - { - "id": "nodeID4", - "amount": "amount_in_sats", - } - ]' 1000perkb - ``` - -* The returned output: - ``` - { - "tx": "RAW............TX", - "txid": "TX................ID", - "channel_ids": [ - { - "id": "nodeID1", - "channel_id": "CHANNEL_ID2", - "outnum": 3 - }, - { - "id": "nodeID2", - "channel_id": "CHANNEL_ID1", - "outnum": 4 - }, - { - "id": "nodeID3", - "channel_id": "CHANNEL_ID4", - "outnum": 1 - }, - { - "id": "nodeID4", - "channel_id": "CHANNEL_ID3", - "outnum": 2 - } - ], - "failed": [] - } - ``` - -### Offers -* Details at bolt12.org -* Create an offer to receive payments: -https://lightning.readthedocs.io/lightning-offer.7.html - ``` - lightning-cli offer amount description [vendor] [label] [quantity_min] [quantity_max] [absolute_expiry] [recurrence] [recurrence_base] [recurrence_paywindow] [recurrence_limit] [single_use] - ``` -* Example: -Create a reusable offer which can be paid with any amount for LN tips using a fixed string. - ``` - lightning-cli offer any tip - ``` - -* Create an offer to send payments: -https://lightning.readthedocs.io/lightning-offerout.7.html - ``` - lightning-cli offerout amount description [vendor] [label] [absolute_expiry] [refund_for] - ``` -* Fetch an invoice to pay an offer: -https://lightning.readthedocs.io/lightning-fetchinvoice.7.html -Will need at least one peer which supports onion the messages. For example: - ``` - lightning-cli connect 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605@128.199.202.168:9735 - ``` -* Then use the command to fetch the BOLT12 invoice: - ``` - lightning-cli fetchinvoice offer [msatoshi] [quantity] [recurrence_counter] [recurrence_start] [recurrence_label] [timeout] [payer_note] - ``` -* decode a BOLT12 invoice: - ``` - lightning-cli decode bolt12_invoice - ``` -* pay a a BOLT12 invoice: -Will need to pay through a peer which supports the onion messages which means you need at least one channel with such a node. - ``` - lightning-cli pay bolt12_invoice - ``` -* see if there is a new invoice is paid with: - ``` - lightning-cli listinvoices - ``` - The `pay_index` will increase as the offer gets reused. - -### Poncho - hosted channels -* -* - -## Feature bits -* -* Convert the hex number from `lightning-cli listpeers` to binary: 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 - ``` - # alias: - tcl | tclconf | tcllog - - # daemon service name: - tlightningd - - # config file: - /home/bitcoin/.lightningd/testnet/config - - # plugin directory: - /home/bitcoin/tcl-plugins-enabled - ``` -* Signet - ``` - # aliases: - scl | sclconf | scllog - - # daemon service name: - slightningd - - # config file: - /home/bitcoin/.lightningd/signet/config - - # plugin directory: - /home/bitcoin/scl-plugins-enabled - ``` - -## Backups -* > -* General details: - -### Backup strategy -* discussed in - -* store your seed (or the `hsm_secret` HEX) as text. -* the channel database (`lightningd.sqlite3`) is replicated to the SDcard real-time. -* can make a cl-rescue file from time-to-time so you have a backup of the onchain wallet (`hsm_secret` - generated from the seed) and the channel database (`lightningd.sqlite3` - can be restored as a last resort - will trigger force closes with the peers). - -* A future CLN version will have an SCB like functionality, but will be stored automatically with the peers (encrypted over LN), see the PR: [ElementsProject/lightning#5361](https://github.com/ElementsProject/lightning/pull/5361) - -### 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 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 CLN 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` or note down the alphanumeric characters in the two line displayed with: - ``` - 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 -* 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 -* or use the manual commands - ``` - # stop CLN - sudo systemctl stop lightningd - - # change to the bitcoin user - sudo su - bitcoin - - # generate the hsm_secret in temporary directory from your CLN seed words (follow the instructions) - lightning-hsmtool generatehsm /dev/shm/hsm_secret - - # backup your old hsm_secret and channel database - mkdir /home/bitcoin/.lightning/bitcoin/old_node - mv /home/bitcoin/.lightning/bitcoin/** /home/bitcoin/.lightning/bitcoin/old_node/ - - # move the new hsm_secret in place - mv /dev/shm/hsm_secret /home/bitcoin/.lightning/bitcoin/ - - # back to admin - exit - - # start lightningd - sudo systemctl start lightningd - - # show the logs - cllog - ``` - -### Emergency recovery in case of lost channel states - -* blogpost: -* demo video: https://youtu.be/zBmEieZuS8Q -* manpage: - ``` - lightning-cli help emergencyrecover - ``` - -1. [Restore the hsm_secret (onchain wallet keys) from seed](#recover-from-a-seed) (or hex). - * There is no need to wait for the (few hours) rescan to finish, but can follow it any time with: - ``` - cllog - ``` -1. Upload and copy the emergency.recover file in place - - * upload the file with scp: - ``` - scp hsm_secret emergency.recover admin@RASPIBLITZ_IP:~/ - ``` - * copy it from `/home/admin/`: - ``` - sudo cp /home/admin/emergency.recover /home/bitcoin/.lightning/bitcoin/ - sudo chown bitcoin:bitcoin /home/bitcoin/.lightning/bitcoin/emergency.recover - ``` -1. Recover - - * run (as admin or bitcoin user): - ``` - lightning-cli emergencyrecover - ``` - * a list of channelID-s should be returned if it worked: - ``` - { - "stubs": [ - "................", - ] - } - ``` -1. See more data about the recovered funds and channels - ``` - lightning-cli listfunds - lightning-cli listpeers - ``` - * List the funding txid-s: - ``` - lightning-cli listfunds | jq -r '.channels[] | .funding_txid' - ``` - Can check the txid-s in a mempool explorer. If one is spent that channel is already closed. - -### Restore a CLN node from the database backup on the SDcard -* https://gist.github.com/openoms/3516cd8f393d69d52f858c3d47c9e469 - -### Rescan the chain after restoring a used CLN wallet -* automatically done when using `SEEDRESTORE` -* controlled by the entry in the cln config file -* can use the `menu` -> `REPAIR` -> `REPAIR-CL` -> `RESCAN` option -* or follow the manual process: - - ``` - # stop `lightningd`: - sudo systemctl stop lightningd - - # the ungraceful method: - sudo killall ligthningd - - # Rescan from the block 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 - ``` - -### Guesstoremote to recover funds from force-closed channels -* - ``` - $ man lightning-hsmtool - guesstoremote p2wpkh node_id max_channel_dbid hsm_secret [password] - Brute-force the private key to our funds from a remote unilateral close of a channel, in a case where we have lost all database data except for our hsm_secret. The peer must be the one to close the channel (and the funds will remain unrecoverable until the channel is closed). max_channel_dbid is your own guess on what the channel_dbid was, or at least the maximum possible value, and is usually no greater than the number of channels that the node has ever had. Specify password if the hsm_secret is encrypted. - ``` -* Usage on the RaspiBlitz (example for mainnet): - ``` - sudo -u bitcoin lightning-hsmtool guesstoremote p2wpkh-ADDRESS-bc1... PEER_NODE_ID 5000 /home/bitcoin/.lightning/bitcoin/hsm_secret - ``` -* The `p2wpkh-ADDRESS-bc1...` must a be a non-timelocked output. Shows with `OP_PUSHBYTES_20` in block explorers. -* The `max_channel_dbid` = 5000 is usually plenty, can set any higher number -* If the `hsm_secret` is encrypted give the password on the end - -* Output if unsuccessful (the private key is not known): - ``` - Could not find any basepoint matching the provided witness programme. - Are you sure that the channel used `option_static_remotekey` ? - *** stack smashing detected ***: terminated - Aborted - ``` -* Output if successful: - ``` - bech32 : bc1q...................................... - pubkey hash : 0123456789abcdef0123456789abcdef01234567 - pubkey : 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01 - privkey : 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef - ``` -* To import the private key of the address in Electrum Wallet will need to convert to base58 - ``` - git clone https://github.com/matja/bitcoin-tool - cd bitcoin-tool - make test - - ./bitcoin-tool \ - --network bitcoin \ - --input-type private-key \ - --input-format hex \ - --input PASTE_THE_privkey_HERE \ - --output-type private-key-wif \ - --output-format base58check \ - --public-key-compression compressed - ``` -* Example output: - ``` - KwFvTne98E1t3mTNAr8pKx67eUzFJWdSNPqPSfxMEtrueW7PcQzL - ``` -* To import to the Electrum Wallet use the `p2wpkh:` prefix: - - ``` - p2wpkh:KxacygL6usxP8T9cFSM2SRW5QsEg66bUQUEn997UWwCZANEe7NLT - ``` - -## 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' - ``` - -## Extract the private and public key from the hsm_secret file - - -## Update -### Update to a new CLN release -* See the tagged releases by the CLN 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 command to use the built-in script to update to the last 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 - ``` - -## 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/ - ls cl*.sh > clScriptList.txt - sed -i 's#^#./#g' clScriptList.txt - sed -i 's#.sh#.sh -h#g' clScriptList.txt - bash -x clScriptList.txt - rm clScriptList.txt - ``` - - ``` - + ./cl.backup.sh -h - - --------------------------------------------------- - CL RESCUE FILE (tar.gz of complete cl directory) - --------------------------------------------------- - cl.backup.sh cl-export - cl.backup.sh cl-export-gui - cl.backup.sh cl-import [file] - cl.backup.sh cl-import-gui [setup|production] [?resultfile] - --------------------------------------------------- - SEED WORDS - --------------------------------------------------- - cl.backup.sh seed-export-gui [clseeddata] - cl.backup.sh seed-import-gui [resultfile] - --------------------------------------------------- - RECOVERY - --------------------------------------------------- - cl.backup.sh [mainnet|signet|testnet] recoverymode [on|off|status] <-rescanbockheight|rescandepth> - - + ./cl.check.sh -h - - # script to check CL states - # cl.check.sh basic-setup - # cl.check.sh prestart [mainnet|testnet|signet] - - + ./cl.hsmtool.sh -h - - Create new wallet or import seed - Unlock/lock, encrypt, decrypt, set autounlock or change password for the hsm_secret - - Usage: - Create new wallet: - cl.hsmtool.sh [new] [mainnet|testnet|signet] [?seedpassword] - cl.hsmtool.sh [new-force] [mainnet|testnet|signet] [?seedpassword] - There will be no seedpassword(passphrase) used by default - new-force will backup the old wallet and will work without interaction - - cl.hsmtool.sh [seed] [mainnet|testnet|signet] ["space-separated-seed-words"] [?seedpassword] - cl.hsmtool.sh [seed-force] [mainnet|testnet|signet] ["space-separated-seed-words"] [?seedpassword] - The new hsm_secret will be not encrypted if no NewPassword is given - seed-force will delete any old wallet and will work without dialog - - cl.hsmtool.sh [unlock] - success: exit 0 - wrong password: exit 2 - fail to unlock after 1 minute + show logs: exit 3 - cl.hsmtool.sh [lock] - cl.hsmtool.sh [encrypt|decrypt] - cl.hsmtool.sh [autounlock-on|autounlock-off] - - cl.hsmtool.sh [change-password] - - + ./cl.install-service.sh -h - - Script to set up or update the Core Lightning systemd service - Usage: - /home/admin/config.scripts/cl.install-service.sh - - + ./cl.install.sh -h - - Core Lightning install script - The default version is: v22.11.1 - mainnet / testnet / signet instances can run parallel - - Usage: - cl.install.sh install - called by build_sdcard.sh - cl.install.sh on - cl.install.sh off - cl.install.sh [update |testPR ] - cl.install.sh display-seed - - + ./cl.monitor.sh -h - monitor and troubleshot the c-lightning network - cl.monitor.sh [mainnet|testnet|signet] status - cl.monitor.sh [mainnet|testnet|signet] config - cl.monitor.sh [mainnet|testnet|signet] info - cl.monitor.sh [mainnet|testnet|signet] wallet - + ./cl-plugin.backup.sh -h - - Install the backup plugin for Core Lightning - Replicates the lightningd.sqlite3 database on the SDcard - - Usage: - cl-plugin.backup.sh [on|off] [testnet|mainnet|signet] - cl-plugin.backup.sh [restore] [testnet|mainnet|signet] [force] - cl-plugin.backup.sh [backup-compact] [testnet|mainnet|signet] - - https://github.com/lightningd/plugins/tree/master/backup - - + ./cl-plugin.clboss.sh -h - - Install or remove the CLBOSS Core Lightning plugin - version: v0.13A - Usage: - cl-plugin.clboss.sh [on|off] [testnet|mainnet|signet] - cl-plugin.clboss.sh [info] - - + ./cl-plugin.cln-grpc.sh -h - - Install the cln-grpc plugin for CLN - Usage: - cl-plugin.cln-grpc.sh install - called by build_sdcard.sh - cl-plugin.cln-grpc.sh on - cl-plugin.cln-grpc.sh off - cl-plugin.cln-grpc.sh status - cl-plugin.cln-grpc.sh update - - + ./cl-plugin.feeadjuster.sh -h - - Install the feeadjuster plugin for Core Lightning - Usage: - cl-plugin.feeadjuster.sh [on|off] - - + ./cl-plugin.http.sh -h - - Install, remove, connect the c-lightning-http-plugin - version: 1dbb6537e0ec5fb9b8edde10db6b4cc613ccdb19 - Implemented for mainnet only. - Usage: - cl-plugin.http.sh [on|off|connect] - - + ./cl-plugin.sparko.sh -h - - Install, remove, connect or get info about the Sparko plugin for Core Lightning - version: v2.8 - Usage: - cl-plugin.sparko.sh [on|off|menu|connect] [testnet|mainnet|signet] [norestart] - - + ./cl-plugin.standard-python.sh -h - - Install and show the output of the chosen plugin for Core Lightning - Usage: - cl-plugin.standard-python.sh on [plugin-name] - - tested plugins: - summary | helpme | feeadjuster | paytest - - find more at: - https://github.com/lightningd/plugins - - + ./cl-plugin.summary.sh -h - - Install and show the output if the summary plugin forCore Lightning - Usage: - cl-plugin.summary.sh [testnet|mainnet|signet] [runonce] - - + ./cl-plugin.watchtower-client.sh -h - - Install the rust-teos watchtower-client plugin for CLN - Usage: - cl-plugin.watchtower-client.sh on - cl-plugin.watchtower-client.sh off - cl-plugin.watchtower-client.sh info - - + ./cl.rest.sh -h - - Core-Lightning-REST install script - The default version is: v0.9.0 - mainnet | testnet | signet instances can run parallel - - Usage: - cl.rest.sh [on|off|connect] [?key-value] - - + ./cl.setname.sh -h - - Config script to set the alias of the Core Lightning node - cl.setname.sh [mainnet|testnet|signet] [?newName] - - + ./cl.spark.sh -h - - Install, remove or get info about the Spark Wallet for Core Lightning - version: v0.3.1 - Usage: - cl.spark.sh [on|off|menu] - - + ./cl.update.sh -h - - Interim optional Core Lightning updates between RaspiBlitz releases. - cl.update.sh [info|verified|reckless] - info -> get actual state and possible actions - verified -> only do recommended updates by RaspiBlitz team - binary will be checked by signature and checksum - reckless -> if you just want to update to the latest release - published on Core Lightning GitHub releases (RC or final) without any - testing or security checks. - ``` - -## All possible config options - * can be shown by running: - `lightningd --help` - * To persist the settings place the options in the config file without the `--` and restart lightningd - ``` - Usage: lightningd - A bitcoin lightning daemon (default values shown for network: bitcoin). - --conf= Specify configuration file - --lightning-dir= Set base directory: network-specific subdirectory is under here (default: "/home/admin/.lightning") - --network Select the network parameters (bitcoin, testnet, signet, regtest, litecoin or litecoin-testnet) (default: bitcoin) - --mainnet Alias for --network=bitcoin - --testnet Alias for --network=testnet - --signet Alias for --network=signet - --allow-deprecated-apis Enable deprecated options, JSONRPC commands, fields, etc. (default: true) - --rpc-file Set JSON-RPC socket (or /dev/tty) (default: "lightning-rpc") - --plugin Add a plugin to be run (can be used multiple times) - --plugin-dir Add a directory to load plugins from (can be used multiple times) - --clear-plugins Remove all plugins added before this option - --disable-plugin Disable a particular plugin by filename/name - --important-plugin Add an important plugin to be run (can be used multiple times). Die if the plugin dies. - --always-use-proxy Use the proxy always (default: false) - --daemon Run in the background, suppress stdout/stderr - --wallet Location of the wallet database. - --large-channels|--wumbo Allow channels larger than 0.16777215 BTC - --experimental-dual-fund experimental: Advertise dual-funding and allow peers to establish channels via v2 channel open protocol. - --experimental-onion-messages EXPERIMENTAL: enable send, receive and relay of onion messages and blinded payments - --experimental-offers EXPERIMENTAL: enable send and receive of offers (also sets experimental-onion-messages) - --experimental-shutdown-wrong-funding EXPERIMENTAL: allow shutdown with alternate txids - --announce-addr-dns Use DNS entries in --announce-addr and --addr (not widely supported!) (default: false) - --help|-h Print this message. - --rgb RRGGBB hex color for node - --alias Up to 32-byte alias for node - --pid-file= Specify pid file (default: "/home/admin/.lightning/lightningd-bitcoin.pid") - --ignore-fee-limits (DANGEROUS) allow peer to set any feerate (default: false) - --watchtime-blocks Blocks before peer can unilaterally spend funds (default: 144) - --max-locktime-blocks Maximum blocks funds may be locked for (default: 2016) - --funding-confirms Confirmations required for funding transaction (default: 3) - --cltv-delta Number of blocks for cltv_expiry_delta (default: 34) - --cltv-final Number of blocks for final cltv_expiry (default: 18) - --commit-time= Time after changes before sending out COMMIT (default: 10) - --fee-base Millisatoshi minimum to charge for HTLC (default: 1000) - --rescan Number of blocks to rescan from the current head, or absolute blockheight if negative (default: 15) - --fee-per-satoshi Microsatoshi fee for every satoshi in HTLC (default: 10) - --htlc-minimum-msat The default minimal value an HTLC must carry in order to be forwardable for new channels - --htlc-maximum-msat The default maximal value an HTLC must carry in order to be forwardable for new channel - --max-concurrent-htlcs Number of HTLCs one channel can handle concurrently. Should be between 1 and 483 (default: 30) - --max-dust-htlc-exposure-msat Max HTLC amount that can be trimmed - --min-capacity-sat Minimum capacity in satoshis for accepting channels (default: 10000) - --addr Set an IP address (v4 or v6) to listen on and announce to the network for incoming connections - --bind-addr Set an IP address (v4 or v6) to listen on, but not announce - --announce-addr Set an IP address (v4 or v6) or .onion v3 to announce, but not listen on - --disable-ip-discovery Turn off announcement of discovered public IPs - --offline Start in offline-mode (do not automatically reconnect and do not accept incoming connections) - --autolisten If true, listen on default port and announce if it seems to be a public interface (default: true) - --dev-allowdustreserve If true, we allow the `fundchannel` RPC command and the `openchannel` plugin hook to set a reserve that is below the dust limit. - (default: false) - --proxy Set a socks v5 proxy IP address and port - --tor-service-password Set a Tor hidden service password - --accept-htlc-tlv-types Comma separated list of extra HTLC TLV types to accept. - --disable-dns Disable DNS lookups of peers - --encrypted-hsm Set the password to encrypt hsm_secret with. If no password is passed through command line, you will be prompted to enter it. - --rpc-file-mode Set the file mode (permissions) for the JSON-RPC socket (default: "0600") - --force-feerates Set testnet/regtest feerates in sats perkw, opening/mutual_close/unlateral_close/delayed_to_us/htlc_resolution/penalty: if fewer - specified, last number applies to remainder - --subdaemon Arg specified as SUBDAEMON:PATH. Specifies an alternate subdaemon binary. If the supplied path is relative the subdaemon binary is - found in the working directory. This option may be specified multiple times. For example, --subdaemon=hsmd:remote_signer would use - a hypothetical remote signing subdaemon. - --experimental-websocket-port experimental: alternate port for peers to connect using WebSockets (RFC6455) - --database-upgrade Set to true to allow database upgrades even on non-final releases (WARNING: you won't be able to downgrade!) - --log-level log level (io, debug, info, unusual, broken) [:prefix] (default: info) - --log-timestamps prefix log messages with timestamp (default: true) - --log-prefix log prefix (default: ) - --log-file= Also log to file (- for stdout) - --version|-V Print version and exit - --fetchinvoice-noconnect Don't try to connect directly to fetch an invoice. - --autocleaninvoice-cycle Perform cleanup of expired invoices every given seconds, or do not autoclean if 0 - --autocleaninvoice-expired-by If expired invoice autoclean enabled, invoices that have expired for at least this given seconds are cleaned - --autoclean-cycle Perform cleanup every given seconds - --autoclean-succeededforwards-age How old do successful forwards have to be before deletion (0 = never) - --autoclean-failedforwards-age How old do failed forwards have to be before deletion (0 = never) - --autoclean-succeededpays-age How old do successful pays have to be before deletion (0 = never) - --autoclean-failedpays-age How old do failed pays have to be before deletion (0 = never) - --autoclean-paidinvoices-age How old do paid invoices have to be before deletion (0 = never) - --autoclean-expiredinvoices-age How old do expired invoices have to be before deletion (0 = never) - --bitcoin-datadir -datadir arg for bitcoin-cli - --bitcoin-cli bitcoin-cli pathname - --bitcoin-rpcuser bitcoind RPC username - --bitcoin-rpcpassword bitcoind RPC password - --bitcoin-rpcconnect bitcoind RPC host to connect to - --bitcoin-rpcport bitcoind RPC host's port - --bitcoin-retry-timeout how long to keep retrying to contact bitcoind before fatally exiting - --commit-fee Percentage of fee to request for their commitment - --disable-mpp Disable multi-part payments. - --funder-policy Policy to use for dual-funding requests. [match, available, fixed] - --funder-policy-mod Percent to apply policy at (match/available); or amount to fund (fixed) - --funder-min-their-funding Minimum funding peer must open with to activate our policy - --funder-max-their-funding Maximum funding peer may open with to activate our policy - --funder-per-channel-min Minimum funding we'll add to a channel. If we can't meet this, we don't fund - --funder-per-channel-max Maximum funding we'll add to a channel. We cap all contributions to this - --funder-reserve-tank Amount of funds we'll always leave available. - --funder-fuzz-percent Percent to fuzz the policy contribution by. Defaults to 0%. Max is 100% - --funder-fund-probability Percent of requests to consider. Defaults to 100%. Setting to 0% will disable dual-funding - --funder-lease-requests-only Only fund lease requests. Defaults to true if channel lease rates are being advertised - --lease-fee-base-sat Channel lease rates, base fee for leased funds, in satoshi. - --lease-fee-base-msat Channel lease rates, base fee for leased funds, in satoshi. - --lease-fee-basis Channel lease rates, basis charged for leased funds (per 10,000 satoshi.) - --lease-funding-weight Channel lease rates, weight we'll ask opening peer to pay for in funding transaction - --channel-fee-max-base-msat Channel lease rates, maximum channel fee base we'll charge for funds routed through a leased channel. - --channel-fee-max-proportional-thousandths Channel lease rates, maximum proportional fee (in thousandths, or ppt) we'll charge for funds routed through a leased channel. - Note: 1ppt = 1,000ppm - --bookkeeper-dir Location for bookkeeper records. - --bookkeeper-db Location of the bookkeeper database - ``` diff --git a/FAQ.dev.md b/FAQ.dev.md deleted file mode 100644 index 739f0d6b2..000000000 --- a/FAQ.dev.md +++ /dev/null @@ -1,281 +0,0 @@ -## FAQ Development - -### Steps to create RaspberryPi images with Packer? - -* Make sure you have: - * Correct version-string in: `_version.info` - * Correct version-branch as fallback in `build_sdcard.sh` -* Start [`Debian LIVE`](https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-12.4.0-amd64-cinnamon.iso) from USB stick - * On USB boot be sure to start the "LIVE_SYSTEM" image - * Set KeyboardLang, "Screensaver" & "Power Management" - * Connect a additional 128GB USB with NFTS formatted -* Using Filemanager open the 128GB-USBDrive and right-click "Open in Terminal" -* Make sure the packer script is in root of the 128GB-USBDrive - * If it is not there download: - * `curl -O -L https://raw.githubusercontent.com/raspiblitz/raspiblitz/dev/ci/packer.sh` -* Security read/check script and compare checksum: - * `shasum -a 256 ./ci/packer.sh` or - * `shasum -a 256 packer.sh` -* Start build with: -* `sudo bash ./packer.sh` and enter: - * `BRANCH` = the branch name on this repo of which the image should be build - * `[arm|x86]` = The architecture the image is targeting (RaspberryPi = `arm`) - * `[min|fat]` = lean or fatpack (fatpack prepackages lots of apps already with the image) - * `LASTCOMMITHASH` (optional) = security check & copy the latest commit hash of the branch you want to build (substring is ok) - -To directly write an image from the final `img.gz` file from the build laptop you need tu unzip the file first with `gunzip [imagefile.img.gz]` and then use the debian Image Writer. - -### What is the process of creating a new RaspberryPi SD card image release manually? - -Checklist before making a SD card image release: - -* "Versioning" number is upfates in your RaspiBlitz Source Code (_version.info) -* Latest code is merged in release branch - -Creating the base minimal sd card: - -* Start [`Ubuntu LIVE`](http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso) from USB stick -* Under Settings: best to set correct keyboard language & power settings to prevent monitor turn off -* Connect to a secure WiFi (hardware switch on) or LAN -* Download the latest RaspiOS-64bit (zip/xz & sig file) namend in the [build_sdcard.sh](./build_sdcard.sh) and note the SHA256 checksum -* From the browser `Show All Downloads` and from the context menu select `Open Containing Folder` -* On that file manager open context (right click) on the white-space and select `Open in Terminal` -* Compare the checksum with the one you just made note of, using `shasum -a 256 *.zip` -* Check signature: `wget https://www.raspberrypi.org/raspberrypi_downloads.gpg.key && gpg --import ./raspberrypi_downloads.gpg.key && gpg --verify *.sig` -* The result should say "correct signature" and the fingerprint should end with `8738 CD6B 956F 460C` -* Insert an NTFS formatted USB stick and use the file manager to move all files to the USB -* If image is an ZIP file use in file manager context on NTFS USB stick `extract here` to unzip -* Download script for later with `curl https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh > pishrink.sh` -* Connect SD card reader with a SD card (16GB recommended) -* In the file manager open context on the .img-file, select `Open With Disk Image Writer` and write the image to the SD card -* In the file manager open context on `boot` drive free space `open in terminal` -* Run the commands `touch ssh` -* Run the command: `echo "pi:\$6\$TE7HmruYY9EaNiKP\$Vz0inJ6gaoJgJvQrC5z/HMDRMTN2jKhiEnG83tc1Jsw7lli5MYdeA83g3NOVCsBaTVW4mUBiT/1ZRWYdofVQX0" > userconf` and `exit` -* Eject the `boot` and the `NTFS` volume -* Connect a RaspiBlitz (without HDD) to network, insert sd card and power up -* Find the IP of the RaspiBlitz (arp -a or check router) -* In terminal `ssh pi@[IP-OF-RASPIBLITZ]` -* Password is `raspberry` -* Run the following command BUT REPLACE `[BRANCH]` with the branch-string of your latest version -* To run the minimal pack: `wget --no-cache https://raw.githubusercontent.com/raspiblitz/raspiblitz/[BRANCH]/build_sdcard.sh && sudo bash build_sdcard.sh -u raspiblitz -b [BRANCH] -f 0 -d headless` -* Monitor/Check outputs for warnings/errors -* Login new with `ssh admin@[IP-OF-RASPIBLITZ]` (pw: raspiblitz) and run `release` -* Disconnect WiFi/LAN on build laptop (hardware switch off) and shutdown -* Remove `Ubuntu LIVE` USB stick and cut power from the RaspberryPi - -Creating the image of sd card: - -* Connect USB stick with latest `TAILS` (make it stay offline) -* Boot Tails with extra setting of Admin-Passwort and remember (use later for sudo) -* Menu > Systemtools > Settings > Energy -> best to set monitor to never turn off -* Connect USB stick with GPG signing keys - decrypt drive if needed -* Open Terminal and cd into directory of USB Stick under `/media/amnesia` -* Run `gpg --import ./sub.key`, check and `exit` -* Disconnect USB stick with GPG keys -* Take the SD card from the RaspberryPi and connect with an external SD card reader to the laptop -* Click on `boot` volume once in the file manger -* Connect the NTFS USB stick, open in file manager and delete old files -* To make a raw image from sd card - second way (UI with progress): - * Search "Laufwerke" or "Drives" on Tails Apps - * Create image named `raspiblitz.img` to USB storage -* Open Terminal and cd into directory of NTFS USB stick under `/media/amnesia` -* `shasum -a 256 ./pishrink.sh` should be `760a7996fe8496e1d463e7a174d87ee92e41a8a1b195c02e98a27fcad2051dc6` -* `chmod +x ./pishrink.sh | sudo ./pishrink.sh ./raspiblitz.img` -* `gzip -c ./raspiblitz.img > ./raspiblitz-min/fat-vX.X.X-YEAR-MONTH-DAY.img.gz` -* `shasum -a 256 ./raspiblitz-min/fat-vX.X.X-YEAR-MONTH-DAY.img.gz > ./raspiblitz-min/fat-vX.X.X-YEAR-MONTH-DAY.img.gz.sha` -* make analog copy/note of checksum -* Sign with `gpg --output raspiblitz-min/fat-vX.X.X-YEAR-MONTH-DAY.img.gz.sig --detach-sign raspiblitz-min/fat-vX.X.X-YEAR-MONTH-DAY.img.gz` - -Prepare template for subversion update later: - -* `mv ./raspiblitz.img ./raspiblitz-min-vX.X.X.img` -* `shasum -a 256 ./raspiblitz-min-vX.X.img > ./raspiblitz-min-vX.X.X.img.sha` -* make analog copy/note of checksum - -Creating a fatpack sd card from the minimal image: - -* Start TAILS live image -* On NTFS USB Stick (Open in Terminal) check hash of raspiblitz-min-vX.X.X.img wit analog note: -* `shasum -a 256 ./raspiblitz-min-vX.X.X.img` -* Right-Click the file and write to a min 32GB sd card -* On `bootfs` in FileManger (Open in Terminal): -* `touch stop` & `exit` terminal -* Shutdown TAILS & eject sd card -* Bootup UBUNTU LIVE -* Connect a RaspiBlitz (without HDD) to network, insert sd card and power up -* Find the IP of the RaspiBlitz (arp -a or check router) -* In terminal `ssh admin@[IP-OF-RASPIBLITZ]` -* Update to latest code with `patch code` -* the following only if its a `fatpack`: - * run command `fatpack` - * if it reboot, ssh in again & again run command `fatpack` - * check that script ended without errors -* do the creation & signing of the image file like in chapter above - -Publishing the images: - -* Connect the NTFS USB stick to MacOS (it is just read-only) -* Run tests on the new image -* Upload the new image to the Download Server - put sig-file next to it -* Copy SHA256-String into GitHub README and update the download link -* Create Torrent file from image and place in in the `home.admin/assets` folder - * upload images per FTP (Filezilla) to `yourseedbox.com` server under `torrent/rtorrent` - * open QuickBox > ruTorrent and choose `create Torrent` - * select image file, add trackers (see below) and start seeding - * download the torrent-file into `home.admin/assets` folder & commit - * get raw-link to torrent file from gitub - * edit in `raspiblitz-docs` the `docs/software-setup/_download.md` - -This is a recommended tracker list to be used with the torrent: -``` -udp://tracker.coppersurfer.tk:6969/announce -http://tracker.yoshi210.com:6969/announce -http://open.acgtracker.com:1096/announce -http://tracker.skyts.net:6969/announce -udp://9.rarbg.me:2780/announce -http://tracker2.itzmx.com:6961/announce -udp://exodus.desync.com:6969/announce -http://pow7.com:80/announce -udp://tracker.leechers-paradise.org:6969 -``` - -### Versioning - -* Major Updates: 1.0.0, 2.0.0, 3.0.0, ... are epic updates signaling that the software reached a new era. -* Main Updates: 1.1.0, 1.2.0, 1.3.0, ... are release updates - the reflashing of the sd ard is mandatory. -* Minor Updates: 1.3.0, 1.3.1, 1.3.2, ... are patch updates - can be done by 'patching' the scripts & code, but new sd card reflash is still advised. - -Every release has its own branch: `v1.9`, `v1.10`, `v1.11` .. this way hot patches can be merged into the release branch and people update with the `patch code` command - -### How can I customize my RaspiBlitz or add other software? - -The RaspiBlitz is your computer to experiment with. Feel free to add your own scripts, edit the system or install further software from the command line. Just keep in mind that after an update/recovery the RaspiBlitz starts with a fresh and clean operating system again. So all your editings and installs might be gone. To prevent this you should do the following: - -- place your own scripts and data that should survive an update/recovery into the `/mnt/hdd/app-data` directory -- put all install commands & modification of the system into the script `/mnt/hdd/app-data/custom-installs.sh` which will be started automatically on a recovery/update. - -### GitHub Workflow - -- Development is done on the 'dev' branch, new features should be done on single feature branches and merged into 'dev' once ready. -- When a release of a new main-update (see above) comes closer, a new release branch gets created from 'dev' with the first release candidate - the RCs and the final release sd card will be build from this branch. -- All minor-releases will basically all work with the same 'build_sdcard.sh' script so that the code could be updated by just calling 'patch'. Emergency updates on lnd & bitcoin may break this guideline, but basic structure & packaging should stay mostly consistent over a main-update version. -- Once a release is ready, that release branch will be set as the "default" branch on GitHub (so its shown as main page) -- Hot fixes & new features for minor versions will be created as single branches from the release branch, and once ready will be merged back into that release branch as a Pull Request using 'Squash-Merge' AND then, this 'Squash-Merge' (one single commit) will get cherry-picked into the 'dev' branch ('git cherry-pick COMMITHASH' - may call 'git fetch' & 'git pull' before to make a clean cherry-pick into dev). - -### Can I run RaspiBlitz on other computers than RaspberryPi? - -There is an experimental section in this GitHub that tries to build for other SingleBoardComputers. Feel free to try it out and share your experience: [alternative.platforms/README.md](alternative.platforms/README.md) - -### How can I build an SD card from another branch? - -There might be new, but not released features in development that are not yet in the default version branch - but you want to try them out. - -To build a SD card image from another branch than master, you follow the [Build the SD Card Image](README.md#build-the-sd-card-image) from the README, but execute the build script from the other branch and add the name of that branch as a parameter to the build script. - -For example if you want to make a build from the 'dev' branch you execute the following command: - -`wget --no-cache https://raw.githubusercontent.com/raspiblitz/raspiblitz/dev/build_sdcard.sh && sudo bash build_sdcard.sh -b dev` - -If you want to see all the optional parameters for building your sd card, just answere `no` on first question and call `sudo bash build_sdcard.sh --help`. - -### How can I build an SD card from my forked GitHub Repo? - -If you fork the RaspiBlitz repo (much welcome) and you want to run that code on your RaspiBlitz, there are two ways to do that: - -* The quick way: For small changes in a single script, go to `/home/admin` on your running RaspiBlitz, delete the old git with `sudo rm -r raspiblitz` then replace it with your code `git clone [YOURREPO]` and `patch` - -* The long way: If you like to install/remove/change services and system configurations you need to build a SD card from your own code. Prepare like in [Build the SD Card Image](README.md#build-the-sd-card-image) from the README but in the end run the command: - -`wget --no-cache https://raw.githubusercontent.com/[GITHUB-USERNAME]/raspiblitz/[BRANCH]/build_sdcard.sh && sudo bash build_sdcard.sh -b [BRANCH]` - -If you are then working in your forked repo and want to update the scripts on your RaspiBlitz with your latest repo changes, run `patch` - That's OK as long as you don't make changes to the SD card build script - for that you would need to build a fresh SD card again from your repo. - -### How can I checkout a new branch from the RaspiBlitz repo to my forked repo? - -You need to have your forked repo checked-out on your laptop. There your should see your forked repo as `origin` when you run `git remote -v`. If you don't see an additional `upstream` remote yet, then create it with the following command: `git remote add upstream https://github.com/raspiblitz/raspiblitz.git`. - -So, first checkout the new branch named `BRANCH` from the original RaspBlitz repo to your local computer with: `git fetch upstream` and then `git checkout -b BRANCH upstream/BRANCH`. - -Now push the new branch to your forked GitHub repo with `git push -u origin BRANCH`. - -Once the branch is available and synced between the RaspiBlitz GitHub repo, your forked GitHub repo and your local computer git repo, you can start developing. - -### How can I sync a branch of my forked GitHub with my local RaspiBlitz? - -Since v1.5 of RaspiBlitz there has been an easy way thru the SSH menus: Under `MAIN MENU > UPDATE > PATCH` you have the option to change the GitHub repository and and branch to sync with. You change the GitHub Repository by setting the GitHub username where you forked the Repo. - -So for example: If you forked the RaspiBlitz project (raspiblitz/raspiblitz) on GitHub and your GitHub project page is now called: https://github.com/raumi75/raspiblitz ... then just change the repo to sync/patch with to your username `raumi75`. - -Now you can use the `Patch/Sync RaspiBlitz with GitHub Repo` to easily keep your RaspiBlitz in sync with your forked repository and develop your own customizations and features. - -Background info and doing it manually: - -There is a git copy of the original RaspiBlitz GitHub repo on your physical RaspiBlitz in the folder `/home/admin/raspiblitz`. If you change into that folder and run `git remote -v` you can see the set origin repo. - -You need to change that origin repo to your forked repo. You do that with: -``` -git remote set-url origin [THE-URL-OF-YOUR-FORKED-REPO] -``` - -Now to sync your branch namend BRANCH on your forked repo with your RaspiBlitz, you always just run: -``` -/home/admin/config.scripts/blitz.github.sh BRANCH -``` - -So your workflow can go like this: You write code on your local computer. Commit to your local repo, push it to your forked repo and use the sync-script above to get the code to your RaspiBlitz. - -### How can I manual provision an image with updated code? - -To boot an already build sd card image with your updated raspiblitz code base you can use the `stop` file flag. This will make the `_bootstrap.sh` script stop basically before making any setup or recovery changes to the system. You can SSH in an use the `github` command to update the raspiblitz code and then use `release` command. To set the `stop` file flag. Insert a fresh written sd card into your PC and on the root of `bootfs` drive with a file manager place a empty file simply called `stop` (with no file extension). - -### How to add an app to the RaspiBlitz? - -To add your app you can fork the raspiblitz repo, follow the `/home.admin/config.scripts/bonus.template.sh` script [see code](https://github.com/raspiblitz/raspiblitz/blob/dev/home.admin/config.scripts/bonus.template.sh), copy/adapt it, test it on your RaspiBlitz and make a PR back to the main repo. - -### How contribute a feature/change from my forked branch back to the RaspiBlitz repo? - -In the same way as described above, you can build a new feature or test a change. Once you have something ready that you want to contribute back, you make sure it's pushed to your forked GitHub repo, and then start a pull request from your forked repo to the RaspiBlitz repo. - -See more info: https://yangsu.github.io/pull-request-tutorial/ - -### How can I help testing a Pull Request? - -Make sure to have the correct base image. -Then go to the command line and create a branch for the PR: - -``` -cd /home/admin/raspiblitz -git fetch origin pull/[PRNUMBER]/head:pr[PRNUMBER] -git checkout pr[PRNUMBER] -cd /home/admin -/home/admin/config.scripts/blitz.github.sh -justinstall -``` - -Now you have the code of the PR active - depending on what scripts are changed you might need to reboot. - -To change back to the code: -``` -/home/admin/config.scripts/blitz.github.sh master -``` - -### How can I push changes to an existing Pull Request? - -See article: https://tech.sycamore.garden/add-commit-push-contributor-branch-git-github .. only works if your a contributor on raspiblitz repo. - -### How to cherry-pick with branch protections & CODEOWNERS file? - -Chery-picking patch PRs from dev to a release-branch like 'v1.8' (for example) is now a bit more complicated. Either an admin switches temorarly the branch protection "require a pull request before merging" setting off for the `git cherry-pick` OR we create a `p1.8` branch from `v1.8`, cherry-pick the squashed patch PR into that unprotected `p1.8` and then open a PR back to `v1.8`. - -But what we gain is that better branch protection and we can add more contributors to the project that are allowed to manage issues - like adding labels or closing. - -### How to run the automatic amd64 build on a VM on OSX? - -just notes so far: - -https://brew.sh -brew install qemu -https://github.com/raspiblitz/raspiblitz/actions --> download amd64-lean image -double unzip until `qcow2` file -convert `qcow2` to `vdi: -qemu-img convert -f qcow2 raspiblitz-amd64-debian-lean.qcow2 -O vdi raspiblitz-amd64-debian-lean.vdi -https://www.virtualbox.org/wiki/Downloads diff --git a/FAQ.md b/FAQ.md deleted file mode 100644 index 464265f7e..000000000 --- a/FAQ.md +++ /dev/null @@ -1,805 +0,0 @@ - -# FAQ - Frequently Asked Questions - ---- -Table of Contents ---- -- [Table of Contents](#table-of-contents) -- [Upgrade](#upgrade) - - [How to verify the SD card image after download?](#how-to-verify-the-sd-card-image-after-download) - - [What changed on every upgrade?](#what-changed-on-every-upgrade) - - [How do I upgrade my RaspiBlitz?](#how-do-i-upgrade-my-raspiblitz) - - [Why do I need to re-burn my SD card for an update?](#why-do-i-need-to-re-burn-my-sd-card-for-an-update) - - [How can I update LND or bitcoind even before the next RaspiBlitz update?](#how-can-i-update-lnd-or-bitcoind-even-before-the-next-raspiblitz-update) -- [SSH](#ssh) - - [What to do when on SSH I see "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"](#what-to-do-when-on-ssh-i-see-warning-remote-host-identification-has-changed) - - [How do I unplug/shutdown safely without SSH](#how-do-i-unplugshutdown-safely-without-ssh) - - [I cannot connect via SSH to my RaspiBlitz. What do I do?](#i-cannot-connect-via-ssh-to-my-raspiblitz-what-do-i-do) - - [How to SSH over Tor?](#how-to-ssh-over-tor) - - [How to setup port-forwarding with a SSH tunnel?](#how-to-setup-port-forwarding-with-a-ssh-tunnel) - - [How do I setup just a port-forwarding user on my public server?](#how-do-i-setup-just-a-port-forwarding-user-on-my-public-server) - - [How to reset the ssh config and keys?](#how-to-reset-the-ssh-config-and-keys) -- [Display](#display) - - [Can I flip the screen?](#can-i-flip-the-screen) - - [How to fix my upside down LCD after update?](#how-to-fix-my-upside-down-lcd-after-update) - - [Can I run the RaspiBlitz without a display/LCD?](#can-i-run-the-raspiblitz-without-a-displaylcd) - - [How do I find the IP address when running without a display?](#how-do-i-find-the-ip-address-when-running-without-a-display) -- [Debug](#debug) - - [I have the full blockchain on another storage. How do I copy it to the RaspiBlitz?](#i-have-the-full-blockchain-on-another-storage-how-do-i-copy-it-to-the-raspiblitz) - - [How do I generate a Debug Report?](#how-do-i-generate-a-debug-report) - - [Why is my "final sync" taking so long?](#why-is-my-final-sync-taking-so-long) - - [How do I backup my Lightning Node?](#how-do-i-backup-my-lightning-node) - - [1) Securing your On-Chain- and Channel-Funds during Operation](#1-securing-your-on-chain--and-channel-funds-during-operation) - - [2) Making a complete LND data backup](#2-making-a-complete-lnd-data-backup) - - [How can I recover my coins from a failing RaspiBlitz?](#how-can-i-recover-my-coins-from-a-failing-raspiblitz) - - [1) Recover LND data](#1-recover-lnd-data) - - [2) Recover from Wallet Seed](#2-recover-from-wallet-seed) - - [How do I move funds \& channels from RaspiBlitz to LND Lightning Desktop App?](#how-do-i-move-funds--channels-from-raspiblitz-to-lnd-lightning-desktop-app) - - [How do I change the Name/Alias of my lightning node](#how-do-i-change-the-namealias-of-my-lightning-node) - - [How do I change the public port LND/Lightning node is running on?](#how-do-i-change-the-public-port-lndlightning-node-is-running-on) - - [How do I solve a "signature mismatch after caveat verification" error?](#how-do-i-solve-a-signature-mismatch-after-caveat-verification-error) - - [Why is my node not routing?](#why-is-my-node-not-routing) - - [When using Auto-Unlock, how much security do I lose?](#when-using-auto-unlock-how-much-security-do-i-lose) - - [I connected my HDD but it still says 'Connect HDD' on the display?](#i-connected-my-hdd-but-it-still-says-connect-hdd-on-the-display) - - [How do I shrink the QR code for connecting my Shango/Zap/Zeus mobile phone?](#how-do-i-shrink-the-qr-code-for-connecting-my-shangozapzeus-mobile-phone) - - [Why is my bitcoin IP on the display red?](#why-is-my-bitcoin-ip-on-the-display-red) - - [Why is my node address on the display red?](#why-is-my-node-address-on-the-display-red) - - [Why is my node address on the display yellow (not green)?](#why-is-my-node-address-on-the-display-yellow-not-green) - - [How can I set a fixed IP?](#how-can-i-set-a-fixed-ip) - - [How do I fix a displayed Error in my Config?](#how-do-i-fix-a-displayed-error-in-my-config) - - [Can I run the RaspiBlitz as Backend for BTCPayServer?](#can-i-run-the-raspiblitz-as-backend-for-btcpayserver) - - [I don't have a LAN port on my Laptop - how do I connect to my RaspiBlitz?](#i-dont-have-a-lan-port-on-my-laptop---how-do-i-connect-to-my-raspiblitz) - - [Is it possible to connect the Blitz over Wifi instead of using a LAN cable?](#is-it-possible-to-connect-the-blitz-over-wifi-instead-of-using-a-lan-cable) - - [Can I directly connect the RaspiBlitz to my laptop?](#can-i-directly-connect-the-raspiblitz-to-my-laptop) - - [How to attach the RaspberryPi to the HDD?](#how-to-attach-the-raspberrypi-to-the-hdd) - - [What other case options do I have?](#what-other-case-options-do-i-have) - - [Are those "Under-Voltage detected" warnings a problem?](#are-those-under-voltage-detected-warnings-a-problem) - - [How do I return to the menu after exiting to the command line](#how-do-i-return-to-the-menu-after-exiting-to-the-command-line) - - [How do I setup fresh/clean/reset and without going into recovery mode?](#how-do-i-setup-freshcleanreset-and-without-going-into-recovery-mode) - - [My blockchain data is corrupted - what can I do?](#my-blockchain-data-is-corrupted---what-can-i-do) - - [I have two RaspiBlitz in my network - can they both be public?](#i-have-two-raspiblitz-in-my-network---can-they-both-be-public) - - [How can I enforce UASP mode for my SSD controller?](#how-can-i-enforce-uasp-mode-for-my-ssd-controller) - - [I am facing maintenance/emergency mode on boot. How do I fix it?](#i-am-facing-maintenanceemergency-mode-on-boot-how-do-i-fix-it) -- [Extras](#extras) - - [How do I connect a UPS to the RaspiBlitz?](#how-do-i-connect-a-ups-to-the-raspiblitz) - - [Can I run my RaspiBlitz on Solar Energy?](#can-i-run-my-raspiblitz-on-solar-energy) - - [How to use the Let's Encrypt client](#how-to-use-the-lets-encrypt-client) - - [Let's Encrypt - HTTP-01](#lets-encrypt---http-01) - - [Let's Encrypt - DNS-01](#lets-encrypt---dns-01) - - [Let's Encrypt - eMail Address](#lets-encrypt---email-address) - - [Let's Encrypt - Installation details](#lets-encrypt---installation-details) - - [What is this mnemonic seed word list?](#what-is-this-mnemonic-seed-word-list) - - [How do I set up VNC?](#how-do-i-set-up-vnc) - - [Why use BTRFS on RaspiBlitz?](#why-use-btrfs-on-raspiblitz) - - [Storing your important Data in RAID1 with a USB Thumb Drive](#storing-your-important-data-in-raid1-with-a-usb-thumb-drive) - - [Snapshotting the Blockchain](#snapshotting-the-blockchain) - - [How do I use BTRFS on RaspiBlitz?](#how-do-i-use-btrfs-on-raspiblitz) - - [How to recover a BTRFS partition?](#how-to-recover-a-btrfs-partition) ---- - -## Upgrade - -### How to verify the SD card image after download? - -There are two methods, verify the hash (proves integrity) or the signature (proves integrity and authenticity) - -You can do a quick check to verify that the sha256 hash of the file you downloaded is the same as the sha256 hash mentioned below the download link, or use the torrent download which will also check the file for a checksum after download. - -To verify the shasum: - -``` -shasum -a 256 [DOWNLOADED-FILE-TO-CHECK] -``` - -But verifying the shasum does not prove to you that the SD card image was actually built by the lead developer of the RaspiBlitz project. - -To verify that the download was actually signed by [rootzoll](https://keybase.io/rootzoll) you need to use GPG and import the following public key: - -``` -curl --tlsv1.2 --proto '=https' 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 next to the image download link. - -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] -``` - -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`. You should also see the sub-key fingerprint ending on `AA9D D1B5 CC56 47DA`, that is used at the moment to sign the sd card image. If those fingerprints shown correctly, the SD card image you downloaded is an original RaspiBlitz release. - -*You can ignore any warning about the key being 'not a trusted signature' or untrusted .. as long you see "good signature" and the correct main & sub fingerprints the download is valid.* - -### What changed on every upgrade? - -See the [CHANGES.md](CHANGES.md) file for details. - -### How do I upgrade my RaspiBlitz? - -The upgrade should be quite simple - you don't need to close any channels: - -- It would be best to get a second 16GB or 32GB SD card - but you can also reuse your old one -- In the SSH main menu of you RaspiBlitz choose `UPDATE` & follow the dialogs until shutdown -- Download the new RaspiBlitz image file from the [GitHub README](https://github.com/raspiblitz/raspiblitz/blob/dev/README.md#installing-the-software) -- Write the new image to the (new) SD card with a tool like [balena etcher](https://www.balena.io/etcher/) -- RaspiBlitz with new SD card image - it now goes through a recover/update phase - this may take some time. -- Once that's done, login once via SSH and use the password raspiblitz and set a new password A (can be your old one or a new one). - -After the final reboot your RaspiBlitz should be ready, running the new RaspiBlitz version. - -### Why do I need to re-burn my SD card for an update? - -I know it would be nicer to run just an update script and be ready to go. But then the scripts would need to be written in a much more complex way to be able to work with any versions of LND and Bitcoind (they are already complex enough with all the edge cases) and testing would become even more time consuming than it is now. That's not something that a single developer can deliver. - -For some, it might be a pain point to make an update by re-burning a new SD card - especially if you added your own scripts or made changes to the system - but that's by design. It's a way to enforce a "clean state" with every update - the same state that I tested and developed the scripts with. The reason for that pain: I simply cannot write and support scripts that run on every modified system forever - that's simply too much work. - -With the SD card update mechanism I reduce complexity, I deliver a "clean state" OS, LND/Bitcoind and the scripts tightly bundled together exactly in the dependency/combination like I tested them and it's much easier to reproduce bug reports and give support that way. - -Of course, people should modify the system, add own scripts, etc ... but if you want to also have the benefit of the updates of the RaspiBlitz, you have two ways to do it: - -1. Contribute your changes back to the main project as pull requests so that they become part of the next update - the next SD card release. - -2. Make your changes so that they survive an SD card update easily - put all your scripts and extra data onto the HDD, AND document for yourself how to activate them again after an update. The file `/mnt/hdd/app-data/custom-installs.sh` runs with sudo rights after an update/recovery from a fresh SD card. This is the place to put all the install commands, cronjobs or editing of system configs for your personal modifications of RaspiBlitz. - -*BTW there is a beneficial side effect when updating with a new SD card: You also get rid of any malware or system bloat that happened in the past. You start with a fresh system :)* - -### How can I update LND or bitcoind even before the next RaspiBlitz update? - -Try updating before a official RaspiBlitz at your own risk - you can find some info about that here: -https://raspibolt.org/bonus/raspberry-pi/odroid-setup.html#bitcoin-core-upgrade - - - -## SSH - -### What to do when on SSH I see "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!" - -This means that he public SSH key of the RaspiBlitz has changed to the one you logged in with the last time under that IP. - -It's OK when happening during an update - when you changed the SD card image. If it's really happening out of the blue - check your local network setup for a problem. Maybe the local IP of your RaspiBlitz changed? Is there a second RaspiBlitz connected? It's a security warning, so at least take some time to check if anything is strange. But also don't immediately panic - when it's in your local network, normally it's some network thing - not an intruder. - -To fix this and to be able to login with SSH again, you have to remove the old public key for that IP from your local client computer. Just run the following command (with the replaced IP of your RaspiBlitz): `ssh-keygen -R IP-OF-YOUR-RASPIBLITZ` or remove the line for this IP manually from the known_hosts file (see the path to the file in the warning message). - -After that, you should be able to login with SSH again. - -### How do I unplug/shutdown safely without SSH - -Just removing power from the RaspiBlitz can lead to data corruption if the HDD is right in the middle of a writing process. The safest way is always to SSH into the RaspiBlitz and use the "POWER OFF" option in the main menu. - -But if cannot login with SSH and you need to power off at least remove the LAN cable (network connection)first for sometime (around 10-30 secs - until you can see no more blinking lights on the HDD) and then remove the power cable. This should minimize the risk if data corruption in this situations. - -### I cannot connect via SSH to my RaspiBlitz. What do I do? - -- Check the command again with how it shows on the display - do you have it typed in correctly? -- Replace `ssh` with `sudo ssh` and try it (laptop admin password might be required). - -If that doesn't work, try to ping the IP of the RaspiBlitz with `ping [IP-of-RaspiBlitz]`. If you get no response on the ping requests and the device is not reachable, try this check list: - -- Make sure that your RaspiBlitz and your laptop are really on the same local network -- Check if you have a VPN running on your laptop - some VPNs block local network -- Some Routers have `IP Isolation` switched on - not allowing two devices to connect - -If you've checked those and SSH is still not working: Join the conversation on [GitHub Issue #420](https://github.com/raspiblitz/raspiblitz/issues/420). - -### How to SSH over Tor? - -SSH is already encrypted, why would I want to use it with Tor? -* Remote access when away from LAN. -* Anonymized access - Someone sniffing the traffic don't know where the server you are establishing a connection is, not the server side knows where the client is. - -Create Hidden Service: -`bash /home/admin/config.scripts/tor.onion-service.sh ssh 22 22` - -SSH over Tor: -`torsocks ssh admin@HiddenServiceAddress.onion` - -Get the address: -`sudo cat /mnt/hdd/tor/ssh/hostname` - -### How to setup port-forwarding with a SSH tunnel? - -To use a public server for port-forwarding thru a SSH tunnel you can use the following experimental script on the RaspiBlitz (since v1.2): - -`/home/admin/config.scripts/internet.sshtunnel.py` - -But first you need to make sure that the public server you are using is supporting SSH reverse-tunneling and authentication by public authorized key. Check the `/etc/ssh/sshd_config` on the public server. It should contain the following settings: - -``` -RSAAuthentication yes -PubkeyAuthentication yes -GatewayPorts yes -AllowTcpForwarding yes -ClientAliveInterval 60 -ClientAliveCountMax 2 -``` - -*Last two parameters were added as used in the ssh tunnel demo at #GPN19 https://media.ccc.de/v/gpn19-76-einen-server-daheim-ohne-ffentliche-ipv4-adresse#t=911* - -You can add those at the end of the file, save and reboot. - -On the RaspiBlitz you can then setup for example to forward the gRPC port 10009 (internal port) to the port 20009 on the public server (external port) with the user = `test` and server address = `raspiblitz.com` with the following command: - -`/home/admin/config.scripts/internet.sshtunnel.py on test@raspiblitz.com "10009<20009"` - -You can even set multiple port forwardings like with: - -`/home/admin/config.scripts/internet.sshtunnel.py on test@raspiblitz.com "10009<20009" "8080<9090"` - -Please be aware that after you set such a port forwarding you will need to set the domain of the public server as a `DynamicDNS` name (leave update url empty) and then connect mobile wallets fresh, or export the macaroons/certs again. When connecting the mobile wallets you may need to adjust ports manually after QR code scan. And if you SSH tunnel the LND node port `9735` you may also need to set the custom LND port script and maybe also a manual set of the domain in the LND service would be needed. This all is very experimental at the moment ... better integration will come in the future. - -To switch this SSH tunneling off again use: - -`/home/admin/config.scripts/internet.sshtunnel.py off` and also deactivate the DynamicDNS again. - -To check if a tunnel is running on the tunneling server check: `netstat -tulpn` - -### How do I setup just a port-forwarding user on my public server? - -Make sure the `/etc/ssh/sshd_config` has the following lines at the end: - -``` -RSAAuthentication yes -PubkeyAuthentication yes -GatewayPorts yes -AllowTcpForwarding yes -AuthorizedKeysFile /etc/ssh/authorized_keys/%u -``` - -The last one stores all authorized_keys in one directory with a file per user. See https://serverfault.com/questions/313465/is-a-central-location-for-authorized-keys-a-good-idea#424659 To prepare this run: -``` -mkdir /etc/ssh/authorized_keys -groupadd forwardings -``` - -To add a forwarding user run: -``` -useradd -g forwardings -d /home [USERNAME] -echo 'command="date" [CONTENT-OF-RASPIBLITZ-ROOT-SSH-PUBKEY]' > /etc/ssh/authorized_keys/[USERNAME] -``` - -### How to reset the ssh config and keys? - -- shutdown the RaspiBlitz - if you dont have touchscreen activated, disconnect LAN cable, wait until HDD/SSD activity slows down (no constant blinking) and then cut the power -- take out the SD card and connect it to your laptop - it should appear as a `boot` drive -- in the root directory of that `boot` drive create a file called `ssh.reset` -- that file can be empty or just copy another file on that drive and rename it () -- eject the drive from your laptop safely -- put SD card back into the RaspiBlitz (also make sure LAN cable is connected again) -- power up - the RaspiBlitz should boot up & reboot again -- then try again to SSH login - -If you see a "REMOTE HOST IDENTIFICATION HAS CHANGED!" warning on login, that's what we wanted - the SSH cert of your RaspiBlitz changed - thats good. We just need to remove the old one from our laptop first - on OSX you can use `rm ~/.ssh/known_hosts` (deletes all cached server certs) or remove the line with your RaspiBlitz IP manually from the `~/.ssh/known_hosts` file with a text editor. - -## Display - -### Can I flip the screen? - -There is now an option under `SETTINGS` to rotate the screen. - -To do it manually: For the default 3.5" LCD you need to edit the /boot/config.txt. Run `sudo nano /boot/config.txt` -Look for the line `dtoverlay=tft35a:rotate=270` towards the end. To flip the screen with 180 degrees change the line to `dtoverlay=tft35a:rotate=90` and reboot with `sudo reboot`. Reference: https://github.com/goodtft/LCD-show/issues/34 - -### How to fix my upside down LCD after update? - -Some displays have a different orientation. To fix this activate/deactivate the LCD-ROTATION option in the MAINMENU > SERVICES and let it reboot. You might need to do this up to 3 times until your display works correctly. - -### Can I run the RaspiBlitz without a display/LCD? - -The display is one of the nice features of the RaspiBlitz but it can run without it. Maybe not all the add-on features can be used to the full extent, but you can get started without the LCD and if you wish, plug it on later. - -If you want to use the HDMI output you can place a file called `hdmi` on the `boot` section of the RaspiBlitz sd card ... just connect the sd card to your laptop, create that file and then boot it up in the RaspberryPi. - -If you are already logged in you can use on the console the commands: - -- `hdmi` --> switch to HDMI -- `lcd` --> switch to LCD - -### How do I find the IP address when running without a display? - -If you can login into your local internet router it should show you the IP address assigned to the RaspberryPi. - -Another way is to use [Angry IP Scanner](https://angryip.org/) to find the IP address. - -You can also put an empty file just called `hdmi` (without any ending) onto the sd card when connected to your laptop and then start it up on the RaspberryPi. This will activate the HDMI port and if you connect a HDMI monitor to the RaspberryPi it will show you the RaspiBlitz status screen containing the local IP address. - -## Debug - -### How do I generate a Debug Report? - -If your RaspiBlitz is not working correctly and you like to get help from the community, it's good to provide more debug information, so others can better diagnose your problem. - -When you use the WebUI in the browser than you can follow the steps: - -- Login into the WebUI and enter the Dashboard (needs to be fully snyced) -- In the left navigation bar - choose "Settings" -- Under "Generate Debug Report" click "Generate" -- This might take some minutes, but then a Text-File will be offered for download - - You can also get a debug report thru the SSH menus: - -- SSH into your raspiblitz as admin user with your password A -- If you see the menu - use CTRL+C to get to the terminal -- To generate debug report run: `debug`, optionally create a link with `debug -l` -- Then copy all output beginning with `*** RASPIBLITZ LOGS ***` and share this - -*PLEASE NOTICE: Most private information (like IPs, node IDs, ...) will filtered from debug logs, but this might not catch all sensitive information - so recheck content yourself before you share publicly.* - -### I have the full blockchain on another storage. How do I copy it to the RaspiBlitz? - -Copying a already synced blockchain from another storage (e.g. your Laptop or external hard drive) can be a quick way to get the RaspiBlitz started or replacing a corrupted blockchain with a fresh one. Also that way you have synced and verified the blockchain yourself, and are not trusting the RaspiBlitz Torrent downloads (Don't trust, verify). - -One requirement is that the blockchain is from another bitcoin-core client with version greater or equal to 0.17.1. - -But we don't copy the data via USB to the device, because the HDD needs to be formatted in EXT4 and that is usually not read/writable by Windows or Mac computers. So I will explain a way to copy the data through your local network. This should work from Windows, Mac, Linux and even from another already synced RaspiBlitz. - -Both computers (your RaspberryPi and the other computer with the full blockchain) need to be connected to the same local network. Make sure that bitcoind/bitcoin-qt is stopped on the computer containing the blockchain. -If your blockchain source is another RaspiBlitz v1.5 or higher - go to `REPAIR` > `COPY-SOURCE`. -If your RaspiBlitz is below v1.5 then on the terminal `sudo systemctl stop bitcoind` and then go to the directory where the blockchain data is with `cd /mnt/hdd/bitcoin` - when the copy/transfer is done later reboot a RaspiBlitz source with `sudo shutdown -r now`. - -If everything described above is in order, start the setup of the new RaspiBlitz with a fresh SD card (like explained in the README) - it's OK that there is no blockchain data on your HDD yet - just follow the setup. When you get to the setup-point `Getting the Blockchain` choose the COPY option. Starting from version 1.0 of the RaspiBlitz this will give you further detailed instructions how to transfer the blockchain data onto your RaspiBlitz. In short: On your computer with the blockchain data source you will execute SCP commands that will copy the data over your local network to your RaspiBlitz. - -Once you finished all the transfers, the Raspiblitz will make a quick-check on the data - but that will not guarantee that everything in detail was OK with the transfer. Check further FAQ answers if you get stuck or see a final sync with a value below 90%. - -### Bitcoind tells me to reindex - how can I do this? - - To find/access information fast in large data sets like the Bitcoin blockchain indexes are needed. Those indexes can get corrupted on your HDD/SSD and to repair them they need to be rebuilt - re-indexed. Bitcoind has two different options to do this - a fast way called "reindex-chainstate" (which just rebuilds the UTXO set from the blocks as you have them) and the slow but complete way called just "reindex" that would even recheck all your block data - see for details here: https://bitcoin.stackexchange.com/questions/60709/when-should-i-use-reindex-chainstate-and-when-reindex - - So if you read in your debug logs of bitcoind that you should "reindex" you can try first just to do a fast "reindex-chainstate" and if that didnt worked a slow and full "reindex". - -See the raspiblitz script `./config.scripts/network.reindex.sh` or the REPAIR menu to start these processes. - -### Why is my "final sync" taking so long? - -First of all if you see a final sync over 90% and you can see from time to time small increase - you should be OK ... this can take a looong time to catch up with the network. Only in the case that you actively choose the `SYNC` option in the `Getting the Blockchain` is a final sync under 90% OK. If you did a torrent or a copy from another computer and you are seeing under 90% something went wrong, and the setup process is ignoring your prepared Blockchain and doing a full sync - which can almost take forever on a raspberryPi. - -If something is wrong (like mentioned above) then try again from the beginning. You need to reset your HDD for a fresh start: SSH in as admin user. Abort the final sync info with CTRL+c to get to the terminal. Then run `sudo /home/admin/XXcleanHDD.sh -all` and follow the script to delete all data in HDD. When finished power down with `sudo shutdown now`. Then make a fresh SD card from image and this time try another option to get the blockchain. If you run into trouble the second time, please report an issue on GitHub. - - -### How do I backup my Lightning Node? - -There are two ways of performing a Backup: - -#### 1) Securing your On-Chain- and Channel-Funds during Operation - -This is best done by auto backing-up the 'channel.backup' file to a remote location. But it just secures the funds you have in your on-chain wallet or in your channels. On recovery the channels will get closed. For details on how to setup see the README: -https://github.com/raspiblitz/raspiblitz/blob/v1.2/README.md#backup-for-on-chain---channel-funds - -#### 2) Making a complete LND data backup - -This backups all your LND data - including all open channels. But it's just intended to use when you move your LND data between computers, during update situations, or in rescue recoveries, because replaying out-dated backups can lead to the loss of all channel funds. - -To backup LND data in a rescue situation see next question "How can I recover my coins from a failing RaspiBlitz?". - -### How can I recover my coins from a failing RaspiBlitz? - -On a RaspiBlitz you have coins in your on-chain wallet (bitcoin wallet) and also coins in lightning channels. First we will try to recover all of them while trying to keep your channels open with "Recover LND data". If that is not possible you can fall back to the second option "Recover from Wallet Seed". - -#### 1) Recover LND data - -The best chance to recover all your LND data/channels is when you still can SSH into the RaspiBlitz and the HDD is still usable/reachable (mounted) - even if it shows some errors. If this is not possible anymore you should skip to the second option "Recover from Wallet Seed" or try to recover the LND data from the HDD (directory `lnd`) from another computer. - -If you still can SSH in and HDD is readable, we can try to rescue/export your LND data (funds and channels) from a RaspiBlitz to then be able to restore it back to a fresh one. For this you can use the following procedure ... - -To rescue/export your Lightning data from a RaspiBlitz (since v1.1): - -* SSH into your RaspiBlitz and EXIT to terminal from the menu. -* then run: `/home/admin/config.scripts/lnd.backup.sh lnd-export-gui` -* follow the instructions of the script. - -This will create a lnd-rescue file (ends on gz.tar) that contains all the data from the LND. The script offers you a command to transfer the lnd-rescue file to your laptop. If the transfer was successful you can now setup a fresh RaspiBlitz. Do all the setup until you have a clean new Lightning node running - just without any funding or channels. - -Then to restore your old LND data and to recover your funds and channels: - -* SSH into your new RaspiBlitz and EXIT to terminal from the menu. -* then run: `/home/admin/config.scripts/lnd.backup.sh lnd-import-gui` -* follow the instructions of the script. - -This script will offer you a way to transfer the lnd-rescue file from your laptop to the new RaspiBlitz and will restore the old data. LND then gets restarted for you, and after some time it should show you the status screen again with your old funds and channels. - -**Be aware that if backup is some hours old, channels could have been closed by the other party and it may take some time until you see funds back on-chain. If backup is somewhat older then 1 day also the channel counter-parties may have used your offline time to cheat you with an old state. And if your backup was not the latest state it could also be happening that you are posting an old channel state (seen as cheating) and funds of that channel get forfeited as punishment. So again .. this backup method can be risky, use with caution. While it's recommended to try in recover and rescue situations - it's not for regular backups.** - -#### 2) Recover from Wallet Seed - -Remember those 24 words you were writing down during the setup? That's your "cipher seed" - These words are very important for recovering your wallet. If you don't have them anymore: go back to option "Recover LND data" (see above) and check all possible ways to recover data from the HDD. If you still have the word seed: good, but read the following carefully: - -With the word seed you can recover the on-chain funds that LND was managing for you - but it does not contain all the details about the channels you have open - it's mostly the key to your funding wallet. If you were able to close all channels or never opened any, then you should be safe: The best results to recover on-chain funds from wallet seeds have been reported from people installing the Lightning Labs App on laptop and then using the wallet seed (and same wallet passwords): https://github.com/lightninglabs/lightning-app/releases. Other people were successful in this process using the Zap Desktop wallet (OSX, Win, Linux): https://zap.jackmallers.com/download - -If you had open channels it would be best to check if you have also the `channel.backup` file (Static-Channel-Backup feature) that is available since LND 0.6 (RaspiBlitz v1.2) and use it in the process below ... for more details on the `channel.backup` file see [README.md on backups](README.md#backup-for-on-chain---channel-funds). - -- SetUp a fresh RaspiBlitz (fresh SD-Card image and clean HDD). -- During the new SetUp, when you get to the point of creating the LND wallet (see image below). -- Choose `OLD - I had an old Node I want to recover/restore` option and then -- Choose `SEED+SCB - Seed & channel.backup file` option -- and follow the instructions to upload your `channel.backup` file and enter your seed - -Then give LND some time to re-scan the blockchain. In the end you will have restored your funding wallet. You maybe need to wait for your old channel counterparts to force close the old channels until you see the coins displayed again. - -If you don't have the `channel.backup` file but only the seed words there is a last hope - read this article: -https://medium.com/@guggero/did-you-lose-funds-on-the-lightning-network-because-of-a-disk-crash-8971b6a92494 - -*Important: If you see a zero balance for on-chain funds after restoring from seed ... see details discussed [here](https://github.com/raspiblitz/raspiblitz/issues/278) - you might try setup fresh this time with bigger look-ahead number.* - - -### How do I move funds & channels from RaspiBlitz to LND Lightning Desktop App? - -Before you start - download a LND-data-rescue file from your RaspiBlitz to your laptop `main menu -> UPDATE -> Update Anyway -> Start Update -> Download Backup -> FOLLOW INSTRUCTIONS and press Enter when ready with download -> START UPDATE`. Now your RaspiBlitz will power down. - -Now install the LND Lightning Desktop App for your OS: https://github.com/lightninglabs/lightning-app/releases - -Then start the App and create a new wallet - it's a throw-away wallet (will be deleted afterwards with no funds) - so you don't need to keep seeds safe. To get easily through the setup just make a photo of the seed with your mobile. If you get asked for funding - just click "done" until you reach the basic wallet screen. Then close the LND Desktop App. - -Now find out the path where LND stores the wallet data on your computer. - -Linux: [USER-DIRECTORY]/.config/lightning-app/lnd -OSX: [USER-DIRECTORY]/Library/Application Support/lightning-app/lnd -Windows: %USERPROFILE%\AppData\Roaming\lightning-app\lnd - -Then open that directory on your local file manager and delete all data in the `lnd` directory. - -Now unpack the lnd-rescue you made before and copy all the data from the `mnt/hdd/lnd` directory (including sub directories) into the LND-Path lnd directory. Delete the "lnd.conf" file. - -Now start the Lightning App again. Your wallet password should now be your RaspIBlitz Password C. - -**If it's working and you have access to your funds/channels on the Desktop App ... don't start the RaspiBlitz anymore. Delete SD card and HDD.** - -### How do I change the Name/Alias of my lightning node - -Use the "Change Name/Alias of Node" option in the Lightning - LND Wallet Options menu. The RaspiBlitz will automatically reboot after this. - - -### How do I change the public port LND/Lightning node is running on? - -There is a experimental script you can call from the terminal that will make all changes for you ... see details here: https://github.com/raspiblitz/raspiblitz/issues/100#issuecomment-466722712 - -### How do I solve a "signature mismatch after caveat verification" error? - -If you get this error by LND it means that something is wrong with the macaroons being used to communicate with LND .. see: https://github.com/lightningnetwork/lnd/blob/master/docs/macaroons.md - -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. - -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) - -### Why is my node not routing? - -1. You don't have inbound liquidity -2. Low uptime -3. Capital is committed to competitive destinations -4. Capital committed to destinations no one wants to send to -5. Fees are too high -6. Your inbound liquidity doesn't have good inbound liquidity itself - -### When using Auto-Unlock, how much security do I lose? - -The idea of the "wallet lock" in general, is that your private key / seed / wallet is stored in a encrypted way on your HDD. On every restart, you have to input the password once manually (unlock your wallet), so that the LND can read and write to the encrypted wallet again. This improves your security if your RaspiBlitz gets stolen or taken away - it loses power and then your wallet is safe - the attacker cannot access your wallet. - -When you activate the "Auto-Unlock" feature of the RaspiBlitz, the password of the wallet gets stored on the RaspiBlitz. So if an attacker steals the RaspiBlitz physically, it's now possible for them to find the password and unlock the wallet. - - -### I connected my HDD but it still says 'Connect HDD' on the display? - -Your HDD may have no partitions yet. SSH into the RaspiBlitz as admin (see command and password on display) and you should be offered the option to create a partition. If this is not the case: - -Check/Exchange the USB cable. Connect the HDD to another computer and check if it shows up at all. - -OSX: https://www.howtogeek.com/212836/how-to-use-your-macs-disk-utility-to-partition-wipe-repair-restore-and-copy-drives/ - -Windows: https://www.lifewire.com/how-to-open-disk-management-2626080 - -Linux/Ubuntu (desktop): https://askubuntu.com/questions/86724/how-do-i-open-the-disk-utility-in-unity - -Linux/Raspbian (command line): https://www.addictivetips.com/ubuntu-linux-tips/manually-partition-a-hard-drive-command-line-linux/ - -### How do I shrink the QR code for connecting my Shango/Zap/Zeus mobile phone? - -Make the fonts smaller until the QR code fits into your (fullscreen) terminal. In OSX use `CMD` + `-` key. In LINUX use `CTRL`+ `-` key. On WINDOWS Putty go into the settings and change the font size: https://globedrill.com/change-font-size-putty - -### 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 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. - -On details how to set port forwarding manually on your router model see: https://portforward.com - -### 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 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. - -On details how to set port forwarding manually on your router model see: https://portforward.com - -Also the self-testing of the RaspiBlitz to see if the port is forwarded or not might not work if your router is not supporting [Hairpinning](https://en.wikipedia.org/wiki/Hairpinning). - -### Why is my node address on the display yellow (not green)? - -Yellow is OK. The RaspiBlitz can detect that it can reach a service on the port 9735 of your public IP - this is in most cases the LND of your RaspiBlitz. But the RaspiBlitz cannot 100% for sure detect that this is its own LND service on that port - that's why it's just yellow, not green. - -For details on how to set port forwarding on your router model see: https://portforward.com - -### How can I set a fixed IP? - -Add an entry called `staticIP` in `raspiblitz.conf` to prevent external IP detection and force a fixed IP for your node. - -### How do I fix a displayed Error in my Config? - -When the LCD display is telling you to do a config check: -- go to the RaspiBlitz terminal (X on main menu) and run 'patch' -- start reboot with command: 'restart' -- go to the RaspiBlitz terminal run the command: 'check' -- now edit the RaspiBlitz config and get rid of the errors: 'nano /mnt/hdd/raspiblitz.conf' -- save config with: CTRL+o -- exit nano editor with: CTRL+x -- start reboot with command: 'restart' - -### Can I run the RaspiBlitz as Backend for BTCPayServer? - -BTCPay Server is a solution to be your own payment processor to accept Lightning Payments for your online store: https://github.com/btcpayserver/btcpayserver - -You can find setup instructions for a experimental setup here: https://goo.gl/KnTzLu - -Thanks to @RobEdb (ask on twitter for more details) for running his demo store with RaspiBlitz: https://store.edberg.eu - buy a picture of [him and Andreas](https://store.edberg.eu/produkt/jag-andreas/) :) - -### I don't have a LAN port on my Laptop - how do I connect to my RaspiBlitz? - -You don't need a LAN port on your laptop as long as you can connect over WLAN to the same LAN router/switch the RaspiBlitz is connected to .. and you are on the same local network. - -### 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: - -After flashing the SDcard image to the SDcard, reconnect the SDcard with the laptop or PC. It should appear as a drive on your computer. Open a text editor (a simple text editor like Notepad or VSCode, not Word) and write the name of the WiFi (the SSID) into the first line and the WiFi password into the second line. Then store the file as with the name just "wifi" (no extension) to the SDcard drive. Close the text editor and eject the SDcard to boot it up in your RaspiBlitz. Watch the LCD on boot up for possible error messages. - -The old legacy way: -https://github.com/raspibolt/raspibolt/blob/a21788c0518618d17093e3f447f68a53e4efa6e7/raspibolt/raspibolt_20_pi.md#prepare-wifi - -### Can I directly connect the RaspiBlitz to my laptop? - -If you have a LAN port on your laptop - or you have a USB-LAN adapter, you can connect the RaspiBlitz directly (without a router/switch) to your laptop and share the WIFI internet connection. You can follow this [guide for OSX](https://medium.com/@tzhenghao/how-to-ssh-into-your-raspberry-pi-with-a-mac-and-ethernet-cable-636a197d055) and this [guide for Windows](https://www.tomshardware.com/how-to/share-internet-connection-windows-ethernet-wi-fi). - -In short for OSX: - -* make sure all VPNs are off (can interfere with local LAN) -* connect with LAN directly -* Settings > Sharing/Freigaben > activate "internet sharing" from WLAN to Ethernet -* Settings > Network > Ethernet-Adapter > set to DHCP -* in terminal > `ifconfig` there you should see the IP of the bridge100 -* in terminal > `arp -a` and check for an IP of a client to the bridge -* in terminal > ssh admin@[clientIP] - -In short for Windows: - -* make sure all VPNs are off (can interfere with local LAN) -* connect Raspiblitz with laptop LAN/ethernet directly -* Control Panel > Network and Internet > Network and Sharing Centre -* Click on your active internet connection highlighted in blue -* Properties > Sharing -* Check the box titled "Allow other network users to connect through this computer's Internet connection -* Select LAN/Ethernet from the "Home networking connection:" dropdown menu -* Click OK -* Restart the Raspiblitz - -If anyone has experience on doing this in Linux please share. - -### Are those "Under-Voltage detected" warnings a problem? - -When your USB power adapter for the RaspiBlitz delivers too low of a power level, those messages with "Under-Voltage detected" (under-voltage) are shown on the display. This can lead to data loss/corruption on the HDD. If you see this just one or two times it's not OK, but can be in a tolerant window. Nevertheless it is important to make sure that your USB power adapter can deliver at least 3A (big and stable is good). If you still see those warnings maybe get a second USB Power adapter just for the HDD, and power the HDD through a Y-Cable - see https://en.wikipedia.org/wiki/Y-cable#USB or put a USB Hub with extra power between the Raspberry and the HDD. - - -### How do I return to the menu after exiting to the command line - -Type the command `raspiblitz` to return to the main menu if you exited to the command line. - -### How do I setup fresh/clean/reset and without going into recovery mode? - -When you put in a SD card with a new/clean RaspiBlitz image the RaspiBlitz will go into recovery mode because it detects the old data on your HDD and assumes you just want to continue to work with this data. - -But there might be cases where you want to start a totally fresh/clean RaspiBlitz from the beginning. To do so you need to delete the old data from the HDD. Choose the option `RESET-ALL` under `REPAIR` to delete all data and start fresh. - -When the HDD is clean, then flash a new RaspiBlitz sd card and your setup should start fresh. - -### My blockchain data is corrupted - what can I do? - -You could try to re-index, but that can take a very long time - multiple days or even weeks. But there are other options: - -1. Get new Blockchain - -Use `REPAIR` in the SSH main menu and then choose `RESET-CHAIN`. Then you get offered multiple options to get new blockchain data. - -2. Backup LND Data, make fresh Blitz, Replay LND Data - -You can backup your channel and wallet data, make a complete fresh RaspiBlitz and after that is setup, you replace the LND data with your old data. 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 or SD card 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)* - -### I have two RaspiBlitz in my network - can they both be public? - -Yes but you need to change the port number (for example to 9736) on at least one of your RaspiBlitzes - see how to change a port below. Then you can forward both ports from your home internet router to the matching RaspiBlitzes. - -### How can I enforce UASP mode for my SSD controller? - -By default just tested & selected SSD encasings/controller are running enabled with UASP in RaspiBlitz. UASP brings a speed up for the SSD but also if not well supported by the SSD encasing/controller can lead to system halts. If you know for sure that your SSD encasing/controller is supporting UASP fully you can place a file called `uasp.force` on the sd card boot section after flashing the image with your laptop. See details or report errors on issue [#2488](https://github.com/raspiblitz/raspiblitz/issues/2488) - -### I am facing maintenance/emergency mode on boot. How do I fix it? - -This behavior is caused by either the software that flashes the RaspiBlitz image onto the sd card, or by a faulty sd-card. The only solution is to try switching the software/computer you use for flashing and/or trying another sd card. - -See issues #3039, #1053 & #782 - -## Extras - -### How do I connect a UPS to the RaspiBlitz? - -A UPS (Uninterruptible Power Supply) is used to protect the RaspiBlitz against power outages. Normally you put it just between your normal power outlet and your RaspiBlitz and you are set. But some UPS offer a way to communicate with devices. This can be very useful for example if on a longer power outage the battery of the UPS runs low the RaspiBlitz could detect this and power down in a clean way - instead of a sudden stop that risks data loss or corruption. - - - There is an experimental script to connect the RaspiBlitz to a UPS over USB cable build by APC - the Model tested with was [APC Back-UPS BX - BX700U-GR](https://www.amazon.de/APC-Back-UPS-Unterbrechungsfreie-Stromversorgung-BX700U-GR/dp/B00T7BYRCK) but it should work with every APC model offering a USB port. \ -To turn it on run from terminal: `/home/admin/config.scripts/blitz.ups.sh on apcusb` - -- There is also a script dealing with Geekworm/Suptronics [X708 UPS HAT](https://www.amazon.com/Geekworm-Raspberry-Management-Detection-Shutdown/dp/B08DNRYM4Y/). The tested model was x708v1.2. \ -To turn it on run from terminal: `/home/admin/config.scripts/blitz.ups.sh on x708` - -If you have other UPS models or ways to connect ... feel free to extend this script. - -### Can I run my RaspiBlitz on Solar Energy? - -Yes - take a look at the project of [Chimezie Chuta](https://twitter.com/mezie16/status/1264513274080636928?s=20) - -![RaspiSolar](pictures/raspisolar.jpg) - -More details in his book ["A-Z of Building your own Full Bitcoin Lightning Node: A hand Book for Enthusiasts"](https://blockspace.shop/products/a-z-of-building-your-own-full-bitcoin-lightning-node-a-hand-book-for-enthusiasts) - -### How to use the Let's Encrypt client - -The [Let's Encrypt](https://letsencrypt.org/) client software [acme.sh](https://github.com/acmesh-official/acme.sh) is -included (since v1.6) and can be used to create TLS certificates that are signed by the Certificate Authority (*Root -CA*) **Let's Encrypt** and which are therefore trusted on all modern platforms. - -In order to successfully get a signed certificate you need to **verify ownership** over a **DNS domain** or a **full -qualified domain name** (**FQDN**). Currently Let's Encrypt **doesn't** issue certificates for IP addresses. The two -most common standards for verification of control are `HTTP-01` and `DNS-01`. - -The **acme.sh** client supports both modes and has a large number of DNS services (more than 50) it can interact with. -More details can be found on the [acme.sh wiki](https://github.com/acmesh-official/acme.sh/wiki). - -#### Let's Encrypt - HTTP-01 - -To use `HTTP-01` your RaspiBlitz needs to be accessible directly from the Internet on a **public IP address** on **port -80**. If you don't have a public IPv4/IPv6 IP on either `eth0` or `wlan0` then it might be possible to use **NAT port -forwarding** or an **autossh-tunnel** to fulfill this requirement. - -If everything (this includes creating a `DNS A` or `DNS CNAME` record that points to a static or dynamic IP address) is -set up so that the Let's Encrypt servers can reach your RaspiBlitz on port 80 then the following command will perform -the initial creation of a signed certificate and will also store the configuration data needed to regularly refresh it. -Just run this once and then lean back and forget about it. :-D - -``` -~/.acme.sh/acme.sh --keylength ec-256 --issue -d hostname.example.com -w /var/www/letsencrypt/ -``` - -#### Let's Encrypt - DNS-01 - -The `DNS-01` standard **proves ownership** by creating `DNS TXT` records on the domain or subdomain you want to use. -This requires interaction with and access to a dns server but comes with the benefit that `wildcard certificates` -can be issued. - -It is beyond the scope of this FAQ entry to explain all details of this - please refer to the official documentation. -Assuming you are using the [DuckDNS](https://www.duckdns.org/) dynamic DNS service then the following command will -get a certificate (including a wildcard subject alternative name (**SAN**) listing). It will also take care of continuous -renewals. - -``` -export DuckDNS_Token="abcdefgh-0123-56ij-78kl-abcd9012efgh" -~/.acme.sh/acme.sh --issue --keylength ec-256 --dns dns_duckdns -d hostname.duckdns.org -d *.hostname.duckdns.org -``` - -As mentioned, more that 50 other services (including self-hosted options like e.g. `nsupdate` or `PowerDNS`) are supported. - -#### Let's Encrypt - eMail Address - -The installation process of the `acme.sh` client includes a prompt for an eMail address. The data entered there is -stored in the `accounts.conf` file as `ACCOUNT_EMAIL`. This address is used by Let's Encrypt to notify you about -the expiry of certificates (which is not really needed as renewals are automated) and also about changes to their -**Terms of Service**. For more details please check their [privacy policy](https://letsencrypt.org/privacy/). - -It is currently considered completely fine to leave this field empty and not provide an eMail address. - -#### Let's Encrypt - Installation details - -The `acme.sh` script is installed in `/home/admin/.acme.sh/` - the configuration and the certificates are stored on the -external hard disk in `/mnt/hdd/app-data/letsencrypt`. - -### What is this mnemonic seed word list? - -With the 24 word list given you by LND upon wallet creation you can recover your private key. You should write it down and store it at a safe place. Bear in mind that *this 24 word mnemonic seed is not based on the BIP 39* and therefore cannot be recovered using a Bitcoin wallet. - -For more background on the LND mnemonic seed [read this article](https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md#recovering-funds-from-lnd-funds-are-safu). - -### How do I set up VNC? - -Enter the Console/Terminal by selecting the last option from the Raspiblitz menu. -![Raspiblitz menu](pictures/vnc-go-to-console.png) - -Enable the VNC server using raspi-config: - -`sudo raspi-config` - -In the menu, go to -*Interfacing Options > VNC > Enable* -![Raspi-config menu](pictures/vnc-raspi-config-menu.png) - -After that reboot the Raspiblitz. You can do this easily from the Raspiblitz menu. -In the command line, type: -`menu` -The Raspiblitz menu has a reboot option if you scroll down. Select it and reboot. - -![Raspi-config menu](pictures/vnc-reboot-from-menu.png) - - -After the Raspiblitz is rebooted, set a password for the VNC Server: -`sudo vncpasswd -service` - -Set the Authentication parameter: -`sudo echo "Authentication=VncAuth" > /etc/vnc/config.d/common.custom` - -Restart the VNC Server for settings to take effect: -`sudo systemctl restart vncserver-x11-serviced` - -Open the relevant port in the firewall (ufw): -`sudo ufw allow vnc` - -Start the VNC server from the Raspiblitz: -`vncserver` -This will run by default in the display number '1'. If you want to specify another number, run this (change *\* to whatever you prefer): -`vncserver :` - -![VNC server started](pictures/vnc-server-started.png) - -From the VNC client (e.g. your PC, laptop), connect to the IP that the previous command has displayed in the screen (I covered it in pink in the screenshot). If everything is alright, you can see the display from the VNC client now. - -In order to stop broadcasting your display, stop the server from the Raspiblitz with this: -`vncserver -kill :` - -For example: -`vncserver -kill :1` - - -**Note**: You may have to set the resolution through raspi-config in certain situations: -`sudo raspi-config` - *Advanced Options > Resolution* - -**Hint**: From macOS, there is a built in VNC client hidden away at: /System/Library/CoreServices/Applications/Screen\ Sharing.app - -**Hint 2**: Find more info about VNC in Raspberry [here](https://www.raspberrypi.org/documentation/remote-access/vnc/). - - -### Why use BTRFS on RaspiBlitz? - -The file system [BTRFS](https://de.wikipedia.org/wiki/Btrfs) for your HDD/SSD provides two new features to make the data storage more resilient: - -#### Storing your important Data in RAID1 with a USB Thumb Drive - -BTRFS comes with build in RAID features - that means that data can be stored on two physical drives at the same time and if one is failing the other one can be used to heal the other one or its replacement. - -For the Raspiblitz this means that you can connect an additional 32GB USB3 Thumb Drive (under 10 USD) and have it running in a RAID with your HDD/SSD - keeping your LND channel data and all other important data of your RaspiBlitz double-safe. - -#### Snapshotting the Blockchain - -BTRFS comes with a build in snapshot feature - that means that your RaspiBlitz can make every day a backup of the blockchain data and if a blockchain corruption occurs (example thru a power outage) there is no need to sync the complete chain again. Just switch back to the last backup state and quickly sync up from there. On BTRFS such backups can be done as snapshots that dont need much more space on the drive and are quickly done - no need to buy a bigger SSD or wait for copying over 200GB. - -#### How do I use BTRFS on RaspiBlitz? - -Because the BTRFS is still experimental it's a bit hidden. There are two ways to activate: - -- When you start a fresh setup just connect a 32GB Thumb Drive on the second USB3 port from the beginning and you should be asked during HDD setup if you want to try out BTRFS and gave the Thumb Drive as RAID1. - -- If you have a existing RaspiBlitz and you want to switch to BTRFS then you need to export a Migration File (MAINMENU > REPAIR > MIGRATION) an then format your HDD/SSD clean. When you import a Migration File during a fresh Setup (see above) you will get the option to format the HDD/SSD with BTRFS. - -Once the Blitz is running on BTRFS you can use the '/home/admin/config.scripts/blitz.datadrive.sh' script to add a RAID drive or make a snapshot. - -#### How to recover a BTRFS partition? - -This articles goes thru the usual options: -https://ownyourbits.com/2019/03/03/how-to-recover-a-btrfs-partition/ -https://seravo.fi/2015/using-raid-btrfs-recovering-broken-disks diff --git a/README.md b/README.md index e2fb8712b..955fe0b02 100644 --- a/README.md +++ b/README.md @@ -1,1429 +1,38 @@ - - # ![RaspiBlitz](pictures/raspilogo_tile_400px.png) -_Build your own Lightning & Bitcoin Fullnode on a RaspberryPi with an optional Display._ - -`Version 1.11.0rc5 with bitcoin 26.0, lnd 0.17.3 & Core Lightning 24.02.1` ([api](https://github.com/fusion44/blitz_api)|[web](https://github.com/raspiblitz/raspiblitz-web)) +_Build your own Bitcoin & Lightning Fullnode on a RaspberryPi with an optional Display._ ![RaspiBlitz](pictures/raspiblitz.jpg) -**The RaspiBlitz is a do-it-yourself Lightning Node (LND and/or Core Lightning) running together with a Bitcoin-Fullnode on a RaspberryPi (1TB SSD) and a nice display for easy setup & monitoring.** +**The RaspiBlitz is a do-it-yourself Bitcoin & Lightning Fullnode running on a RaspberryPi with 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 open-source ecosystem of Bitcoin by becoming a full part of it. ---- +**Links to Quickstart your RaspiBlitz journey:** - +- [Project Homepage: raspiblitz.org](https://raspiblitz.org) +- [How to build & setup your own RaspiBlitz & Documentation](https://docs.raspiblitz.org/docs/intro) +- [Download latest SD Card images](https://docs.raspiblitz.org/docs/setup/software-setup/download) +- [How to get Support](https://docs.raspiblitz.org/docs/community/support) -## Table of Contents +**Additional Resources:** -- [Feature Overview](#feature-overview) -- [Time Estimate to Set Up a RaspiBlitz](#time-estimate-to-set-up-a-raspiblitz) -- [Hardware Needed](#hardware-needed) -- [Assemble your RaspiBlitz](#assemble-your-raspiblitz) -- [Downloading the Software](#downloading-the-software) -- [Write the SD-Card image to your SD Card](#write-the-sd-card-image-to-your-sd-card) -- [Boot your RaspiBlitz](#boot-your-raspiblitz) -- [Support](#support) -- [Setup Process (Detailed Documentation)](#setup-process-detailed-documentation) -- [Import a Migration File](#import-a-migration-file) -- [Make a RaspiBlitz out of your Umbrel, Citadel or MyNode](#make-a-raspiblitz-out-of-your-umbrel-citadel-or-mynode) -- [Interface / APIs](#interface--apis) -- [Updating RaspiBlitz to new Version](#updating-raspiblitz-to-new-version) -- [Build the SD Card Image](#build-the-sd-card-image) -- [FAQ](#faq) -- [Community Development](#community-development) +- [ChangeLog](CHANGES) +- [FAQ User](https://docs.raspiblitz.org/docs/faq) +- [FAQ Development](https://docs.raspiblitz.org/docs/faq/dev) +- [FAQ Core Lightning](https://docs.raspiblitz.org/docs/faq/cl) +- [Workshop Tutorial](https://docs.raspiblitz.org/docs/faq/cl) +- [Security Policy](https://docs.raspiblitz.org/docs/security) +- [Alternative Platforms](alternative.platforms/README) +- [Automated Builds](ci/README) +- [MIT OpenSource License](LICENSE) ---- +**Developer Notes:** -## Feature Overview +This is main RaspiBlitz repo containing the **bash & python** scripts to build the RaspiBlitz software. It it complimented by the following side repos: -Additional Services that can be installed thru WebUI (beginners): +- [WebUI](github.com/raspiblitz/raspiblitz-web) (React & Tailwind) +- [API](github.com/fusion44/blitz_api) (Python FastAPI) +- [Documentation](github.com/raspiblitz/raspiblitz-docs) (Docusaurus) -- **Ride the Lightning (RTL)** (LND & CoreLightning Node Manager WebUI) [details](https://github.com/Ride-The-Lightning/RTL) -- **ThunderHub** (LND Node Manager WebUI) [details](https://www.thunderhub.io/) -- **BTC-RPC-Explorer** (Bitcoin Blockchain Explorer) [details](https://github.com/janoside/btc-rpc-explorer) -- **BTCPay Server** (Bitcoin Payment Processor) [details](https://btcpayserver.org) -- **LNbits** (Lightning wallet/accounts System) [details](https://twitter.com/lnbits/status/1253700293440741377?s=20) -- **Mempool Explorer** [details](https://github.com/mempool/mempool) -- **JAM** (JoinMarket Web UI) [details](https://github.com/joinmarket-webui/joinmarket-webui) - -Further Services that are just available thru SSH menu (advanced users): - -- **ElectRS** (Electrum Server in Rust) [details](https://github.com/romanz/electrs) -- **SpecterDesktop** (Multisig Trezor, Ledger, COLDCARDwallet & Specter-DIY) [details](https://github.com/cryptoadvance/specter-desktop) [app connection guide](https://web.archive.org/web/20220815214301/https://www.d11n.net/connect-specter-desktor-with-raspiblitz.html) -- **Lightning Terminal (Loop, Pool & Faraday)** (Manage Channel Liquidity) [details](https://github.com/lightninglabs/lightning-terminal#lightning-terminal-lit) -- **JoinMarket** (CoinJoin Service) [details](https://github.com/JoinMarket-Org/joinmarket-clientserver) -- **JoinMarket Web UI** (Browser-based interface for JoinMarket) [details](https://github.com/joinmarket-webui/joinmarket-webui) -- **Balance Of Satoshis** (Commands for working with LND balances) [details](https://github.com/alexbosworth/balanceofsatoshis/blob/master/README.m -- **Kindle Display** (Bitcoin Status Display made with a jailbroken Kindle) [details](https://github.com/dennisreimann/kindle-display) -- **Stacking Sats Kraken** (Auto-DCA script) [details](https://github.com/dennisreimann/stacking-sats-kraken) -- **Circuit Breaker** (Lightning Channel Firewall) [details](https://github.com/lightningequipment/circuitbreaker/blob/master/README.md) -- **PyBlock** (Python Util & Fun Scripts) [details](https://github.com/curly60e/pyblock/blob/master/README.md) -- **Sphinx Chat Relay Server** [details](https://github.com/stakwork/sphinx-relay/blob/master/README.md) -- **Telegraf metrics** [details](https://github.com/rootzoll/raspiblitz/issues/1369) -- **Chantools** (Fund Rescue) [details](https://github.com/guggero/chantools/blob/master/README.md) -- **Suez** (Channel Visualization for LND & CL) [details](https://github.com/prusnak/suez#suez) -- **Helipad** (Podcasting 2.0 Boostagram reader) [details](https://github.com/Podcastindex-org/helipad) -- **Squeaknode** [details](https://github.com/yzernik/squeaknode) -- **CL Spark Wallet** (WalletUI with BOLT12 offers) [details](https://github.com/shesek/spark-wallet#progressive-web-app) -- **CL plugin: Sparko** (WalletUI & HTTP-RPC bridge) [details](https://github.com/fiatjaf/sparko#the-sparko-plugin) -- **CL plugin: CLBOSS** (Automated Node Manager) [details](https://github.com/ZmnSCPxj/clboss#clboss-the-c-lightning-node-manager) -- **CL plugin: The Eye of Satoshi** (Watchtower) [details](https://github.com/talaia-labs/rust-teos/tree/master/watchtower-plugin) -- **Tallycoin Connect** (Use Tallycoin with your own node) [details](https://github.com/djbooth007/tallycoin_connect) -- **LNDg** (WebUI analyze/manage lnd with automation) [details](https://github.com/cryptosharks131/lndg) -- **LNDK** (runs on top of LND to help forward onion messages (BOLT 12)) [details](https://github.com/lndk-org/lndk) - -You can connect the following Wallet-Apps to your RaspiBlitz (thru SSH menu): - -- **Zeus** (Android & iOS) [details](https://zeusln.app) -- **Zap** (Android & iOS) [details](https://www.zaphq.io) -- **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) -- **Alby** (Desktop) [details](https://getalby.com) - -Also many more features like Touchscreen, Channels Autopilot, Backup, DynDNS, SSH-Tunneling, UPS Support, ... - -## SECURITY DISCLAIMER - -This is Open-Source Software licensed under the [MIT License](LICENSE). This license explicitly excludes the authors & publishers from any legal liabilities including funds you manage with this software. Its use at your own risk - see [LICENSE](LICENSE) legal text for details. - -Also the RaspiBlitz offers lots of additional apps for install. With every additional app installed (or preinstalled in a fatpack sd card image) you are trusting also the authors & dependencies of those additional projects with the security of your system & funds (different legal licensed may apply also). To reduce preinstalled apps & features from the start we provide a minimal sd card image for more advanced users (see download section below). For more details on this topic see our [SECURITY](SECURITY.md) documentation. - -## 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. - -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, Citadel or myNode you have basically all the hardware needed and you can make the [Migration to RaspiBlitz from Umbrel/Citadel/myNode](#make-a-raspiblitz-out-of-your-umbrel-citadel-or-mynode) under one hour. - -## Hardware Needed - -All parts together cost around 200-300 USD - based on shops and location. - -### Buy a ready-2-go RaspiBlitz (Germany, EU and International) - -If you like to support the RaspiBlitz project you can order a plug&play RaspiBlitz from [raspiblitz.com](https://raspiblitz.com) - -Find a list of other shops selling a plug&play RaspiBlitz in your area on [raspiblitz.org](https://raspiblitz.org). - -### Amazon Shopping List (buy parts & build it yourself) - -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._ - -- 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) -- 1TB SSD - SanDisk SSD Plus 1TB 2.5" : [amazon referral link](https://geni.us/raspiblitz-1000gb-san) _other 1TB SSD models might cause power issues_ -- SSD-case - UGREEN 2.5" External USB 3.0 Hard Disk Case with UASP support : [amazon referral link](https://geni.us/raspiblitz-ssd-case) -- MicroSDCard 32GB - Samsung PRO Endurance 32 GB microSDHC UHS-I U1: [amazon referral link](https://geni.us/raspiblitz-sc-card) -- Heatsink Case for RPi4 : [amazon referral link](https://geni.us/heatsink-raspi4) -- LCD - 3.5" RPi Display, GPIO connection, XPT2046 Touch Controller: [amazon referral link](https://geni.us/raspiblitz-touchscreen) - -_If the above mentioned LCD screen is sold out you can also use these different vendors for the screen on Amazon:_ - -- Quimat 3,5'' Zoll Inch Touch -- ELEGOO Display 3.5" Zoll TFT LCD -- kuman 3.5 Inch Touch Screen TFT Monitor -- Waveshare 3.5inch Display for Raspberry Pi - -With all LCD screen models dont use the ones that have an HDMI port/connector - what you need is a 3.5 inch LCD screen model (resolution of 480×320) that connects only thru the GPIO ports (SPI) and has an XPT2046 touch controller. - -_You can even pay for your RaspiBlitz Amazon Shopping with Bitcoin & Lightning through [Bitrefill](https://blog.bitrefill.com/its-here-buy-amazon-vouchers-with-bitcoin-on-bitrefill-bb2a4449724a)._ - -[What other case options do I have?](FAQ.md#what-other-case-options-do-i-have) - -## Assemble your RaspiBlitz - -When you have all parts you need to: - -- Assemble the Heatsink-Case on the RaspberryPi (follow the instructions in package). -- Put the SSD/HDD into the Case and connect it per USB to the RaspberryPi (blue ports). -- Add the display on top with the pins like in picture below. -- Plug in the network cable. - -In the end your RaspiBlitz should look like this: - -![HardwareSetup](pictures/hardwaresetup.jpeg) - -You now have the hardware ready for your RaspiBlitz - whats missing is the software to run. This is normally done by downloading an image file and then writing it (flashing it) to the sd card. This is a bigger file (multiple GigaBytes) so make sure to have the available storage space on your laptop. If you are a very advanded user who is able to read/verify code or you like to run a self-modified/forked version of RaspiBlitz you can also build the sd card image yourself - see the [Build your own sd card image](#build-the-sd-card-image) section for this. - -## Downloading the Software - -In this section you find the latest ready-to-use RaspiBlitz SDcard images. Basically you just download, write/flash the image file to an sd card and start your RaspberryPi with it - its the same for first install or updating to a newer version. You can choose from two ready-made sd card images below: - -### FATPACK SD Card Image (Beginners - WebUI) - -This is the sd card image you should choose if your at the beginning of your RaspiBlitz journey or you are a casual node runner wanna download the next update/upgrade - with WebUI & fast installing bonus apps. - -_WARNING: THIS IS STILL A RELEASE CANDIDATE VERSION
-JUST USE FOR TESTING, HIGHER RISK OF LOSING FUNDS!_ - -- **FATPACK SD CARD IMAGE ⮕ [raspiblitz-fat-v1.11.0rc5-2024-03-20.img.gz](https://raspiblitz.fulmo.org/images/raspiblitz-fat-v1.11.0rc5-2024-03-20.img.gz)** -- SHA-256: ed9c986e2d3a64244aae50344237c695c32e9966939ef0e637a1a4440d9dd235 - - -### MINIMAL SD Card Image (Experienced Users - SSH) - -This is the sd card image for RaspiBlitz users that are already more experienced and want to use just a limited set of features of the RaspiBlitz. This image has just the bare minimum of features pre-installed - LCD & HDMI output is off by default. Setup, Update or Recovery needs to be done thru SSH login - API & WebUI are later available but are not preinstalled/activated by default. The RaspiBlitz will download & compile just the tools that are in your ´raspiblitz.conf´ - this will take longer but as a trade-off this RaspiBlitz then just runs with a reduced set of dependencies and so a minimalized attack vector and better performance. Its for the serious & experienced node runners. - -_WARNING: THIS IS STILL A RELEASE CANDIDATE VERSION
-JUST USE FOR TESTING, HIGHER RISK OF LOSING FUNDS!_ - -- **MINIMAL SD CARD IMAGE ⮕ [raspiblitz-min-v1.11.0rc5-2024-03-20.img.gz](https://raspiblitz.fulmo.org/images/raspiblitz-min-v1.11.0rc5-2024-03-20.img.gz)** -- SHA-256: 010f212871cb2315e944726857a74594fab0fc405abe1b70e6ccff847f84fbc4 - - -Further Info: - -- [What's new in Version 1.11.0 of RaspiBlitz?](CHANGES.md#whats-new-in-version-1110-of-raspiblitz) -- [How to update my RaspiBlitz?](README.md#updating-raspiblitz-to-new-version) -- [How to migrate to RaspiBlitz from Umbrel/myNode/Citadel](#make-a-raspiblitz-out-of-your-umbrel-citadel-or-mynode) - -## 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 (32GB minimum) - you can use the very easy tool Balena Etcher for this: . -It's available for Win, Mac & Linux. - -## Boot your RaspiBlitz - -Insert the SD card and connect the power plug. - -- Make sure to connect the raspberry with a LAN cable to the internet at this point. -- Make sure that your laptop and the raspberry are on the same local network. - -**Troubleshoot:** - -- [I don't have a LAN port on my Laptop - how to connect to my RaspiBlitz?](FAQ.md#i-dont-have-a-lan-port-on-my-laptop---how-do-i-connect-to-my-raspiblitz) -- [Is it possible to connect the Blitz over Wifi instead of using a LAN cable?](FAQ.md#is-it-possible-to-connect-the-blitz-over-wifi-instead-of-using-a-lan-cable) -- [Can I directly connect the RaspiBlitz with my laptop?](FAQ.md#can-i-directly-connect-the-raspiblitz-to-my-laptop) -- [I connected my HDD, but it still says 'Connect HDD' on the display?](FAQ.md#i-connected-my-hdd-but-it-still-says-connect-hdd-on-the-display) - -When everything boots up correctly (one reboot is normal), you should finally see the local IP address of your RaspiBlitz on the LCD panel. - -- [How do I find the IP address when running without a display?](FAQ.md#how-do-i-find-the-ip-address-when-running-without-a-display) - -![LCD0](pictures/lcd0-welcome.png) - -Now open up a terminal ([OSX](https://www.youtube.com/watch?v=5XgBd6rjuDQ)/[Win10](https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/)) and connect through SSH with the command displayed by the RaspiBlitz: - -`ssh admin@[YOURIP]` → use password: `raspiblitz` - -**Now follow the dialogue in your terminal.** - -_Further down you will find more [detailed documentation of the setup process](#setup-process-detailed-documentation)._ - -- [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. - -### Documentation - -1. Look up the [FAQ](FAQ.md) if you can't find an answer to this question/problem. - -2. If you have a hardware problem, please check that your hardware parts are exactly the parts recommended in the shopping list above. Different screens or even SSD-casings can cause problems. - -3. Please determine if your problem/question is about RaspiBlitz or for example with LND or Core Lightning. For example if you can't route a payment or get an error when opening a channel that is an LND/Core Lightning question/problem and is best answered by the [LND dev community](https://dev.lightning.community) or the [Core Lightning documentation](https://lightning.readthedocs.io/) - -4. Go to the GitHub issues of the RaspiBlitz: [https://github.com/rootzoll/raspiblitz/issues](https://github.com/rootzoll/raspiblitz/issues) Do a search there. Also check closed issues by removing 'is:open' from the filter/search-box. - -5. If you haven't found an answer yet, open a new issue on the RaspiBlitz GitHub. You may have to register an account with GitHub for this. If it's a bug with the RaspiBlitz, please add (copy+paste) a Debug Report to your issue (see [FAQ](FAQ.md) for how to generate them) and/or add some screenshots/photos so the community gets more insight into your problem. - -### Groups - -There are plenty off rooms you can find Raspiblitz users that can help you: - -1. [Telegram English](https://t.me/raspiblitz) - -2. [Telegram Deutsch](https://t.me/raspiblitz_DE) - -3. [Telegram Spanish](https://t.me/raspiblitz_ES) - -4. [Telegram Italian](https://t.me/raspiblitz_italia) - -5. [Telegram Russian](https://t.me/raspiblitz_RU) - -6. [Keybase](https://keybase.io/team/raspiblitz) - -7. [Matrix - Element client](https://element.io/) Channel: #raspiblitz:libera.chat - -8. IRC - Libera chat -> irc.libera.chat:6697 -> Channel: #raspiblitz - -9. Sphinx Chat -> sphinx.chat://?action=tribe&uuid=YFsuxCApuU-TBIRWeWY_Gl52IOx2clJKZYLxDn78Z9RgcWNx9zUube7mkK4IyXQjLril-tgKZs3wOxDlWqpiyxp8jTbt&host=tribes.sphinx.chat -> [Connection code](YFsuxCApuU-TBIRWeWY_Gl52IOx2clJKZYLxDn78Z9RgcWNx9zUube7mkK4IyXQjLril-tgKZs3wOxDlWqpiyxp8jTbt) --> [QR code](https://github.com/rootzoll/raspiblitz/issues/2089#issuecomment-805789854) - -## Setup Process (Detailed Documentation) - -_The following documentation will provide more detailed background information on the setup process._ - -If you are looking for a tutorial on how to organize a workshop to build the RaspiBlitz, [see here](WORKSHOP.md). - -### Basic Setup - -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 to do with the connected hard drive/SSD. - -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 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) - -First thing to setup is giving your RaspiBlitz a name: - -![SSH1](pictures/ssh1-name.png) - -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 Core 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 Core Lightning offers. - -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 Core Lightning._ - -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`: - -![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 Core 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/Core 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) - -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 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. -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 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://raspibolt.org/guide/raspberry-pi/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. - -_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 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 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 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: - -![SSH4](pictures/ssh4-scripts.png) - -### Final Setup - -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 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 your seed words for safe storage. - -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 - Self validate all Blocks - -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 ._ - -#### 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 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 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-storage-how-do-i-copy-it-to-the-raspiblitz) - -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. - -![SSH4](pictures/ssh4-done.png) - -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. -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 - 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) - -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 - -Once the Blockchain is synced you will enter the SSH Main Menu: - -![SSH5](pictures/ssh5-mainmenu.png) - -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._ - -If you need an idea of what the most basic next steps to experience Lightning would be: - -- 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 web interface in your browser. - -Have fun riding the lightning :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. - -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. - -![SSH9dz](pictures/ssh9z-ready.png) - -_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) -- [Why is my node address on the display yellow (not green)?](FAQ.md#why-is-my-node-address-on-the-display-yellow-not-green) - -#### LIGHTNING (Basic Node Management) - -Under `LND/Core 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 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._ - -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. - -##### CHANNEL: Open a Channel with Peer - -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](https://t.me/raspiblitz) - -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._ - -##### 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._ - -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._ - -##### NAME: Change name of your Node - -Here you can change the alias name of your node as it is shown as part of the Lightning network. - -##### CLOSE ALL: Closing all open Channels - -_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 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. - -##### CASHOUT: Remove Funds from on-chain Wallet - -Use if you want to remove all funds from the RaspiBlitz. - -#### SETTINGS: Basic Settings of RaspiBlitz - -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): - -##### Touchscreen (experimental) - -Your RaspiBlitz has an LCD that is touchscreen capable. -You can switch on this new feature that is still in development. - -![RTL](pictures/touchscreen.webp) - -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) -- Invoice - creates an Invoice-QR code that can be used for payments -- Off - Shutdown or Restart the RaspiBlitz - -Please mind that the touchscreen is still experimental and with recent changes is missing certain UI fixes. This might take still until a later version where the touchscreen is planned for a refactor/rewrite. - -##### 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. - -##### Run behind Tor - -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 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: - -- 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 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". - -Once activated you will see an additional option in the SSH Main Menu that will give you more options to operate the Testnet & Signet. - -To get some bitcoin testnet coins, you can use "faucets" from different places on the internet, here are a few links: - -- -- -- -- - -You can read more about TESTNET and Bitcoin faucets here: - -##### ZeroTier - -With ZeroTier you can add your RaspiBlitz to a software defined network - see for details: - -##### LND LIGHTNING LABS NODE - -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 Core 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 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 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). - -##### LND Circuitbreaker (Firewall for LND) - -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: - -##### LND Auto-Unlock - -The RaspiBlitz will automatically unlock the LND wallet upon every start. - -This feature is based on [https://raspibolt.org/bonus/lightning/auto-unlock.html#bonus-guide-auto-unlock-lnd-on-startup]. - -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) - -##### StaticChannel/Emergency-Backup on Nextcloud - -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: - in its basics it's 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: - -##### StaticChannel/Emergency-Backup 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 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. - -##### StaticChannel/Emergency-Backup per SCP/SSH to other server - -See [SCP Backup Target](README.md#b-scp-backup-target) for details on how to setup static channel backups using SCP. - -##### CORE LIGHTNING NODE - -This needs to be switched on to see the sub-settings options for Core 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 Core Lightning node. -Also under `SERVICES` some apps might only be available if Core Lightning is activated. - -For more details on this lightning node implementation go to the [Core Lightning FAQ page](FAQ.cl.md). - -##### CL CLBOSS Automatic Node Manager - -CLBOSS is an automated manager for Core 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 Core Lightning wallet by encrypting it with your password C. -On every system restart you will need to decrypt/unlock with that password before Core Lightning can use the wallet. -This adds some physical security for example in case your node get stolen. - -#### SERVICES: Activate/Deactivate Services - -The RaspiBlitz offers further Services, Apps and configuration (scroll down to see all options in the RaspiBlitz) also some Apps & Services might just be available if you installed/activated LND or Core Lightning: - -![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): - -##### Electrum Rust Server - -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. - -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: - -[![Video Tutorial](pictures/video-electrs.png)](https://www.youtube.com/watch?v=AiosKK_TA7w) - -[More Details on Service](https://github.com/romanz/electrs) - -After install, you will see a new `ELECTRS` option in the SSH main menu - it will give you all the information you need to start using it. - -##### 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](pictures/btcpay.png) - -Find all details on how to use the BTCPay Server on your RaspiBlitz in this great tutorial: - -After install, you will see a new `BTCPAY` option in the SSH main menu - it will give you all the information you need to start using it. - -##### BTC-RPC-Explorer - -BTC-RPC-Explorer is a blockchain explorer website you can run on your own RaspiBlitz. -See an example running on: - -![EXPLORER](pictures/blockexplorer.png) - -[Details on Service](https://github.com/janoside/btc-rpc-explorer) - -After install, you will see a new `EXPLORE` option in the SSH main menu - it will give you all the information you need to start using it. - -##### 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. - -The goal of the Specter Desktop wallet is to make a sub 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) - -After install, you will see a new `SPECTER` option in the SSH main menu - it will give you all the information you need to start using it. - -##### Mempool Space - -![MEMPOOL](pictures/mempool.webp) - -Mempool Space is the fully featured visualizer, explorer, and API service running on mempool.space - -[Details on Service](https://github.com/mempool/mempool) - -After install, you will see a new `MEMPOOL` option in the SSH main menu - it will give you all the information you need to start using it. - -##### 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. - -[![Video Tutorial](pictures/video-joinmarket.png)](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. - -For more details see [here](https://github.com/JoinMarket-Org/joinmarket-clientserver). - -After install, you will see a new `JMARKET` option in the SSH main menu - it will give you all the information you need to start using it. - -##### Download Bitcoin Whitepaper - -Extract the original Bitcoin Whitepaper as PDF directly from the blockchain of your node. - -##### RTL Webinterface - -The RTL Webinterface is available as an LND & Core 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 manage your channels with RTL in this video: - -[![Video Tutorial](pictures/video-rtl.png)](https://www.youtube.com/watch?v=pESO_Pm0v10) - -Read an Intro-Tutorial to RTL: - -Feedback is welcome by the RTL programmer: - -After install, you will see a new `RTL` option in the SSH main menu - it will give you all the information you need to start using it. - -##### ThunderHub - -A Lightning Node Manager WebUI - similar to RTL, but just available for LND. - -[Details on Service](https://www.thunderhub.io) - -After install, you will see a new `THUB` option in the SSH main menu - it will give you all the information you need to start using it. - -##### 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. - -![LIT](pictures/lit.webp) - -[Details on Service](https://github.com/lightninglabs/lightning-terminal#lightning-terminal-lit) - -After install, you will see a new `LIT` option in the SSH main menu - it will give you all the information you need to start using it. - -##### LNbits - -LNbits is a very simple server that sits on top of your Lightning Wallet. - -![LNBITS](pictures/lnbits.png) - -It can be used together with IP2Tor to provide: - -- Lightning Paper Vouchers (Plugin: LNURLw) -- Merchant Onboarding (Plugin: TPOS) - -[![Video Tutorial](pictures/video-vouchers.png)](https://www.youtube.com/watch?v=0Bt3tHULAnw) - -You can also develop your own extensions on it. - -[Details on Service](https://github.com/arcbtc/lnbits/blob/master/README.md) - -After install, you will see a new `LNBITS` option in the SSH main menu - it will give you all the information you need to start using it. - -##### Balance of Satoshi - -Balance of Satoshi gives you enhanced commands for working with LND balances. - -[Details on Service](https://github.com/alexbosworth/balanceofsatoshis/blob/master/README.md) - -After install, you will see a new `BOS` option in the SSH main menu - it will give you all the information you need to start using it. - -##### PyBlock - -Dashboard Bitcoin information program (needs LND). - -![PYBLOCK](pictures/pyblock.png) - - - -##### 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 any more. -Also some other useful command line features. - - - -##### 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). - -![SPHINX](https://github.com/stakwork/sphinx-relay/raw/master/public/relay.jpg) - -After install, you will see a new `SPHINX` option in the SSH main menu - it will give you all the information you need to start using it. - -##### Core Lightning RTL Webinterface - -The same RTL as above but running with Core Lightning node. -Can run parallel to the LND version. -See details above. - -##### Core Lightning Sparko Webwallet - -WalletUI & HTTP-RPC bridge for Core Lightning - - - -##### Core Lightning Spark Webwallet - -WalletUI for Core Lightning with BOLT12 offers - - - -#### SYSTEM: Monitoring & Configuration - -Different options to monitor & edit system services. - -![SYSTEM](pictures/system.png) - -#### CONNECT: Connect Apps & Credentials - -This feature should support connecting your RaspiBlitz to a mobile wallets or other apps. - -![CONNECT](pictures/connect.png) - -##### MOBILE: Mobile Wallet Apps (Smartphone) - -![MOBILE](pictures/mobile.png) - -At the moment the following mobile wallets are supported - some are only available if LND or Core Lightning is activated: - -- [Zeus (iOS/Android)](https://github.com/ZeusLN/zeus) (LND & Core Lightning) -- [Zap (iOS/Android)](https://www.zaphq.io/) (only LND) -- [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). - -##### Electrum Rust Server Instructions - -Information how to connect to Electrum Rust Server (if installed). - -##### BTCPAY: Get the connection string for the BTCPay Server - -To connect the payment processing BTCPay server to your Lightning node you find here the needed Connection string. - -##### bitcoinRPC - -If apps need access to the Bitcoin RPC service you can find this here. - -##### BISQ: Use your node with BISQ - -Here you can activate a hidden service for your bitcoin node so that it can be used for the decentralized exchange called BISQ. - -##### EXPORT: Macaroons and TLS.cert - -If you want to access your LND APIs (to connect apps and additional services) you need credential files that grant access (Macaroons & the TLS cert). - -_Macaroons: Access Tokens that allow certain command executions on the LND node._ -_TLS: Certificate to secure/encrypt communication with the LND node._ - -In this menu, you can reset, re-sync, or export them as a file or string so that you can import them to apps and additional services. - -Here are the following export options to get the Macaroon and TLS files to be used in other apps and wallets: - -###### SSH Download - -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 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._ - -###### 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. - -This method is recommended to export to: - -- [Joule Browser Wallet](https://lightningjoule.com) - -#### SUBSCRIBE: Subscription Services - -The RaspiBlitz offers now also Subscriptions. -These might be free or paid third-party services. - -![MainMenu-Services](pictures/subscriptions.png) - -Under `LIST my Subscriptions` you will always find the list of all your active subscriptions, to get more details or to `CANCEL` them. - -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 for this service directly through Lightning from your RaspiBlitz as subscription. - -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 shops & 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. - -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 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 accepted 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. - -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) - -#### PASSWORD: Change Passwords - -Change your passwords for security. - -#### REPAIR: Options to test, repair and reset your RaspiBlitz - -The `REPAIR` menu gives you options to check and reset your RaspiBlitz. - -![RepairMenu](pictures/repairmenu.png) - -The options are explained in detail below: - -##### SOFTWARE: Run Software Tests (DebugReport) - -This will print out a lot of information that can be used to find software problems. - -Use this if you want to report a software problem with your RaspiBlitz, so that others can have a look and help you better. - -##### 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. - -_NOTICE: If you start your RaspiBlitz after this backup again the backup is outdated and using it can risk losing your channel funds._ - -##### RESET-LND: Delete LND & start a node/wallet - -_THIS WILL DELETE ALL YOUR LND DATA AND CHANNEL FUNDS. -Use this only if you have closed all channels and removed all funds._ - -Use this option if you want to start with a fresh LND node id & wallet. - -##### REPAIR-CL: Repair/Backup Core Lightning - -Multiple options to repair/backup your c-lightning node: - -![RepairMenu](pictures/clrepair.png) - -##### 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 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. - -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. - -##### RESET-HDD: Delete HDD data but keep blockchain - -_THIS WILL DELETE ALL YOUR LND DATA AND CHANNEL FUNDS. -Use this only if you have closed all channels and removed all funds._ - -Use this if you want to setup a fresh RaspiBlitz but don't want to re-download the blockchain. - -##### RESET-ALL: Delete HDD completely & start fresh - -_THIS WILL DELETE ALL YOUR LND DATA AND CHANNEL FUNDS. -Use this only if you have closed all channels and removed all funds._ - -Use this if you want to setup a fresh RaspiBlitz with an empty HDD. - -##### DELETE-ELEC: Delete Electrum Index - -If you had Electrum installed, you can use this option to make sure also the space consuming electrum index gets deleted to free up space. - -##### DELETE-INDEX: Delete Bitcoin TX-Index - -If you had the Bitcoin Transaction Index activated you can use this option to make sure that this extra space consuming index gets deleted as well to free up space. - -#### UPDATE: Check/Prepare RaspiBlitz Update - -The `UPDATE` menu gives you options to update your RaspiBlitz and some apps you might have installed. - -The options are explained in detail: - -![UpdateMenu](pictures/update.png) - -_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. - -##### 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. - -##### 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). -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. -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 ability to update the Bitcoin core version here. - -#### REBOOT: Reboot RaspiBlitz - -A safe way to restart the RaspiBlitz ... have you tried turning it off and on again? - -#### OFF: PowerOff RaspiBlitz - -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. - -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. - -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 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 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, Citadel or MyNode - -Another kind of migration is when you already run a full node with the Umbrel, Citadel 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. - -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 transferred and may get lost. - -Instructions for Migration: - -- shutdown your old node -- remove the SD card -- [download the latest Raspiblitz sd card image & flash it to your sd card](#downloading-the-software) -- 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 to do the migration for you. - -- 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 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 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: - -### Bitcoin - -- `bitcoin-cli` command line interface on the terminal -- `bitcoind` running on port 8333 (public) -- `JSON-RPC` running on port 8332 (local) [DOC](https://en.bitcoin.it/wiki/API_reference_%28JSON-RPC%29) - -### LND-Lightning - -- `lncli` command line interface on the terminal [DOC](https://api.lightning.community/) -- `lnd` running on port 9735 (public) -- `gRPC` running on port 10009 (public) [DOC](https://api.lightning.community/) -- `REST` running on port 8080 (public) [DOC](https://api.lightning.community/#lnd-rest-api-reference) - -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. - -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: - -- 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 (under `/mnt/hdd/lnd/data/chain/bitcoin/mainnet/`) 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: `/home/admin/backups/scb/`. - -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: - -[![Video Tutorial](pictures/video-backup.png)](https://www.youtube.com/watch?v=5wi6l9jRVQs) - -The following options are also explained here shortly: - -#### A) Nextcloud - -Nextcloud is an open-source project to host your own files: - 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: - -#### B) SCP Backup Target - -_You can also backup the StaticChannelBackup file to your own server, but this needs manual setup:_ - -Run the command below to generate root SSH keys: -`sudo /home/admin/config.scripts/blitz.ssh.sh root-get` -The public key is found in the `sshPubKey=` section of the above output. For manual setup, use the value after the = without the single quotes. - -Copy the generated keys from above to the remote server (note, if your remote server doesn't allow password authentication, you will have to copy it manually). -`sudo /home/admin/config.scripts/blitz.ssh.sh root-transfer myuser@myserver` - -Note: If you do not copy the public key to your remote server, these backups will not work. - -Edit the `/mnt/hdd/raspiblitz.conf` file to include the following: - -`scpBackupTarget='[USER]@[SERVER]:[DIRPATH-WITHOUT-ENDING-/]'` - -Eg: -`scpBackupTarget='myaccount@10.10.10.100:/home/myaccount/backups'` - -and you can optionally set custom options for the SCP command (for example to set a non-default port) with: - -`scpBackupOptions='[YOUR-CUSTOM-OPTIONS]'` - -If you have done the setup above and want to run this manually, you can run the below command (from the root user): - -`scp /home/admin/backups/scb/channel.backup myaccount@10.10.10.100:/home/myaccount/backups` - -Alternatively, open or close a channel. The backups get taken on every channel open or close. - -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 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. - -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` - -## Updating RaspiBlitz to new Version - -If you have a RaspiBlitz older than version v1.0, please [see here](FAQ.md). - -If you have a RaspiBlitz v1.2 or higher - just follow the `UPDATE` option from the main menu (choose `RELEASE` if asked) and follow the instructions - see the process in detail in the following video: - -[![Video Tutorial](pictures/video-update.png)](https://www.youtube.com/watch?v=Xvn0WQfHUdI) - -If you have a RaspiBlitz v1.0 or v1.1 or higher do the following: - -- Main menu > OFF -- 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). - -_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. - -- [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: - -- Get a latest RaspiOS 64-bit (Desktop): [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. -- Newest RasperryOS release did remove the default username therefore you need to create an own user. Add a file called `userconf` next to the empty `ssh` file and add your specified userstring as followed: - Create a hashed password using command on linux `echo 'raspberry' | openssl passwd -6 -stdin` and copy the output allongside the username for example `pi:$6$6c.o/U6OkN3ST65b$7F3TIamnnQCwQT4h00Vp1mcVMdSg3/ams7yeVGfZbclcScEnRnw9tkgI9btalTCHFI84o3Pr3cDbdpbCXYTmF1` into the userconf file. See also https://www.raspberrypi.com/news/raspberry-pi-bullseye-update-april-2022/ -- 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: - -`wget https://raw.githubusercontent.com/rootzoll/raspiblitz/v1.10/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 with optional parameters. -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 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._ - -- [Can I run RaspiBlitz on other computers than RaspberryPi?](./alternative.platforms/README.md) -- [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 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) - -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`. - -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) - -Get all details on "How to contribute to RaspiBlitz Development" on this video: - -[![Video Tutorial](pictures/video-contrib.png)](https://www.youtube.com/watch?v=ZVtZepV3OfM) - -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 :) - -- [How can I get further help/support?](#support) +To get started with RaspiBlitz Development check the [Community Development](CONTRIBUTING) notes. \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 8f7a62c8d..000000000 --- a/SECURITY.md +++ /dev/null @@ -1,91 +0,0 @@ -# Security Policy - -*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 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) - -## Minimal SD Card Build - -To improve the UX for beginners & casual users we decided to preinstall & activate lots of features like LCD, API & WebUI of RaspiBlitz from the beginning and even preinstall/compile a selection of additional apps in the default `fatpack` sd card image. This creates a bigger attack surface and more trusted dependencies on the security side. For more advanced users we also provide a `minimal` sd card image in the download section - which aims to install just the basics and every else will be just installed/compiled on-demand - this is recommended for users (especially on updates) that already know what features they want/need from their RaspiBlitz to run it with the reduced attack surface. To create a minimal sd card yourself run the `build_sdcard.sh` script with the options `-f 0` (fatpack off) & `-d headless` (to not preinstall external LCD drivers). - -## Supported Versions - -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 latest version, run: -``` -curl -s https://api.github.com/repos/rootzoll/raspiblitz/releases/latest|grep tag_name|head -1|cut -d '"' -f4 -``` - -## Reporting a Vulnerability - -To report security issues send an email to christian@rotzoll.de (not for support). - -The following keys may be used to communicate sensitive information to developers: - -| Name | Fingerprint | 64-bit | -|------|-------------|--------| -|Rootzoll|92A7 46AE 33A3 C186 D014 BF5C 1C73 060C 7C17 6461|1C73 060C 7C17 6461| -|Openoms|13C6 88DB 5B9C 745D E4D2 E454 5BFB 7760 9B08 1B65|5BFB 7760 9B08 1B65| - -You can import a key by running the following command with that individual’s fingerprint: -``` -curl https://keybase.io/rootzoll/pgp_keys.asc | gpg --import -curl https://keybase.io/oms/pgp_keys.asc | gpg --import -``` -Ensure that you put quotes around fingerprints containing spaces if importing with other methods. - -# Privacy Protection - -When you call `debug` on the command line you get basic system & services logs that can be used if you need to report details for support by other users. There is already a basic redaction of private data (nodeids, IPv4s, .onion-addresses, balances) for that debug report BUT always check the data you post in DMs or public before sending. If you find further private data that needs redaction, please report as an issue on the github repo. - -# Network Security - -* Limit attack surface: Wi-fi and Bluetooth is disabled by default in the build script. -* Firewall: UFW is active and only specific ports are open, closing ports and removing hidden services when services are uninstalled. -* Password brute forcing protection: Fail-2-Ban is protecting the SSH login against brute-force-attacks. - -# Software security - -* The `admin` (and the `joinmarket` [optional]) users have passwordless sudo access to be able to perform installations and read password without much user interaction. - -* Downloaded binaries and source code is verified with the authors' PGP keys by either: - * signed shasum files and checking the hash of each downloaded binary - * verifying the signature on the source code changes utilising the `git verify-commit` or `git verify-tag` commands - -# Physical Security - -* The lightning wallet and user interfaces are password protected by default so this has more privacy implications (in the case of physical theft) than security. -* Basic hardening measures are applied to all non-root systemd services -* Optional log in through SSH using a hardware wallet. -* LUKS encryption would be welcome in the future. - -# On-chain Funds - -Please keep in mind that there can be two different on-chain wallets on the RaspiBlitz: - -## Lightning Wallet (default) - -The default is the on-chain lightning wallet - that's the wallet where you normally send your funds before opening a channel & where your funds return to when you close a channel. With the initial word seed you get during RaspiBlitz setup, you can get access again to this on-chain wallet. Keep the seed words secure in a off-line location. - -## 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 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 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 recovering from a disaster. - -The C-lightning lightning.sqlite3 is replicated on the SDcard from the disk in real time. See more details in the [Core Lightning FAQ](FAQ.cl.md#backups) - - -For more practical information on this topic see: [Backup Channel Funds](README.md#backup-for-on-chain---channel-funds) diff --git a/case.3dprint/standard/RaspiBlitz_Standard_Bottom.stl b/case.3dprint/standard/RaspiBlitz_Standard_Bottom.stl deleted file mode 100644 index 4a0924342..000000000 Binary files a/case.3dprint/standard/RaspiBlitz_Standard_Bottom.stl and /dev/null differ diff --git a/case.3dprint/standard/RaspiBlitz_Standard_Top.stl b/case.3dprint/standard/RaspiBlitz_Standard_Top.stl deleted file mode 100644 index 41b6068cc..000000000 Binary files a/case.3dprint/standard/RaspiBlitz_Standard_Top.stl and /dev/null differ diff --git a/case.3dprint/standard/Raspiblitz_standard.stl b/case.3dprint/standard/Raspiblitz_standard.stl deleted file mode 100644 index c3ea2fa4d..000000000 Binary files a/case.3dprint/standard/Raspiblitz_standard.stl and /dev/null differ diff --git a/case.3dprint/standard/raspiBplusCase_top_differentCutout_extraTall.stl b/case.3dprint/standard/raspiBplusCase_top_differentCutout_extraTall.stl deleted file mode 100644 index e27d6fb27..000000000 Binary files a/case.3dprint/standard/raspiBplusCase_top_differentCutout_extraTall.stl and /dev/null differ diff --git a/case.3dprint/standard/raspiBplusCase_top_wo_display.stl b/case.3dprint/standard/raspiBplusCase_top_wo_display.stl deleted file mode 100644 index b9ac96de0..000000000 Binary files a/case.3dprint/standard/raspiBplusCase_top_wo_display.stl and /dev/null differ diff --git a/case.3dprint/standard/readme.md b/case.3dprint/standard/readme.md deleted file mode 100644 index 043ba3b23..000000000 --- a/case.3dprint/standard/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Raspiblitz Case: Standard - -This is a raspiblitz case prototype. The standard file (Raspiblitz_standard.stl) should be modified to fit your HDD. - -#### To Do - -* Update the HDD container to fit the standard HDD model from the raspiblitz amazon buylist. (Toshiba HDTB420EK3AA 2TB Canvio Basics 2.5-Inch USB 3.0 Portable External Hard Drive - Black) - -* Add a cool lightning bolt to improve the design. diff --git a/pictures/RTL-dashboard.png b/pictures/RTL-dashboard.png deleted file mode 100644 index e24c85a5e..000000000 Binary files a/pictures/RTL-dashboard.png and /dev/null differ diff --git a/pictures/blockexplorer.png b/pictures/blockexplorer.png deleted file mode 100644 index ed0afa36a..000000000 Binary files a/pictures/blockexplorer.png and /dev/null differ diff --git a/pictures/bonus-lnbalance.png b/pictures/bonus-lnbalance.png deleted file mode 100644 index 3b967801f..000000000 Binary files a/pictures/bonus-lnbalance.png and /dev/null differ diff --git a/pictures/bonus-lnchannels.png b/pictures/bonus-lnchannels.png deleted file mode 100644 index 6e17c59a1..000000000 Binary files a/pictures/bonus-lnchannels.png and /dev/null differ diff --git a/pictures/btcpay.png b/pictures/btcpay.png deleted file mode 100644 index 64da356b2..000000000 Binary files a/pictures/btcpay.png and /dev/null differ diff --git a/pictures/clrepair.png b/pictures/clrepair.png deleted file mode 100644 index 85b0f64b0..000000000 Binary files a/pictures/clrepair.png and /dev/null differ diff --git a/pictures/connect.png b/pictures/connect.png deleted file mode 100644 index d33ace515..000000000 Binary files a/pictures/connect.png and /dev/null differ diff --git a/pictures/export.png b/pictures/export.png deleted file mode 100644 index ff87455f9..000000000 Binary files a/pictures/export.png and /dev/null differ diff --git a/pictures/hardwaresetup.jpeg b/pictures/hardwaresetup.jpeg deleted file mode 100644 index ccbd17b7e..000000000 Binary files a/pictures/hardwaresetup.jpeg and /dev/null differ diff --git a/pictures/lcd0-welcome.png b/pictures/lcd0-welcome.png deleted file mode 100644 index faab1e6a9..000000000 Binary files a/pictures/lcd0-welcome.png and /dev/null differ diff --git a/pictures/lcdassm.png b/pictures/lcdassm.png deleted file mode 100644 index 3df7a9d09..000000000 Binary files a/pictures/lcdassm.png and /dev/null differ diff --git a/pictures/lit.webp b/pictures/lit.webp deleted file mode 100644 index b550210e9..000000000 Binary files a/pictures/lit.webp and /dev/null differ diff --git a/pictures/lnbits.png b/pictures/lnbits.png deleted file mode 100644 index b6f4566fc..000000000 Binary files a/pictures/lnbits.png and /dev/null differ diff --git a/pictures/mainmenu.png b/pictures/mainmenu.png deleted file mode 100644 index 176c96668..000000000 Binary files a/pictures/mainmenu.png and /dev/null differ diff --git a/pictures/mempool.webp b/pictures/mempool.webp deleted file mode 100644 index 75ca16d33..000000000 Binary files a/pictures/mempool.webp and /dev/null differ diff --git a/pictures/metalcase.png b/pictures/metalcase.png deleted file mode 100644 index 3f27257f5..000000000 Binary files a/pictures/metalcase.png and /dev/null differ diff --git a/pictures/migration1.png b/pictures/migration1.png deleted file mode 100644 index 48189fa8d..000000000 Binary files a/pictures/migration1.png and /dev/null differ diff --git a/pictures/migration2.png b/pictures/migration2.png deleted file mode 100644 index b2c005b34..000000000 Binary files a/pictures/migration2.png and /dev/null differ diff --git a/pictures/mobile.png b/pictures/mobile.png deleted file mode 100644 index 2422b21ad..000000000 Binary files a/pictures/mobile.png and /dev/null differ diff --git a/pictures/opencase.png b/pictures/opencase.png deleted file mode 100644 index 0060e4a57..000000000 Binary files a/pictures/opencase.png and /dev/null differ diff --git a/pictures/raspiblitz-deepdive.png b/pictures/raspiblitz-deepdive.png deleted file mode 100644 index 9ea333c0b..000000000 Binary files a/pictures/raspiblitz-deepdive.png and /dev/null differ diff --git a/pictures/raspisolar.jpg b/pictures/raspisolar.jpg deleted file mode 100644 index e4397e6d7..000000000 Binary files a/pictures/raspisolar.jpg and /dev/null differ diff --git a/pictures/recovery.png b/pictures/recovery.png deleted file mode 100644 index b88de031d..000000000 Binary files a/pictures/recovery.png and /dev/null differ diff --git a/pictures/repairmenu.png b/pictures/repairmenu.png deleted file mode 100644 index ab306f8dc..000000000 Binary files a/pictures/repairmenu.png and /dev/null differ diff --git a/pictures/seedhdd.png b/pictures/seedhdd.png deleted file mode 100644 index 5bc6df341..000000000 Binary files a/pictures/seedhdd.png and /dev/null differ diff --git a/pictures/services.png b/pictures/services.png deleted file mode 100644 index 1e1f6b17f..000000000 Binary files a/pictures/services.png and /dev/null differ diff --git a/pictures/settings.png b/pictures/settings.png deleted file mode 100644 index 79e636739..000000000 Binary files a/pictures/settings.png and /dev/null differ diff --git a/pictures/shango1.png b/pictures/shango1.png deleted file mode 100644 index 48ad4a49b..000000000 Binary files a/pictures/shango1.png and /dev/null differ diff --git a/pictures/specter.jpg b/pictures/specter.jpg deleted file mode 100644 index 267b7c718..000000000 Binary files a/pictures/specter.jpg and /dev/null differ diff --git a/pictures/ssh0-askchain.png b/pictures/ssh0-askchain.png deleted file mode 100644 index 1c499ddcb..000000000 Binary files a/pictures/ssh0-askchain.png and /dev/null differ diff --git a/pictures/ssh0-formathdd.png b/pictures/ssh0-formathdd.png deleted file mode 100644 index 7fa78a12e..000000000 Binary files a/pictures/ssh0-formathdd.png and /dev/null differ diff --git a/pictures/ssh0-welcome2.png b/pictures/ssh0-welcome2.png deleted file mode 100644 index 61c389ea4..000000000 Binary files a/pictures/ssh0-welcome2.png and /dev/null differ diff --git a/pictures/ssh1-layer1.png b/pictures/ssh1-layer1.png deleted file mode 100644 index b4f3b9fd2..000000000 Binary files a/pictures/ssh1-layer1.png and /dev/null differ diff --git a/pictures/ssh1-layer2.png b/pictures/ssh1-layer2.png deleted file mode 100644 index f364318fc..000000000 Binary files a/pictures/ssh1-layer2.png and /dev/null differ diff --git a/pictures/ssh1-name.png b/pictures/ssh1-name.png deleted file mode 100644 index 6930ba58e..000000000 Binary files a/pictures/ssh1-name.png and /dev/null differ diff --git a/pictures/ssh1-oldnew.png b/pictures/ssh1-oldnew.png deleted file mode 100644 index 30ad63db1..000000000 Binary files a/pictures/ssh1-oldnew.png and /dev/null differ diff --git a/pictures/ssh2-layer2old.png b/pictures/ssh2-layer2old.png deleted file mode 100644 index e4c9a8337..000000000 Binary files a/pictures/ssh2-layer2old.png and /dev/null differ diff --git a/pictures/ssh2-passwords.png b/pictures/ssh2-passwords.png deleted file mode 100644 index f526c0666..000000000 Binary files a/pictures/ssh2-passwords.png and /dev/null differ diff --git a/pictures/ssh3a-password.png b/pictures/ssh3a-password.png deleted file mode 100644 index ac79ea6c9..000000000 Binary files a/pictures/ssh3a-password.png and /dev/null differ diff --git a/pictures/ssh3b-password.png b/pictures/ssh3b-password.png deleted file mode 100644 index 33f1445d1..000000000 Binary files a/pictures/ssh3b-password.png and /dev/null differ diff --git a/pictures/ssh4-blockchain.png b/pictures/ssh4-blockchain.png deleted file mode 100644 index 012e5b948..000000000 Binary files a/pictures/ssh4-blockchain.png and /dev/null differ diff --git a/pictures/ssh4-copy.png b/pictures/ssh4-copy.png deleted file mode 100644 index 7f84ac15b..000000000 Binary files a/pictures/ssh4-copy.png and /dev/null differ diff --git a/pictures/ssh4-done.png b/pictures/ssh4-done.png deleted file mode 100644 index d97e349a1..000000000 Binary files a/pictures/ssh4-done.png and /dev/null differ diff --git a/pictures/ssh4-formatHDD.png b/pictures/ssh4-formatHDD.png deleted file mode 100644 index fc3ab3254..000000000 Binary files a/pictures/ssh4-formatHDD.png and /dev/null differ diff --git a/pictures/ssh4-scripts.png b/pictures/ssh4-scripts.png deleted file mode 100644 index d7d0a912a..000000000 Binary files a/pictures/ssh4-scripts.png and /dev/null differ diff --git a/pictures/ssh4-seed.png b/pictures/ssh4-seed.png deleted file mode 100644 index 3fd88b595..000000000 Binary files a/pictures/ssh4-seed.png and /dev/null differ diff --git a/pictures/ssh5-blockchain2.png b/pictures/ssh5-blockchain2.png deleted file mode 100644 index d0377ae3c..000000000 Binary files a/pictures/ssh5-blockchain2.png and /dev/null differ diff --git a/pictures/ssh5-blocksync.png b/pictures/ssh5-blocksync.png deleted file mode 100644 index cbdf9c9f5..000000000 Binary files a/pictures/ssh5-blocksync.png and /dev/null differ diff --git a/pictures/ssh5-mainmenu.png b/pictures/ssh5-mainmenu.png deleted file mode 100644 index 1736d142f..000000000 Binary files a/pictures/ssh5-mainmenu.png and /dev/null differ diff --git a/pictures/ssh5-reboot.png b/pictures/ssh5-reboot.png deleted file mode 100644 index 6da45846e..000000000 Binary files a/pictures/ssh5-reboot.png and /dev/null differ diff --git a/pictures/ssh5-unlock.png b/pictures/ssh5-unlock.png deleted file mode 100644 index bbda25e00..000000000 Binary files a/pictures/ssh5-unlock.png and /dev/null differ diff --git a/pictures/ssh6b-copy.png b/pictures/ssh6b-copy.png deleted file mode 100644 index 09e4750b7..000000000 Binary files a/pictures/ssh6b-copy.png and /dev/null differ diff --git a/pictures/ssh7-lndinit.png b/pictures/ssh7-lndinit.png deleted file mode 100644 index 28791a96a..000000000 Binary files a/pictures/ssh7-lndinit.png and /dev/null differ diff --git a/pictures/ssh7-lndrecover.png b/pictures/ssh7-lndrecover.png deleted file mode 100644 index f210ebb0a..000000000 Binary files a/pictures/ssh7-lndrecover.png and /dev/null differ diff --git a/pictures/ssh8-wallet.png b/pictures/ssh8-wallet.png deleted file mode 100644 index 12657f0fd..000000000 Binary files a/pictures/ssh8-wallet.png and /dev/null differ diff --git a/pictures/ssh8-walletb.png b/pictures/ssh8-walletb.png deleted file mode 100644 index b9c2df684..000000000 Binary files a/pictures/ssh8-walletb.png and /dev/null differ diff --git a/pictures/ssh9-lndscan.png b/pictures/ssh9-lndscan.png deleted file mode 100644 index 4234d7161..000000000 Binary files a/pictures/ssh9-lndscan.png and /dev/null differ diff --git a/pictures/ssh9b-reboot.png b/pictures/ssh9b-reboot.png deleted file mode 100644 index 93b08f83c..000000000 Binary files a/pictures/ssh9b-reboot.png and /dev/null differ diff --git a/pictures/ssh9c-unlock.png b/pictures/ssh9c-unlock.png deleted file mode 100644 index 03a8a30c3..000000000 Binary files a/pictures/ssh9c-unlock.png and /dev/null differ diff --git a/pictures/ssh9d-blockchainsync.png b/pictures/ssh9d-blockchainsync.png deleted file mode 100644 index db72d22a8..000000000 Binary files a/pictures/ssh9d-blockchainsync.png and /dev/null differ diff --git a/pictures/ssh9d-lndscan.png b/pictures/ssh9d-lndscan.png deleted file mode 100644 index ca200bfcd..000000000 Binary files a/pictures/ssh9d-lndscan.png and /dev/null differ diff --git a/pictures/ssh9d-sync.png b/pictures/ssh9d-sync.png deleted file mode 100644 index 9d2adcb95..000000000 Binary files a/pictures/ssh9d-sync.png and /dev/null differ diff --git a/pictures/ssh9d-unlock.png b/pictures/ssh9d-unlock.png deleted file mode 100644 index 6f889a81a..000000000 Binary files a/pictures/ssh9d-unlock.png and /dev/null differ diff --git a/pictures/ssh9z-ready.png b/pictures/ssh9z-ready.png deleted file mode 100644 index 3ebc1e545..000000000 Binary files a/pictures/ssh9z-ready.png and /dev/null differ diff --git a/pictures/subscriptions.png b/pictures/subscriptions.png deleted file mode 100644 index c71373639..000000000 Binary files a/pictures/subscriptions.png and /dev/null differ diff --git a/pictures/system.png b/pictures/system.png deleted file mode 100644 index a2b95fb6f..000000000 Binary files a/pictures/system.png and /dev/null differ diff --git a/pictures/tor1.png b/pictures/tor1.png deleted file mode 100644 index 3ebc1e545..000000000 Binary files a/pictures/tor1.png and /dev/null differ diff --git a/pictures/touchscreen.webp b/pictures/touchscreen.webp deleted file mode 100644 index 1142a4da5..000000000 Binary files a/pictures/touchscreen.webp and /dev/null differ diff --git a/pictures/update.png b/pictures/update.png deleted file mode 100644 index 0f2824bc2..000000000 Binary files a/pictures/update.png and /dev/null differ diff --git a/pictures/updatemenu.png b/pictures/updatemenu.png deleted file mode 100644 index 26d1f4004..000000000 Binary files a/pictures/updatemenu.png and /dev/null differ diff --git a/pictures/video-backup.png b/pictures/video-backup.png deleted file mode 100644 index 073ef794d..000000000 Binary files a/pictures/video-backup.png and /dev/null differ diff --git a/pictures/video-contrib.png b/pictures/video-contrib.png deleted file mode 100644 index ea56c0d72..000000000 Binary files a/pictures/video-contrib.png and /dev/null differ diff --git a/pictures/video-electrs.png b/pictures/video-electrs.png deleted file mode 100644 index e43ac7411..000000000 Binary files a/pictures/video-electrs.png and /dev/null differ diff --git a/pictures/video-joinmarket.png b/pictures/video-joinmarket.png deleted file mode 100644 index 3e06e8b9c..000000000 Binary files a/pictures/video-joinmarket.png and /dev/null differ diff --git a/pictures/video-rtl.png b/pictures/video-rtl.png deleted file mode 100644 index d91922f0b..000000000 Binary files a/pictures/video-rtl.png and /dev/null differ diff --git a/pictures/video-update.png b/pictures/video-update.png deleted file mode 100644 index cce5c7903..000000000 Binary files a/pictures/video-update.png and /dev/null differ diff --git a/pictures/video-vouchers.png b/pictures/video-vouchers.png deleted file mode 100644 index f8f228516..000000000 Binary files a/pictures/video-vouchers.png and /dev/null differ diff --git a/pictures/video-zeus.png b/pictures/video-zeus.png deleted file mode 100644 index c02edc09b..000000000 Binary files a/pictures/video-zeus.png and /dev/null differ diff --git a/pictures/vnc-go-to-console.png b/pictures/vnc-go-to-console.png deleted file mode 100644 index d3caa8604..000000000 Binary files a/pictures/vnc-go-to-console.png and /dev/null differ diff --git a/pictures/vnc-raspi-config-menu.png b/pictures/vnc-raspi-config-menu.png deleted file mode 100644 index 375577170..000000000 Binary files a/pictures/vnc-raspi-config-menu.png and /dev/null differ diff --git a/pictures/vnc-reboot-from-menu.png b/pictures/vnc-reboot-from-menu.png deleted file mode 100644 index 8172df82d..000000000 Binary files a/pictures/vnc-reboot-from-menu.png and /dev/null differ diff --git a/pictures/vnc-server-started.png b/pictures/vnc-server-started.png deleted file mode 100644 index d6bae3a29..000000000 Binary files a/pictures/vnc-server-started.png and /dev/null differ diff --git a/pictures/wallet-recover.png b/pictures/wallet-recover.png deleted file mode 100644 index 157f07a8d..000000000 Binary files a/pictures/wallet-recover.png and /dev/null differ