Skip to content

Commit

Permalink
Cleanup: consistency, update/delete images, links
Browse files Browse the repository at this point in the history
This commit:
* adds some warnings and links to old tagged v1 guide
* deletes unused images
* adds tmp screencasts and GIMP images to .gitignore
* sets link target _blank
* updates RaspiBolt logo for v2
  • Loading branch information
Stadicus committed Dec 15, 2019
1 parent 59ef114 commit 428800d
Show file tree
Hide file tree
Showing 46 changed files with 66 additions and 312 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.sass-cache
_site
cast/tmp*
*.xcf
2 changes: 1 addition & 1 deletion _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ aux_links:
- "https://github.com/Stadicus/RaspiBolt/"

# enable theme for local usage
#theme: "just-the-docs"
#theme: "just-the-docs"
Binary file added images/00_raspibolt_v2_banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/00_raspibolt_v2_banner_440.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/00_raspibolt_v2_banner_700.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/10_bitcoinqt_directory.png
Binary file not shown.
Binary file removed images/10_blockchain_wincheck.png
Binary file not shown.
Binary file removed images/20_command_ls-la.png
Binary file not shown.
Binary file removed images/20_login.png
Binary file not shown.
Binary file removed images/20_motd_welcome.png
Binary file not shown.
Binary file removed images/20_net1_clientlist.png
Binary file not shown.
Binary file removed images/20_net2_fixedip.png
Binary file not shown.
Binary file removed images/20_nofile_common-session-noninteractive.png
Binary file not shown.
Binary file removed images/20_nofile_common-session.png
Binary file not shown.
Binary file removed images/20_nofile_limits.png
Binary file not shown.
Binary file removed images/20_pimp_prompt.png
Binary file not shown.
Binary file removed images/20_raspi-config.png
Binary file not shown.
Binary file removed images/20_ssh_config.png
Binary file not shown.
Binary file removed images/20_ufw_status.png
Binary file not shown.
Binary file removed images/30_checksum.png
Binary file not shown.
Binary file removed images/30_show_symlink.png
Binary file not shown.
Binary file removed images/30_status_bitcoind.png
Binary file not shown.
Binary file removed images/40_blockchain_explorer.png
Binary file not shown.
Binary file removed images/40_checksum_lnd.png
Binary file not shown.
Binary file removed images/40_cipher_seed.png
Binary file not shown.
Binary file removed images/40_faucet.png
Binary file not shown.
Binary file removed images/40_ls_macaroon.png
Binary file not shown.
Binary file removed images/40_start_lnd.png
Diff not rendered.
Binary file removed images/40_symlink_lnd.png
Diff not rendered.
Binary file removed images/50_WinSCP_connection.png
Diff not rendered.
Binary file removed images/50_WinSCP_copy.png
Diff not rendered.
Binary file removed images/60_eps_first-start.png
Diff not rendered.
Binary file removed images/60_eps_pip_install.png
Diff not rendered.
Binary file removed images/60_eps_rescan.png
Diff not rendered.
Binary file removed images/60_eps_signature.png
Diff not rendered.
Binary file removed images/7_WinSCP_error_timestamp.png
Diff not rendered.
13 changes: 9 additions & 4 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ I love to tinker and build stuff.
I am also fascinated with digital currencies, so I recently built my own Bitcoin / Lightning Full Node with a simple low-cost Raspberry Pi.
I now basically run my own bank using free open-source software and some cheap hardware.

![RaspiBolt Logo](images/00_raspibolt_banner_440.png)
![RaspiBolt Logo](images/00_raspibolt_v2_banner_440.png){:target="_blank"}

---

The **RaspiBolt version 2** builds on the Raspberry Pi 4. If you're looking for the old version: [check out the old source files on GitHub](https://github.com/Stadicus/RaspiBolt/blob/1.0/index.md).

---

Expand Down Expand Up @@ -62,8 +66,9 @@ I am not a systems specialist, so please feel free to point out improvements.
1. [Raspberry Pi](raspibolt_20_pi.md): set up and configure the Pi as a Linux server
1. [Security](raspibolt_21_security.md): secure and harden your installation
1. [Privacy](raspibolt_22_privacy.md): configure Tor networking for improved privacy
1. [Bitcoin](raspibolt_30_bitcoin.md): install and configure Bitcoin Core as a fully validating node
1. [Lightning](raspibolt_40_lnd.md): install and configure the Lightning Network Daemon (LND)
1. [Bitcoin](raspibolt_30_bitcoin.md): run Bitcoin Core as a fully validating node
1. [Lightning](raspibolt_40_lnd.md): spin up the Lightning Network Daemon (LND)
1. [Electrum](raspibolt_50_electrs.md): use your node with Hardware Wallets
1. [FAQ](raspibolt_faq.md): frequently asked questions and further reading
1. [Updates](raspibolt_updates.md): keep track of changes

