Bonus guide: RaspiBolt on Testnet

You can run your RaspiBolt node on testnet to develop and experiment with new applications, without putting real money at risk. This bonus guide highlights all configuration changes compared to the main guide.

Difficulty: Medium

Status: Tested v3


Table of contents

  1. Introduction
  2. Bitcoin daemon
  3. Electrs
    1. NGINX
    2. Tor
  4. LND
    1. Interacting with the LND daemon

Introduction

Running a testnet node is a great way to get acquainted with the RaspiBolt and the suite of Bitcoin-related software typical of these powerful setups. Moreover, testnet empowers users to tinker with the software and its many configurations without the threat of losing funds. Helping bitcoiners run a full testnet setup is a goal worthy of the RaspiBolt, and this page should provide you with the knowledge to get there.

The great news is that most of the RaspiBolt guide can be used as-is. The small adjustments come in the form of changes to the config files and ports for testnet. You can follow the guide and simply replace the following configurations in the right places as you go.

Bitcoin daemon

File location: /data/bitcoin/bitcoin.conf

# RaspiBolt: bitcoind configuration for testnet node

# [chain]
# main, test, signet, regtest
chain=test

# [core]
sysperms=1
blocksonly=1
txindex=1
# disable dbcache after full sync
dbcache=2000

# [wallet]
disablewallet=1

# [network]
listen=1
listenonion=1
proxy=127.0.0.1:9050
maxconnections=40
maxuploadtarget=5000
whitelist=download@127.0.0.1          # for Electrs

# [rpc]
rpcauth=your_string_from_the_rpcauth_script
server=1

# [zeromq]
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333

# Options specific to chain, rpcport set to default values
[main]
# rpcport=8332
bind=127.0.0.1
rpcbind=127.0.0.1

[test]
rpcport=18332
bind=127.0.0.1
rpcbind=127.0.0.1

[signet]
# rpcport=38332

[regtest]
# rpcport=18443

Note that the testnet data is stored in /data/bitcoin/testnet3. To check the log file, use tail -f /data/bitcoin/testnet3/debug.log.

Because the authentication cookie now located in /data/bitcoin/testnet3/.cookie, the command in the systemd unit bitcoind.service to grant the group bitcoin read permissions in /etc/systemd/system/bitcoind.service needs to be changed to:

-startupnotify="chmod g+r /home/bitcoin/.bitcoin/testnet3/.cookie"

Electrs

File location: /data/electrs/electrs.conf

# RaspiBolt: electrs configuration for testnet node
# /data/electrs/electrs.conf

# Bitcoin Core settings
network = "testnet"
daemon_dir= "/home/bitcoin/.bitcoin/"
daemon_rpc_addr = "127.0.0.1:18332"
daemon_p2p_addr = "127.0.0.1:18333"
cookie_file = "/data/bitcoin/testnet3/.cookie"

# Electrs settings
electrum_rpc_addr = "127.0.0.1:60001"
db_dir = "/data/electrs/db/"
index_lookup_limit = 1000

# Logging
log_filters = "INFO"
timestamp = true

Check the logs using

$ sudo journalctl -u electrs -f

NGINX

File location: /etc/nginx/streams-enabled/electrs-testnet-reverse-proxy.conf

upstream electrs {
  server 127.0.0.1:60001;
}

server {
  listen 60002 ssl;
  proxy_pass electrs;
}

Your nginx might need to be reloaded using:

$ sudo nginx -t
$ sudo systemctl reload nginx
$ sudo ufw allow 60002/tcp comment 'allow Electrum SSL Testnet'

Tor

Create a separate service for testnet over Tor by adding the following lines in the location-hidden services section:

File location: /etc/tor/torrc

############### This section is just for location-hidden services ###
HiddenServiceDir /var/lib/tor/hidden_service_electrs_testnet/
HiddenServiceVersion 3
HiddenServicePort 60002 127.0.0.1:60002

Once that’s done, you’ll need to start the service using:

$ sudo systemctl reload tor
$ sudo cat /var/lib/tor/hidden_service_electrs_testnet/hostname

LND

The following are the lines that need changing in the LND configuration file.

File location: /data/lnd/lnd.conf

[Bitcoin]
bitcoin.active=1
#bitcoin.mainnet=1
bitcoin.testnet=1
bitcoin.node=bitcoind

And the following command gives members of the group lnd permission to traverse the LND directories to reach the macaroons:

$ sudo chmod -R g+X /data/lnd/data/

Interacting with the LND daemon

Note that when interacting with the LND daemon, you’ll need to use the --network testnet option like so:

$ lncli --network testnet walletbalance

« Back: + Bitcoin