pull down to refresh

With Bitcoin Core synced on your Ubuntu server, you have the "library" of all transactions. Now, we install the "search engine."
Fulcrum 2.0.0 is a high-performance Electrum server that indexes your entire blockchain. This allows your desktop and mobile wallets (like Sparrow) to query your node for balances and transaction histories instantly. This ensures your addresses, balances, and financial history never leave your own hardware.
Fulcrum has been historically prone to corruption of data. This has been solved in the newest release of 2.0 which we'll use in this guide. No longer do you need to fear power outages corrupting your data.

Phase 1: Download & Verify

First, we'll create the directories for Fulcrum's software and its database. The database must live on your NVMe drive for performance, so we'll place it in your home directory (~/fulcrum_db).
# Create a directory for the binaries and one for the database
mkdir -p ~/fulcrum ~/fulcrum_db
Next, we download the latest release, its checksums, and the developer's signature. (The v2.0.0 release is a major update; we'll use that as you specified).
# Set version for easy upgrades
FULCRUM_VERSION=2.0.0

# Create a downloads folder and enter it
mkdir -p ~/downloads
cd ~/downloads

# Download the binary, checksums, and signature
wget https://github.com/cculianu/Fulcrum/releases/download/v${FULCRUM_VERSION}/Fulcrum-${FULCRUM_VERSION}-x86_64-linux.tar.gz
wget https://github.com/cculianu/Fulcrum/releases/download/v${FULCRUM_VERSION}/Fulcrum-${FULCRUM_VERSION}-shasums.txt
wget https://github.com/cculianu/Fulcrum/releases/download/v${FULCRUM_VERSION}/Fulcrum-${FULCRUM_VERSION}-shasums.txt.asc
Now, we verify the download. This is not optional.
# Import the GPG key for the lead developer, Calin Culianu
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys D11F6013C7561B43CD8A6630E260946D33226505

# Verify the signature on the hash file
gpg --verify Fulcrum-${FULCRUM_VERSION}-shasums.txt.asc Fulcrum-${FULCRUM_VERSION}-shasums.txt
Look for a "Good signature" message. This confirms the hash file is authentic.
# Check your download against the trusted hash
sha256sum --check --ignore-missing Fulcrum-${FULCRUM_VERSION}-shasums.txt
You must see the line: Fulcrum-${FULCRUM_VERSION}-x86_64-linux.tar.gz: OK

Phase 2: Install & Generate SSL Keys

Now that the software is verified, let's install it into the ~/fulcrum directory you created.
# Extract the archive
tar -zxvf Fulcrum-${FULCRUM_VERSION}-x86_64-linux.tar.gz

# Move the binaries and example config into your ~/fulcrum directory
mv Fulcrum-${FULCRUM_VERSION}-x86_64-linux/* ~/fulcrum/
Next, we'll generate a self-signed SSL certificate so your wallet can connect to your node over an encrypted channel.
cd ~/fulcrum
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 \
  -keyout key.pem \
  -out cert.pem
This command will ask you a series of questions (Country, State, etc.). Since this is a private, self-signed certificate, you can press Enter to accept the defaults for every prompt.

Phase 3: Configuration

We will copy the example config and edit it to match your setup.
cd ~/fulcrum
cp fulcrum-example-config.conf fulcrum.conf
nano fulcrum.conf
Make the following changes. Pay close attention to the user (satoshis) and the rpcpassword.
# --- Fulcrum Config ---
# This is the main database directory.
# It MUST be on your NVMe.
datadir = /home/satoshis/fulcrum_db

# --- Bitcoin Core Connection ---
# Point to your bitcoind service
bitcoind = 127.0.0.1:8332

# These MUST match your bitcoin.conf
rpcuser = satoshis
rpcpassword = YOUR_STRONG_PASSWORD_FROM_BITCOIN.CONF

# --- Server Ports ---
# Allow other computers on your network (like your desktop)
# to connect over an encrypted channel.
ssl = 0.0.0.0:50002

# Point to the SSL certs we just made
cert = /home/satoshis/fulcrum/cert.pem
key = /home/satoshis/fulcrum/key.pem

# Optional: Uncomment and set a banner file
# banner = /home/satoshis/fulcrum/banner.txt

# --- Performance & Privacy ---
# We have 24GB RAM. bitcoind is using 4GB.
# Let's give Fulcrum 5GB (5120MB).
db_mem = 5120

# We are a private node, no need to peer.
peering = false
Save and exit (Ctrl+X, Y, Enter).

(Optional) Create a Welcome Banner

This is a great way to verify you're connected to your own node.
nano ~/fulcrum/banner.txt
Create some ASCII art (e.g., from patorjk.com/software/taag/) and save the file. When you connect with Sparrow, this text will appear. Note: I had to ensure there was an additional space or the ASCII got misfigured.

Phase 4: Create the systemd Service

This service will automatically start Fulcrum after bitcoind is running.
sudo nano /etc/systemd/system/fulcrum.service
Paste this configuration, which is corrected for your user (satoshis) and your service dependencies.
[Unit]
Description=Fulcrum Electrum Server
# We require bitcoind to be running first
After=bitcoind.service
Requires=bitcoind.service

[Service]
# Run as your 'satoshis' user
User=satoshis
Group=satoshis

# Run the Fulcrum binary and point it to our config file
ExecStart=/home/satoshis/fulcrum/Fulcrum /home/satoshis/fulcrum/fulcrum.conf

# Give the database a long time to shut down gracefully
TimeoutStopSec=30min

# Set a high file limit for the database
LimitNOFILE=8192
Restart=on-failure

[Install]
WantedBy=multi-user.target
Save and exit.

Phase 5: Launch & Monitor

We're ready to launch. First, open the firewall for the encrypted port (50002).
sudo ufw allow 50002/tcp
sudo ufw reload

# Reload systemd, enable, and start Fulcrum
sudo systemctl daemon-reload
sudo systemctl enable --now fulcrum.service
Now, monitor the sync. Fulcrum must index the entire blockchain. This is a very I/O-intensive process that will take many hours to a full day. Your NVMe drive will be working hard.
journalctl -fu fulcrum.service
You will see it processing blocks. Let this run until it is caught up and is only reporting new mempool transactions.

Phase 6: Connect Sparrow Wallet

Once Fulcrum is synced, open Sparrow on your desktop:
  1. Go to File -> Preferences -> Server.
  2. Change the "Type" to Private Electrum Server.
  3. URL: Enter your node's LAN IP (e.g., 192.168.8.50).
  4. Port: 50002
  5. Check the "Use SSL" box.
  6. Click "Test Connection".
Sparrow will show a pop-up warning you that the certificate is "self-signed." This is expected and secure. Click "Allow" to permanently trust your node's certificate. The light in the bottom-right corner will turn green.
if the Bitcoin node already has a TX Index (txindex=1) can Fulcrum just be pointed to that rather than having to re-index the whole chain again ?
reply
Not as far as I know.
reply
I still prefer electrs
reply