joininbox/prepare_remote_node.md
openoms 7a61e3b357
update JoinMarket to commit ce32baf, support for Python 3.12 / 3.13, modernize build (#178)
This PR updates JoinMarket to the latest tested commit with Python 3.12/3.13 support and addresses dialog display issues.

### Changes

#### JoinMarket Update
- Update to commit `ce32baf` (latest tested commit from master)
- Refactored install.joinmarket.sh to support both tag-based and commit-based installations
- Improved signature verification using verify.git.sh
- Updated menu.update.sh to display commit hash when using commit-based version

#### Python Support
- Added support for Python 3.12 and 3.13
- Changed version detection order to prefer newer Python versions (3.13 → 3.12 → 3.11 → 3.10 → 3.9 → 3.8)

#### Dialog Fixes
- **Fix border visibility**: Changed dialog border color from `(BLACK,BLACK,ON)` to `(CYAN,BLACK,ON)` in .dialogrc for better visibility
- **Terminal compatibility**: Added fallback for unknown terminal types (e.g., `xterm-ghostty`) by setting `TERM=xterm-256color` when `infocmp` fails
- **Fix box drawing characters**: Set `NCURSES_NO_UTF8_ACS=1` to fix dialog box rendering issues

#### Documentation
- Fixed typo in prepare_remote_node.md: "numbes" → "numbers"
2026-01-18 07:56:26 +01:00

6.3 KiB

Prepare a bitcoin node to accept a remote RPC connection

If you have arrived here from running JoininBox locally on the RaspiBlitz can skip these steps (CTRL+C to exit the connection settings). The connection to the local bitcoin node is set up automatically.

JoinMarket (running in JoininBox) needs to connect to Bitcoin Core via RPC.
A pruned node with the bitcoind wallet enabled will do and txindex is not required.

RaspiBlitz

Enable the bitcoind wallet

Since the RaspiBlitz v1.6 run this script:
$ config.scripts/network.wallet.sh on

To set up manually:

  • Edit the bitcoin.conf:
    $ sudo nano /mnt/hdd/app-data/bitcoin/bitcoin.conf

  • Change the disablewallet option to 0:

    disablewallet=0
    
  • Restart bitcoind:
    $ sudo systemctl restart bitcoind

LAN connection

In the terminal of the node - allow remote RPC connections to Bitcoin Core
This can be skipped if you connect through Tor

  1. Edit the bitcoin.conf
    $ sudo nano /mnt/hdd/app-data/bitcoin/bitcoin.conf

    Add the values:

    • rpcallowip=JOININBOX_IP or RANGE
      • either specify the LAN IP of the computer (here JoininBox)
      • or use a range like: 192.168.1.0/24 - edit to your local subnet - the first 3 numbers of the LAN IP address, the example used here is: 192.168.1.x
    • rpcbind=LAN_IP_OF_THE_NODE
      • use the local IP of the bitcoin node in the example: 192.168.1.4
    • can keep the other rpcallowip and rpcbind entries especially for the localhost: 127.0.0.1

    Example:

    rpcallowip=192.168.1.0/24
    rpcbind=192.168.1.4
    
  2. Restart Bitcoin Core

    $ sudo systemctl restart bitcoind

  3. Open the firewall to allow the RPC connection from LAN

    edit to your local subnet - in the example here 192.168.1.X):
    $ sudo ufw allow from 192.168.1.0/24 to any port 8332

  4. Take note of the LAN_ADDRESS of the remote node and fill it in to the rpc_host in joinmarket.cfg

Tor connection

On the node - activate Tor and create a Hidden Service

Make sure that Tor is installed or active in the SERVICES menu

Create a Hidden Service to forward the bitcoin RPC port:

  1. On the RaspiBlitz there is a script to create a hidden service
  • Raspiblitz v1.7.2 and above:
~/config.scripts/tor.onion-service.sh bitcoinrpc 8332 8332
  • Raspiblitz v1.4 - v1.7.1:
~/config.scripts/internet.hiddenservice.sh bitcoinrpc 8332 8332
  1. Take note of the Tor_Hidden_Service.onion and fill in to the rpc_host in the joinmarket.cfg

Alternatively proceed manually:

  1. Open the Tor configuration file
    $ sudo nano /etc/tor/torrc

  2. Insert the lines

    # Hidden Service v3 for bitcoinrpc
    HiddenServiceDir /mnt/hdd/tor/bitcoinrpc
    HiddenServiceVersion 3
    HiddenServicePort 8332 127.0.0.1:8332
    
  3. Restart Tor

    $ sudo systemctl restart tor

  4. Take note of the Tor_Hidden_Service.onion

    $ sudo cat /mnt/hdd/tor/bitcoinrpc/hostname

Fill in the Tor_Hidden_Service.onion to the rpc_host in the joinmarket.cfg

CONFIG -> CONNECT in JoininBox

  • Username: raspibolt
  • Password: passwordB or sudo cat /mnt/hdd/bitcoin/app-data/bitcoin.conf | grep rpcpassword | cut -c 13-
  • Host: LAN_IP_OF_THE_NODE or sudo cat /mnt/hdd/app-data/tor/bitcoinrpc/hostname
  • Port: 8332

RoninDojo

Enable the bitcoind wallet

  • Run in the RoninDojo ssh terminal:

    $ sed -i 's/  -disablewallet=.*$/  -disablewallet=0/' ~/dojo/docker/my-dojo/bitcoin/restart.sh
    
  • Alternatively edit manually
    $ nano ~/dojo/docker/my-dojo/bitcoin/restart.sh
    modify:

      -disablewallet=1
    

    to:

      -disablewallet=0
    

LAN connection

  • Edit the bitcoind container settings
    $ nano ~/dojo/docker/my-dojo/conf/docker-bitcoind.conf

  • Set the following:

    # should be already on
    BITCOIND_RPC_EXTERNAL=on   
    # the RoninDojo_IP is the LAN IP address of your RoninDojo
    BITCOIND_RPC_EXTERNAL_IP=RoninDojo_IP
    
  • Open the firewall to allow the RPC connection from LAN
    (edit to your local subnet - in the example here 192.168.1.X):
    $ sudo ufw allow from 192.168.1.0/24 to any port 28256

  • Note that Dojo uses the port 28256 instead of the default 8332.

Tor connection

  • Create a Hidden Service to forward the bitcoin RPC port

  • Edit the torrc
    $ sudo nano /etc/tor/torrc

  • Add:

    HiddenServiceDir /var/lib/tor/bitcoinrpc/
    HiddenServiceVersion 3
    HiddenServicePort 8332 127.0.0.1:28256
    
  • Restart Tor
    $ sudo systemctl restart tor

  • Show the .onion service address
    $ sudo cat /var/lib/tor/bitcoinrpc/hostname

Recompile the Docker containers (takes time)

$ cd ~/dojo/docker/my-dojo && ./dojo.sh upgrade --nolog

CONFIG -> CONNECT in JoininBox

Fill the connection settings from the 5 Credentials -> 6 Bitcoind menu of RoninDojo:

  • RPC username: RoninDojo
  • RPC password: RPC Password
  • Host: RoninDojo_IP or sudo cat /var/lib/tor/bitcoinrpc/hostname
  • Port: 28256 for LAN or 8332 for the .onion service

Resources