/ crypto

Keep your wallet synced with your own full Monero node

If you've been experimenting with cryptocurrencies, you probably discovered that you can't properly operate your wallet unless it's fully synced. As blockchain sizes and transaction rates grow, wallet synchronization becomes problematic for a lot of people. This is what "wallet sync" search term looks like on Google Trends:


Solution: set up your own dedicated blockchain node on your local network and point your wallets to it. Your wallets will always sync instantly.

I like having a decicated machine for keeping up with the blockchain data (Ethereum and Monero in my case). For a device that's always on and does a lot of random reads/writes, I prefer energy efficient, SSD-based hardware. HD used to make Stream 200-010 Mini Desktop (discontinued). It's a thing of beauty - quiet (fanless), energy efficient (5..10 Watts), and easy to upgrade (first thing I did was swap out the standard 32GB SSD for 128GB):


HP Stream Mini Desktop is unfortunately no longer available for sale, but may occasionally be found on eBay. Amazon offers a wide selection of similar hardware.

Once Ubuntu is set up, you can proceed with installing the Monero daemon software.

First, make sure that port 18080 is open (UFW example):

sudo ufw allow 18080

Download and extract the current Monero core binaries:

wget https://downloads.getmonero.org/linux64
mkdir monero
tar -xjvf linux64 -C monero
cd monero

Take a look at the various settings monerod accepts:

./monerod --help

We will use the following settings:
--restricted-rpc to enable RPC access (it's disabled by default)
--rpc-bind-ip to bind to a specific (public) network interface
--confirm-external-bind to allow external connections

Launch monerod with these settings (replace with the IP address of your node):

./monerod --restricted-rpc --rpc-bind-ip --confirm-external-bind

You should now be able to connect to your Monero daemon via RPC from other machines, using command-line tools:

./monero-wallet-cli --daemon-address

If all goes well, you should see your wallet connecting, and syncronizing very quickly:

Mac:Monero mike$ ./monero-wallet-cli --daemon-address
Monero 'Helium Hydra' (v0.11.1.0-release)
Logging to ./monero-wallet-cli.log
Specify wallet file name (e.g., MyWallet). If the wallet doesn't exist, it will be created.
Wallet file name (or Ctrl-C to quit): personalwallet
Wallet and key files found, loading...
Wallet password: *******************************
Opened wallet: 46URAzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Use "help" command to see the list of available commands.

Starting refresh...
Refresh done, blocks received: 4                                
Balance: 0.593885362165, unlocked balance: 0.593885362165
Background refresh thread started
[wallet 46URAz]:

Similarly, you can specify your new local daemon in the GUI wallet:

Now your wallets are lightning-fast.