x86 Bitcoin Node Guide.

Part 2. Installing Fulcrum Indexer

KYC3
3 min readSep 28, 2024
Part 2 of the x86 Dojo Bitcoin Full Node Guide by Kyc3. Installing Fulcrum Electrum Based Indexer.

Prerequisites.

  • Completed "x86 Bitcoin Node Guide," Part 1.
  • Bitcoin Core IBD Complete.

Introduction.

After fully synchronizing Bitcoin Core, installing an Electrum indexer, which ensures compatibility with all Electrum-based Bitcoin wallets, is the next step.

Connecting wallets directly to a personal Electrum server, rather than Core, provides vast security improvements since Core stores balances and public keys unencrypted on the local device.

The Fulcrum Electrum indexer has a larger footprint than other indexers; however, its performance is unmatched once fully synchronized.

Download & Verify Fulcrum.

Go to the downloads directory.

cd ~/downloads

Visit Fulcrum's Github page in a browser and copy the link for the latest "x86_64-linux.tar.gz" file. At the time of writing, the most recent version is 1.11.1.

Download Fulcrum.

torsocks wget https://github.com/cculianu/Fulcrum/releases/download/v1.11.1/Fulcrum-1.11.1-x86_64-linux.tar.gz

Download the releases "asc" file.

torsocks wget https://github.com/cculianu/Fulcrum/releases/download/v1.11.1/Fulcrum-1.11.1-shasums.txt.asc

Download the release's “sha256sum” file.

torsocks wget https://github.com/cculianu/Fulcrum/releases/download/v1.11.1/Fulcrum-1.11.1-shasums.txt

Verify Fulcrum's checksum.

sha256sum -c --ignore-missing Fulcrum-*-shasums.txt

The output should provide an “OK” message, for example:- "Fulcrum-0.0.0-x86_64-linux.tar.gz: OK."

Import Fulcrum's developer's public key from the official GitHub repository.

torsocks curl https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt | gpg --import

Verify the signatures match.

gpg --verify Fulcrum-*-shasums.txt.asc

The output should read "Good signature from Calin Culianu."

Do not worry about the "This key is not certified with a trusted signature!" warning. Enhanced trust levels have not been manually set for the imported key.

Remove the verification files.

rm Fulcrum-*-shasums.txt && rm Fulcrum-*-shasums.txt.asc

Fulcrum Folder Preparation.

Create a "fulcrum" directory.

mkdir ~/fulcrum

Create a "fulcrum_db" directory.

mkdir ~/fulcrum_db

Unpackage the archive.

tar xvf Fulcrum-*-x86_64-linux.tar.gz

Move the contents to the "fulcrum" directory.

mv Fulcrum-*-x86_64-linux/* /home/satoshi/fulcrum

Remove the leftover folder.

rm -r Fulcrum-*-x86_64-linux

Remove the archive.

rm Fulcrum-*-x86_64-linux.tar.gz

Enter the "fulcrum" directory.

cd ~/fulcrum

Generate Fulcrum SSL Key.

Generate a new SSL key. Hit enter on the prompts, leaving all at default.

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

Fulcrum Configuration.

Rename the default fulcrum configuration file.

mv fulcrum-example-config.conf fulcrum.conf

Open the "fulcrum.conf" file.

nano fulcrum.conf

Edit the following lines as shown.

####change
datadir = /path/to/a/dir # Windows: datadir = D:\FulcrumData\mainnet

##to
datadir = /home/satoshi/fulcrum_db # Windows: datadir = D:\FulcrumData\mainnet
####edit to your core rpc username & password
rpcuser = Bob_The_Banker
rpcpassword = hunter1
####uncomment the following line
#ssl = 0.0.0.0:50002

##like so
ssl = 0.0.0.0:50002
####uncomment & edit the following lines
#cert = /path/to/server-cert.pem
#key = /path/to/server-key.pem
#peering = true

##like so
cert = /home/satoshi/fulcrum/cert.pem
key = /home/satoshi/fulcrum/key.pem
peering = false
###uncomment & edit the following line
#fast-sync = 0

##like so
fast-sync = 2000

Save and exit the file.

Create Fulcrum Service File.

Create a service file to start Fulcrum on system boot.

sudo nano /etc/systemd/system/fulcrum.service

Paste the following lines, then save and exit the service file.

[Unit]
Description=Fulcrum
After=network.target
StartLimitBurst=2
StartLimitIntervalSec=20

[Service]
Type=exec
ExecStart=/home/satoshi/fulcrum/Fulcrum /home/satoshi/fulcrum/fulcrum.conf
User=satoshi
TimeoutStopSec=300
KillSignal=SIGINT
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Enable the service file.

sudo systemctl enable fulcrum.service

Start Fulcrum.

sudo systemctl start fulcrum.service

Before continuing, wait until the Fulcrum sync has been completed. The device's power supply must remain uninterrupted during this process, or the Fulcrum database may corrupt.

Monitor Fulcrum's sync progress using the following command from the home directory. The sync is completed once the logs begin displaying the latest Mempool data.

journalctl -fu fulcrum.service

Local wallet connections to Fulcrum are made by adding the node's local IP and SSL port into the address field of your wallet settings, for example;

ssl://192.168.1.100:50002

Fulcrum Tor Connections.

Further lines must be added to the "torcc" file to configure Fulcrum with Tor.

sudo nano /etc/tor/torrc

Paste the following at the top of the file.

# Hidden Service Fulcrum
HiddenServiceDir /var/lib/tor/hidden_service_fulcrum/
HiddenServiceVersion 3
HiddenServicePort 50002 127.0.0.1:50002

Save and exit the file, then reload Tor.

sudo systemctl reload tor

Fulcrum's Tor address can be requested with the following command.

sudo cat /var/lib/tor/hidden_service_fulcrum/hostname

Remote wallet connections to the Fulcrum server can be made using the server’s onion address and port number, as shown in the example below.

Note that the address provided is not an active server, and should not be used.

https://78aqvahpe6pjachf6nxroyr76gecku6nqoyngkj49r63n3twm6jpisyd.onion:50002

Contribute to the Author.

Monero:

867Xink8cNMbxC6FxafbkjSaJPNTSFMtsSDQiWedYcgihWHEoPy24rKT1hGxFDEuJRXLZW8BFp4e6AXhzxvYsn4mKN9u41X

Bitcoin (Paynym):

PM8TJfTV3SZWgfTpRbPnUPQa3ifyHprpPCC3t71wQXtPoZT8gDkgZByGpxCTNtwjjQrKkEAKgZSWeDrsV3L3s4N7BGkAuMHybJC4cKJsV1HdcMvrbver

--

--

KYC3

Privacy and cryptography advocate. I like to convert complex dev written guides into plain, easy to follow English. (Ret.)