FAQ
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 (FINGERPRINT: 92A746AE33A3C186D014BF5C1C73060C7C176461) you need to use GPG and import the following public key:
curl --tlsv1.2 --proto '=https' https://keys.openpgp.org/vks/v1/by-fingerprint/92A746AE33A3C186D014BF5C1C73060C7C176461 | 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 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 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 64GB 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
- Write the new image to the (new) SD card with a tool like balena etcher
- Start the RaspiBlitz with the 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:
-
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.
-
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.shruns 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 you 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
sshwithsudo sshand 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 Isolationswitched 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.
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 through 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
bootdrive - in the root directory of that
bootdrive create a file calledssh.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 Raspberry Pi.
If you are already logged in you can use on the console the commands:
hdmi--> switch to HDMIlcd--> 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 Raspberry Pi.
Another way is to use Angry IP Scanner 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 Raspberry Pi. This will activate the HDMI port and if you connect a HDMI monitor to the Raspberry Pi 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 through 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 withdebug -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 Raspberry Pi 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 Raspberry Pi.
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