- Dojo x86 Bitcoin Node Guide: Part 1. Installing Bitcoin Core & Tor.
- Dojo x86 Bitcoin Node Guide: Part 2 – Installing Fulcrum Indexer.
- Dojo x86 Bitcoin Node Guide: Part 3. Installing Mempool Explorer.
- Dojo x86 Bitcoin Node Guide: Part 4 – Installing Dojo.
- Dojo x86 Bitcoin Node Guide: Part 5 – Installing Whirlpool & UFW.
- Dojo x86 Bitcoin Node Guide: Part 6 – Installing Updates
Once you have a fully synchronised IBD, installing an indexer is the next step. We will use Fulcrum, which has a larger footprint than other Electrum implementations, but its performance is unmatched.
First, download Fulcrum to your download directory.
Head to Fulcrum’s Github page and copy the link for the latest “x86_64-linux.tar.gz” file. At the time of writing, the most current version is 1.9.1.
Download the file in the terminal by pasting the link with the “wget” command.
In order to verify the validity of the download, you also need to download the matching “asc” & “sha256sum” files.
Now verify the checksum of your download.
sha256sum --ignore-missing --check Fulcrum-*-x86_64-linux.tar.gz.sha256sum
If everything is okay the output should provide an “OK” message, for example, “Fulcrum-1.9.1-x86_64-linux.tar.gz: OK“.
To check the validity of the release, you need to import Calin Culianu’s public key.
curl https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt | gpg --import
And finally, verify that the signatures match. Ignore any warnings regarding trusted signatures; if all is good, you should see “Good signature from Calin Culianu“.
gpg --verify Fulcrum-*-x86_64-linux.tar.gz.asc
Next, create a “fulcrum” and “fulcrum_db” folder for housing the Fulcrum files.
You can now unpackage the archive and move its contents to your new “fulcrum” directory.
tar xvf Fulcrum-*-x86_64-linux.tar.gz
mv Fulcrum-*-x86_64-linux/* /home/satoshi/fulcrum
Remove the leftover folder, archive and verification files.
rm -r Fulcrum-*-x86_64-linux
rm Fulcrum-*-x86_64-linux.tar.gz.asc && rm Fulcrum-*-x86_64-linux.tar.gz.sha256sum
Next, you need to generate new SSL keys.
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Hit enter on each question prompt, leaving all at default.
You need to rename the fulcrum configuration file and make a few edits.
mv fulcrum-example-config.conf fulcrum.conf
Edit the following lines.
####change datadir = /path/to/a/dir # Windows: datadir = D:\FulcrumData\mainnet ##to datadir = /home/satoshi/fulcrum_db # Windows: datadir = D:\FulcrumData\mainnet ####edit with your core rpc username & password rpcuser = Bob_The_Banker rpcpassword = hunter1 ####uncomment the following line #ssl = 0.0.0.0:50002 ##like this 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 this cert = /home/satoshi/fulcrum/cert.pem key = /home/satoshi/fulcrum/key.pem peering = false
If following the guide from the beginning, your Core username should be “bitcoin“.
Lastly, you have the option to enable fast sync. This is not essential and has no use after the initial sync, but using it will speed up the process. You must be careful not to push it too quickly, as you can easily corrupt the database. I typically set this to 50% of available system memory but not exceeding 12GB. If using fast sync, find the following line, delete the # and enter your setting in MB.
For 8GB, I would edit as follows;
fast-sync = 8000
Save and exit the file with “control+x“, then “y”, and finally “enter“.
To start automatically on system boot, you must create a service file for Fulcrum.
sudo nano /etc/systemd/system/fulcrum.service
Paste the following lines into the file and then save and exit.
[Unit] Description=Fulcrum After=network.target [Service] ExecStart=/home/satoshi/fulcrum/Fulcrum /home/satoshi/fulcrum/fulcrum.conf User=satoshi LimitNOFILE=8192 TimeoutStopSec=30min [Install] WantedBy=multi-user.target
Now activate and enable the service file.
sudo systemctl enable fulcrum.service
sudo systemctl start fulcrum.service
sudo systemctl status fulcrum.service
You should see a green light and “active” status.
Before continuing, wait until the sync process is complete. How long this will take depends on the memory dedicated to syncing, but it typically completes within 24 hours. Your node’s power supply must remain uninterrupted during this process.
You can keep an eye on progress with the following command. You will know it is synchronised once you see the logs pulling the latest Mempool txs.
journalctl -fu fulcrum.service
Connecting Wallets to Fulcrum.
Once Fulcrum has synchronised, you can immediately connect your wallets to the node. If you only use Samourai Wallet and/or Sentinel, you can skip immediately to the next article since these wallets connect via Dojo, covered later in the guide.
Local SSL connections are a simple case of adding your node’s local IP and SSL port into the address field of your wallets settings, for example;
For mobile wallets, a remote connection is preferable. To connect remotely via SSL, you will need to forward internal port 50002 to an external port number of your choice on your router’s admin page. Portforward.com has a great directory of manufacturer-specific guides on port forwarding if you are unfamiliar with the process.
Next, you need the public IP address for your network. If your router supports Dynamic DNS, you can use your DDNS address instead of your public IP.
If you don’t know your network’s public IP, you can find it by running the following command. You will find your public IP in the output next to where it says “myip.opendns.com has address“.
host myip.opendns.com resolver1.opendns.com
Using your public IP and the external port you set, you can add your node’s SSL address into your wallets settings menu, for example;
Or if you have a DDNS;
When connecting via Tor, you bypass the complexities involved with port forwarding whilst maintaining the ability to connect wallets remotely. This, however, comes at the price of wallet efficiency due to the network limits of Tor.
Check your wallet’s documentation to see if it has integrated Tor. If not, you will also need to install a Tor client on the remote device. Orbot is a popular Android/iOS Tor client.
To connect via Tor, you need to add a few lines to the “torcc” file.
sudo nano /etc/tor/torrc
Paste the following lines at the bottom 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 services.
sudo systemctl reload tor
You can locate your Fulcrum server’s onion address with the following command.
sudo cat /var/lib/tor/hidden_service_fulcrum/hostname
Enter your onion address into your wallets settings, ensuring that you also add your hidden service port number at the end, for example;
You should now have a fully functional Fulcrum server and be able to connect external wallets remotely via SSH or Tor.
In the next article, we will be installing the Mempool bitcoin explorer.