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:
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 192.168.1.99 with the IP address of your node):
./monerod --restricted-rpc --rpc-bind-ip 192.168.1.99 --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 192.168.1.99:18081
If all goes well, you should see your wallet connecting, and syncronizing very quickly:
Mac:Monero mike$ ./monero-wallet-cli --daemon-address 192.168.1.99:18081 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.