Wallets

Connect your wallet to your own node

Point your wallet at your own machine, and your addresses stay off a stranger's server.

Most wallets ask a company's server for your balance and history. That server learns every address you own. Running a node only fixes this if the wallet actually uses it. This guide uses Sparrow Wallet, a free desktop wallet that supports Bitcoin Core and Electrum servers directly.

It assumes your node has finished syncing (setup, sync stuck). Nothing here involves seed phrases or recovery; set up your wallet or hardware device from its vendor's instructions.

Which setup

SituationUse
Sparrow on the same machine as the nodeBitcoin Core directly, cookie auth. Simplest; no network exposure
Sparrow on a laptop, node elsewhere on your LANElectrum server (electrs or Fulcrum) on the node machine
Same, but you do not want to run an indexerScoped RPC limited to your LAN

Sparrow on the same machine as the node

Add this to bitcoin.conf and restart Core:

/etc/bitcoin/bitcoin.conf
server=1
# Optional: faster wallet rescans, costs extra disk
blockfilterindex=1

server=1 is required if you run Bitcoin-Qt and harmless with bitcoind. Make sure disablewallet=1 is not set: Sparrow uses Core's wallet feature to track your addresses. Your node learns your wallet's public addresses, never private keys, which is what you want from your own node.

Then in Sparrow open Settings (called Preferences in older versions), the Server tab, choose Bitcoin Core:

  • URL 127.0.0.1, default port.
  • Authentication: leave the default. Sparrow reads the cookie file Core writes to its datadir at every start, so there is no password to create or leak. With the setup on this site, select /var/lib/bitcoind: your user can read the cookie because it is in the bitcoin group.
  • Click Test Connection. Success names Cormorant, Sparrow's Core connector.

No RPC port is exposed beyond the machine. Create or import your wallet (File, New Wallet); for a wallet with existing history, set the scan start date before the first transaction. A pruned node cannot scan before its oldest block; see pruned vs full.

Sparrow on another computer: Electrum server

This is the recommended LAN setup. Core keeps RPC on localhost; an Electrum server on the node machine reads from it and the laptop talks only to the Electrum server. It needs an unpruned node; see Electrum server vs full node for electrs vs Fulcrum and what each requires. Follow the project's own install guide, wait for its index to finish building, then:

  1. Keep the server on localhost and reach it with an SSH tunnel from the laptop, which is what electrs's docs recommend over opening the port:
on the laptop
$ ssh -N -L 50001:127.0.0.1:50001 you@192.168.1.10
  1. In Sparrow, Settings, Server, choose Private Electrum Server. URL 127.0.0.1, port 50001 (or your server's port), SSL off (the tunnel is the encryption).
  2. Test Connection.

If you skip the tunnel and bind the server to your LAN address instead, enter that address and port in Sparrow and keep it on the LAN only. Plain Electrum traffic is unencrypted. On macOS 15 or later, Sparrow also needs permission under System Settings, Privacy & Security, Local Network.

Sparrow on another computer: scoped RPC

Possible, with limits. RPC is unencrypted HTTP and anyone on your LAN can try it, so give it its own credentials and restrict by address. Generate them with the script in Core's source tree, share/rpcauth/rpcauth.py:

on the node
$ python3 rpcauth.py sparrow
String to be appended to bitcoin.conf:
rpcauth=sparrow:0a1b2c...$9f8e7d...
Your password:
(a long random string, shown once)

Put the rpcauth line in bitcoin.conf (not the password), bind to localhost and the node's LAN address, and allow only your LAN range. Adjust the addresses to yours:

/etc/bitcoin/bitcoin.conf
server=1
rpcauth=sparrow:0a1b2c...$9f8e7d...

[main]
rpcbind=127.0.0.1
rpcbind=192.168.1.10
rpcallowip=127.0.0.1
rpcallowip=192.168.1.0/24
firewall: LAN only
$ sudo ufw allow from 192.168.1.0/24 to any port 8332 proto tcp
$ sudo ufw status | grep 8332

Restart Core. In Sparrow, Bitcoin Core, URL 192.168.1.10, click the User/Pass button and enter sparrow and the password. Test Connection.

LAN only, never the internet

Do not forward 8332 on your router, use 0.0.0.0 in rpcbind or rpcallowip, or run this on a VPS. Do not load a Core wallet that holds private keys on a node with LAN-reachable RPC. After setup, ss -tlnp | grep 8332 on the node should show only the addresses you meant (security basics).

Check that it is really your node

  1. Compare the tip. Sparrow's connection test shows the current block height; bitcoin-cli getblockcount on the node should match.
  2. Pull the plug. Stop the node (or the Electrum server) for a minute. If Sparrow's status shows disconnected and it stops updating, it was using your node. If it still says connected, it is using something else; recheck the Server tab.
  3. Check the Server tab. It should say Bitcoin Core or Private Electrum Server, not Public Server.
  4. Check the other lookups. Sparrow also fetches exchange rates and fee estimates from external services. They do not receive your addresses or balance, but you can set the exchange rate provider to None in Settings, and use your node as the fee source where the option is offered.
on the node
$ bitcoin-cli getblockcount
969640
$ bitcoin-cli getbestblockhash | cut -c1-24
00000000000000000001a2b3

The lab has a "healthy node" scenario to practice reading these commands before you do it for real.

A node does not make your wallet anonymous: your ISP still sees your traffic, and your node's peers can see where your transactions are first broadcast from unless you add Tor. See Tor and privacy.

Hardware wallets that work with this setup

A hardware wallet keeps your keys on a separate device and signs transactions that Sparrow builds from your node's data. Sparrow's documentation lists these as supported over USB: Trezor, Ledger, Coldcard, BitBox02, Blockstream Jade, KeepKey and OneKey. We have not tested the devices ourselves; the four below are from that list. Set the device up with its official instructions and buy only from the manufacturer's own store. Never type your recovery words into a computer or website.

  • Trezor: open-source firmware, connects over USB. Sparrow's own USB walkthrough uses a Trezor as the example.
  • BitBox02: USB device from a Swiss maker with a Bitcoin-only edition; Sparrow added native pairing for it.
  • Coldcard: Bitcoin-only and built around air-gapped use with files on a microSD card. USB works if enabled. Update its firmware before connecting, per Sparrow's docs. More hands-on than the others.
  • Blockstream Jade: works with Sparrow over USB or air-gapped with QR codes.

Compatibility changes with firmware and Sparrow versions, so check Sparrow's documentation before buying.

Next

Need hardware for the node itself? See hardware. Keeping it healthy: maintenance. Not sure a node is worth it for you? Do you need a node?

FAQ

Does my wallet use my node automatically?

No. Wallets pick their own server. You have to point the wallet at your node or Electrum server in its settings.

Can I use a pruned node?

For Sparrow talking to Core, yes: a new wallet works, but it cannot scan for history older than your oldest retained block. An Electrum server needs an unpruned node.

Is it safe to open RPC to my home network?

Only to the LAN, with rpcauth credentials and a firewall rule. RPC is unencrypted HTTP. For anything beyond one trusted machine, an Electrum server is the better design. Never expose RPC to the internet.