Expand All @@ -80,7 +85,7 @@ This server is set up without graphical user interface and is used remotely usin

**The good old days**: this was the original goal of this guide, back in 2017, simply buying a Blockaccino.

[![Buying a Blockaccino](images/00_blockaccino_goal.png)](https://vimeo.com/258395303)
[![Buying a Blockaccino](images/00_blockaccino_goal.png)](https://vimeo.com/258395303){:target="_blank"}

### Target audience

Expand Down
13 changes: 6 additions & 7 deletions raspibolt_10_preparations.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,21 @@ This amazing piece of hardware is a tiny computer-on-a-chip, costs about $35 and

It is advisable to get the latest Raspberry Pi for good performance:

* Raspberry Pi 4, 2+ GB RAM
* Raspberry Pi 4, with 4 GB RAM
* Micro SD card: 8 GB or more, incl. adapter to your regular computer
* strong USB power adapter: 5V/3A + USB-C cable
* External hard disk: 500 GB or more
* Optional: Raspberry Pi case
* external hard disk: 500 GB or more
* optional: Raspberry Pi case

![Raspberry Pi](images/10_raspberrypi_hardware.png)
*Raspberry Pi 4: a tiny computer for $50*

*Raspberry Pi 4: a tiny but quite powerful computer for $50*

To run a Lightning node, the full Bitcoin blockchain must be stored locally, which is ~250 GB and growing.
You can buy a cheap hard disk enclosure and reuse an old 500 GB hard disk.
I recommend getting a modern 2.5" SSD that can be powered through the USB connection to the Pi directly, which also speeds up initial sync time significantly.

## Assembly

TODO
---

## Write down your passwords

Expand Down
26 changes: 12 additions & 14 deletions raspibolt_20_pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ We configure the Raspberry Pi and install the Linux operating system.

The node runs headless, that means without keyboard or display, so the operating system Raspbian Buster Lite is used.

1. Download the [Raspbian Buster Lite](https://www.raspberrypi.org/downloads/raspbian/) disk image
2. Write the disk image to your SD card with [this guide](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)
1. Download the [Raspbian Buster Lite](https://www.raspberrypi.org/downloads/raspbian/){:target="_blank"} disk image
2. Write the disk image to your SD card with [this guide](https://www.raspberrypi.org/documentation/installation/installing-images/README.md){:target="_blank"}

### Enable Secure Shell

Expand Down Expand Up @@ -53,7 +53,7 @@ To avoid using a network cable for the initial setup, you can pre-configure the
}
```

* Replace `[COUNTRY_CODE]` with the [ISO2 code](https://www.iso.org/obp/ui/#search) of your country (eg. `US`)
* Replace `[COUNTRY_CODE]` with the [ISO2 code](https://www.iso.org/obp/ui/#search){:target="_blank"} of your country (eg. `US`)
* Replace `[WIFI_SSID]` and `[WIFI_PASSWORD]` with the credentials for your own WiFi.

### Start your Pi
Expand All @@ -74,7 +74,7 @@ Finding it can be a bit tricky without a screen.
If you're lucky, you don't need to know this address and can just connect using mDNS.

* On your regular computer, open the Terminal (also known as "command line").
Here are a few links with additional details for [Windows](https://www.computerhope.com/issues/chusedos.htm), [MacOS](https://macpaw.com/how-to/use-terminal-on-mac) and [Linux](https://www.howtogeek.com/140679/beginner-geek-how-to-start-using-the-linux-terminal/).
Here are a few links with additional details for [Windows](https://www.computerhope.com/issues/chusedos.htm), [MacOS](https://macpaw.com/how-to/use-terminal-on-mac){:target="_blank"} and [Linux](https://www.howtogeek.com/140679/beginner-geek-how-to-start-using-the-linux-terminal/){:target="_blank"}.

* Try to ping the Raspberry Pi local hostname (press `Ctrl`-`C` to )

Expand All @@ -89,7 +89,7 @@ If you're lucky, you don't need to know this address and can just connect using
Proceed directly to the next section.

* If the `ping` command fails or does not return anything, you need to manually look for your Pi.
As this is a common challenge, just follow the official Raspberry Pi guideance on how to find your [IP Address](https://www.raspberrypi.org/documentation/remote-access/ip-address.md.)
As this is a common challenge, just follow the official Raspberry Pi guideance on how to find your [IP Address](https://www.raspberrypi.org/documentation/remote-access/ip-address.md.){:target="_blank"}.

* You should now be able to reach your Pi, either with the hostname `raspberrypi.local` or an IP address like `192.168.0.20`.

Expand All @@ -107,14 +107,14 @@ If you need to provide connection details, use the following settings:

Install and start the SSH client for your operating system:

* Windows: PuTTY ([Website](https://www.putty.org))
* Windows: PuTTY ([Website](https://www.putty.org){:target="_blank"})
* MacOS and Linux: from the Terminal, use the native command:
* `ssh [email protected]` or
* `ssh [email protected]`

<script id="asciicast-UxufwsDLfdhIfitCfBbHXx4mA" src="https://asciinema.org/a/UxufwsDLfdhIfitCfBbHXx4mA.js" async></script>

🔍 *more: [using SSH with Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ssh/README.md)*
🔍 *more: [using SSH with Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ssh/README.md){:target="_blank"}*

---

Expand Down Expand Up @@ -215,7 +215,7 @@ $ sudo apt install htop git curl bash-completion jq qrencode dphys-swapfile hdpa

<script id="asciicast-hg9s5u5vzv04OpUPwTFfqqrLy" src="https://asciinema.org/a/hg9s5u5vzv04OpUPwTFfqqrLy.js" async></script>

### Add user "admin"
### Add users

This guide uses the main user "admin" instead of "pi" to make it more reusable with other platforms.

Expand All @@ -232,8 +232,6 @@ This guide uses the main user "admin" instead of "pi" to make it more reusable w
$ sudo passwd root
```

### Add the service user “bitcoin”

The bitcoin and lightning processes will run in the background (as a "daemon") and use the separate user “bitcoin” for security reasons.
This user does not have admin rights and cannot change the system configuration.

Expand Down Expand Up @@ -280,7 +278,7 @@ The Raspberry Pi 4 supports USB3 drives, but is very picky.
A lot of USB3 adapters for external drives are not compatible and need a manual workaround to be usable.
We will now check if your drive works well as-is, or if additional configuration is needed.

🔍 *more: [Raspberry Pi forum: bad performance with USB3 SSDs](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245931)*
🔍 *more: [Raspberry Pi forum: bad performance with USB3 SSDs](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245931){:target="_blank"}*

* First, lets get some information about your drive from the kernel messages.
Clear the kernel buffer, and follow the new messages (let the last command run):
Expand Down Expand Up @@ -382,7 +380,7 @@ We will now check if your drive works well as-is, or if additional configuration
* You should see a significant increase in performance.
If the test still shows a very slow read speed, your drive or USB adapter might not be compatible with the Raspberry Pi.
In that case I recommend visiting the Raspberry Pi [Troubleshooting forum](https://www.raspberrypi.org/forums/viewforum.php?f=28&sid=5ec5f1c6932c834c8222dfbbb3d5c9ef) or simply try out hardware alternatives.
In that case I recommend visiting the Raspberry Pi [Troubleshooting forum](https://www.raspberrypi.org/forums/viewforum.php?f=28&sid=5ec5f1c6932c834c8222dfbbb3d5c9ef){:target="_blank"} or simply try out hardware alternatives.
<script id="asciicast-NiOhoAsu2g9kltfHXzfU6GLnq" src="https://asciinema.org/a/NiOhoAsu2g9kltfHXzfU6GLnq.js" async></script>
Expand Down Expand Up @@ -410,7 +408,7 @@ We will now check if your drive works well as-is, or if additional configuration
UUID=123456 /mnt/ext ext4 rw,nosuid,dev,noexec,noatime,nodiratime,auto,nouser,async,nofail 0 2
```
🔍 *more: [complete fstab guide](http://www.linuxstall.com/fstab)*
🔍 *more: [complete fstab guide](http://www.linuxstall.com/fstab){:target="_blank"}*
* Create the directory to add the hard disk and set the correct owner
Expand Down Expand Up @@ -468,7 +466,7 @@ We will now check if your drive works well as-is, or if additional configuration
<script id="asciicast-c75NG00m72iaguULOzzVc9Z3v" src="https://asciinema.org/a/c75NG00m72iaguULOzzVc9Z3v.js" async></script>
🔍 *more: [external storage configuration](https://www.raspberrypi.org/documentation/configuration/external-storage.md)*
🔍 *more: [external storage configuration](https://www.raspberrypi.org/documentation/configuration/external-storage.md){:target="_blank"}*
---
Expand Down
16 changes: 8 additions & 8 deletions raspibolt_21_security.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ $ exit

<script id="asciicast-vRmJZZMgzolgH3ooLCGS5RCj8" src="https://asciinema.org/a/vRmJZZMgzolgH3ooLCGS5RCj8.js" async></script>

🔍 *more: [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands)*
🔍 *more: [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands){:target="_blank"}*

💡 If you find yourself locked out by mistake, you can connect keyboard and screen to your Pi to log in locally and fix these settings (especially for the SSH port 22).

Expand All @@ -66,7 +66,7 @@ The firewall blocks all login attempts from outside your network, but additional
The first measure is to install “fail2ban”, a service that cuts off any system with five failed login attempts for ten minutes.
This makes a brute-force attack unfeasible, as it would simply take too long.

![fail2ban](images/20_fail2ban.png)
![fail2ban](images/20_fail2ban.png){:target="_blank"}
*Me locking myself out by entering wrong passwords*

```sh
Expand All @@ -77,7 +77,7 @@ The initial configuration should be fine as it is enabled for SSH by default.

<script id="asciicast-013bxZ8R7LktqzhP6O27LrorA" src="https://asciinema.org/a/013bxZ8R7LktqzhP6O27LrorA.js" async></script>

🔍 *more: [customize fail2ban configuration](https://linode.com/docs/security/using-fail2ban-for-security/)*
🔍 *more: [customize fail2ban configuration](https://linode.com/docs/security/using-fail2ban-for-security/){:target="_blank"}*

---

Expand All @@ -88,11 +88,11 @@ Only someone with physical possession of the private key can login.

### Generate keys on Windows

Follow this guide [Configure “No Password SSH Keys Authentication” with PuTTY on Linux Servers](https://www.tecmint.com/ssh-passwordless-login-with-putty)
Follow this guide [Configure “No Password SSH Keys Authentication” with PuTTY on Linux Servers](https://www.tecmint.com/ssh-passwordless-login-with-putty){:target="_blank"}

* You should have generated three new files. Keep them safe!

![SSH keys files](images/20_ssh_keys_filelist.png)
![SSH keys files](images/20_ssh_keys_filelist.png){:target="_blank"}

### Generate keys on Mac / Linux

Expand Down Expand Up @@ -165,21 +165,21 @@ root soft nofile 128000
root hard nofile 128000
```

![Edit pam.d/limits.conf](images/20_nofile_limits.png)
![Edit pam.d/limits.conf](images/20_nofile_limits.png){:target="_blank"}

```sh
$ sudo nano /etc/pam.d/common-session
session required pam_limits.so
```

![Edit pam.d/common-session](images/20_nofile_common-session.png)
![Edit pam.d/common-session](images/20_nofile_common-session.png){:target="_blank"}

```sh
$ sudo nano /etc/pam.d/common-session-noninteractive
session required pam_limits.so
```

![Edit pam.d/common-session-noninteractive](images/20_nofile_common-session-noninteractive.png)
![Edit pam.d/common-session-noninteractive](images/20_nofile_common-session-noninteractive.png){:target="_blank"}

---

Expand Down
4 changes: 2 additions & 2 deletions raspibolt_22_privacy.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ We configure Tor to run your node anonymously.

Running your own Bitcoin and Lightning node at home makes you a direct, sovereign peer on the Bitcoin network.
If not configured without privacy in mind, it also tells the world that there is someone with Bitcoin at that address.
True, it's only your IP address that is visible to others, but using services like [iplocation.net](https://www.iplocation.net), your physical address can be determined quite accurately.
True, it's only your IP address that is visible to others, but using services like [iplocation.net](https://www.iplocation.net){:target="_blank"}, your physical address can be determined quite accurately.

Especially with Lightning, your IP address is widely used, so we need to make sure that you keep your privacy.

---

## Tor Project

We will use Tor, a free software built by the [Tor Project](https://www.torproject.org), that allows you to anonymize internet traffic by routing it through a network of nodes, hiding your location and usage profile.
We will use Tor, a free software built by the [Tor Project](https://www.torproject.org){:target="_blank"}, that allows you to anonymize internet traffic by routing it through a network of nodes, hiding your location and usage profile.

It is called "Tor" for "The Onion Router": information is encrypted multiple times with the public keys of the nodes it passes through. Each node decrypts the layer of information that corresponds to its own private key, knowing only the last and next hop of the route, like peeling an onion, until the data reaches its destination.

Expand Down
20 changes: 10 additions & 10 deletions raspibolt_30_bitcoin.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Let's get your Bitcoin full node operational.
## Bitcoin Core

The base of a sovereign Bitcoin node is a fully validating Bitcoin client.
We are using [Bitcoin Core](https://bitcoin.org/en/bitcoin-core/), the reference implementation, but not the only option available.
We are using [Bitcoin Core](https://bitcoin.org/en/bitcoin-core/){:target="_blank"}, the reference implementation, but not the only option available.
This application will download the whole blockchain from other peers and validate every single transaction that ever happened.
After validation, the client can check all future transactions whether they are valid or not.

Expand All @@ -44,7 +44,7 @@ This is a precaution to make sure that this is an official release and not a mal
cd /tmp
```

* Get the latest download links at [bitcoincore.org/en/download](https://bitcoincore.org/en/download) (ARM Linux 32 bit), they change with each update.
* Get the latest download links at [bitcoincore.org/en/download](https://bitcoincore.org/en/download){:target="_blank"} (ARM Linux 32 bit), they change with each update.
Then run the following commands (with adjusted filenames) and check the output where indicated:

```sh
Expand Down Expand Up @@ -137,7 +137,7 @@ maxuploadtarget=5000

<script id="asciicast-gQJ1dSWPdcavFcZs5PRuYS4Ad" src="https://asciinema.org/a/gQJ1dSWPdcavFcZs5PRuYS4Ad.js" async></script>

🔍 *more: [configuration options](https://en.bitcoin.it/wiki/Running_Bitcoin#Command-line_arguments) in Bitcoin Wiki*
🔍 *more: [configuration options](https://en.bitcoin.it/wiki/Running_Bitcoin#Command-line_arguments){:target="_blank"} in Bitcoin Wiki*

---

Expand Down Expand Up @@ -304,17 +304,17 @@ This can take up to a week when using a Raspberry Pi 4, depending mostly on your

If everything is running smoothly, this is the perfect time to familiarize yourself with Bitcoin, the technical aspects of Bitcoin Core and play around with `bitcoin-cli` until the blockchain is up-to-date.

* [**The Little Bitcoin Book**](https://littlebitcoinbook.com) is a fantastic introduction to Bitcoin, focusing on the "why" and less on the "how".
* [**The Little Bitcoin Book**](https://littlebitcoinbook.com){:target="_blank"} is a fantastic introduction to Bitcoin, focusing on the "why" and less on the "how".

* [**Mastering Bitcoin**](https://bitcoinbook.info) by Andreas Antonopoulos is a great point to start, especially chapter 3 (ignore the first part how to compile from source code):
* you definitely need to have a [real copy](https://bitcoinbook.info/) of this book!
* read it online on [Github](https://github.com/bitcoinbook/bitcoinbook)
* [**Mastering Bitcoin**](https://bitcoinbook.info){:target="_blank"} by Andreas Antonopoulos is a great point to start, especially chapter 3 (ignore the first part how to compile from source code):
* you definitely need to have a [real copy](https://bitcoinbook.info/){:target="_blank"} of this book!
* read it online on [Github](https://github.com/bitcoinbook/bitcoinbook){:target="_blank"}

![Mastering Bitcoin](images/30_mastering_bitcoin_book.jpg)
![Mastering Bitcoin](images/30_mastering_bitcoin_book.jpg){:target="_blank"}

* [**Learning Bitcoin from the Command Line**](https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line/blob/master/README.md) by Christopher Allen gives a thorough deep dive into understanding the technical aspects of Bitcoin.
* [**Learning Bitcoin from the Command Line**](https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line/blob/master/README.md){:target="_blank"} by Christopher Allen gives a thorough deep dive into understanding the technical aspects of Bitcoin.

* Also, check out the [bitcoin-cli reference](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list)
* Also, check out the [bitcoin-cli reference](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list){:target="_blank"}

---

Expand Down
Loading

0 comments on commit 428800d

Please sign in to comment.