Full-Monero-Node on Linux
Referance:
Photo by Bruno Glätsch
Monero is currently the best in the field thanks to the fairly big anonymity set, mandatory privacy for all transactions, ring signatures, Ring CT, stealth addresses, and the future Kovri anonymization network.
Although Monero developers have mitigated most, if not all, privacy risks associated with connecting your wallet to a 3rd party node, to get a piece of mind it's recommended to run your own full node.
In this article, I'll go through steps to install and set up monero on Linux, mainly the latest Ubuntu 18.04 bionic.
However, the steps should be the same for any Debian-based distribution using systemd and fairly similar for other distros with the exception of the package manager (apt).
Sorry, no Mac or Windows.
When finished, copy all the binaries to
You may want to raise
My node failed to keep up with the chain height after the April's fork so I had to set it manually.
Next, create a config file:
Please be patient.
The first one lets other nodes download the chain from you. The latter lets a wallet connect to your node and retrieve info about its balance, transactions etc.
For the P2P connection run this command:
Please refer to your router's manual.
If you use the GUI wallet go to Settings and fill out Address and Port.
Next, under Manage Daemon click Show Advanced and type in the RPC login you've set in
In case of using the command line wallet, you may start it with the following:
The ones that you will likely use the most are:
Optionally, to make your node more secure and anonymous, you may want to run it behind torify or torsocks (essentially the same). Unfortunately, I haven't done it myself yet so you'll have to look elsewhere.
All in all, I hope you liked the tutorial.
Please let me know in the comments section below if you run into any issues.
However, the steps should be the same for any Debian-based distribution using systemd and fairly similar for other distros with the exception of the package manager (apt).
Sorry, no Mac or Windows.
1 Update the operating system
First, update the system packages:sudo apt update && sudo apt-get upgrade
2 Install dependencies
Make sure you have git installed. If not, do it now:sudo apt install gitInstall the rest of dependencies:
sudo apt install build-essential cmake doxygen graphviz miniupnpc pkg-config libboost-all-dev libcurl4-openssl-dev libgtest-dev libminiupnpc-dev libreadline-dev libssl-dev libunbound-dev libunwind8-dev libzmq3-dev libzmq3-dev libpgm-dev libsodium-devUnfortunately,
libgtest-dev
doesn't come as binary on Ubuntu, so you'll have to compile it yourself:cd /usr/src/gtest sudo cmake . sudo make -j2 sudo mv libg* /usr/lib/How to Create a Monero Paper Wallet to Secure Your Coins
3 Download and build Monero
Createsource
directory if you haven't already:mkdir ~/source cd ~/sourceClone the repository and its submodules:
git clone --recursive https://github.com/monero-project/monerocd monero make -j2 release # -j4 for 4 threads etcIt may take a while to compile depending on your machine.
When finished, copy all the binaries to
/usr/local/bin
:sudo cp ./build/release/bin/* /usr/local/bin/Top 5 Reasons Monero Will Become the Most Widely Used Private and Anonymous Cryptocurrency
4 Set up the service
I've written a systemd service that automatically starts the node after a reboot or when crashed.cd /lib/systemd/system sudo wget https://gist.githubusercontent.com/mariodian/b8bb62de8f5aa5466cccb17f280f439e/raw/db0a98573e0a8cc871781d8d43f03437ca159e22/monerod.servicesudo chmod 644 monerod.serviceMake sure to edit the file to match your environment.
You may want to raise
block-sync-size
to a higher number if you run on a decent hardware or omit it completely and let the daemon decide automatically.My node failed to keep up with the chain height after the April's fork so I had to set it manually.
Next, create a config file:
mkdir ~/.bitmonero cd ~/.bitmonero touch monerod.confand add the following lines:
echo "data-dir=/home/satoshi/.bitmonero" >> monerod.conf echo "log-file=/home/satoshi/.bitmonero/monero.log" >> monerod.conf echo "log-level=0" >> monerod.confIf you want to be able to connect your wallet from another machine, add the following:
echo "rpc-bind-ip=0.0.0.0" >> monerod.conf echo "rpc-bind-port=18081" >> monerod.conf echo "rpc-login=veryLongAndRandomUsername:veryLongAndRandomPassword" >> monerod.confDon't forget to change
rpc-login
to your own one.5 Run the service
Enable the systemd config and start the daemon:sudo systemctl enable monerod sudo service monerod startYou can check the progress with:
tail -f monero.logor using a simpler output:
monerod --config-file /home/satoshi/.bitmonero/monerod.conf statusThe synchronization may take from a few hours to a few days depending on your hardware.
Please be patient.
6 Allow incoming connections (optional)
You can allow two types of incoming connections to your node: P2P and RPC.The first one lets other nodes download the chain from you. The latter lets a wallet connect to your node and retrieve info about its balance, transactions etc.
For the P2P connection run this command:
sudo iptables -I INPUT -p tcp --dport 18080 -j ACCEPTFor the RPC:
sudo iptables -I INPUT -p tcp --dport 18081 -j ACCEPTSave the rules permanently:
sudo iptables-saveIf you're behind a router, you will have to forward the ports to your machine.
Please refer to your router's manual.
7 Connect to the node with your wallet
Now test your connection from your wallet.If you use the GUI wallet go to Settings and fill out Address and Port.
Next, under Manage Daemon click Show Advanced and type in the RPC login you've set in
~/.bitmonero/monerod.conf
earlier.In case of using the command line wallet, you may start it with the following:
monero-wallet-cli --wallet-file /path/to/your/wallet --trusted-daemon --daemon-address ip.of.your.node:18081 --daemon-login veryLongAndRandomUsername:veryLongAndRandomPasswordPersonally, I prefer the command line wallet because it's cleaner and all you need, most of the time, is really just 3 or 4 commands.
The ones that you will likely use the most are:
show_transfers
to view the list of all transactionsintegrated_address
to get a receiving address containing a payment IDbalance
to view locked and unlocked balancetransfer <address> <amount>
to make a payment
help
to access the list of all commands.
*****
As you can tell, setting up Monero full node from source is fairly easy if you have basic knowledge of the Linux command line.Optionally, to make your node more secure and anonymous, you may want to run it behind torify or torsocks (essentially the same). Unfortunately, I haven't done it myself yet so you'll have to look elsewhere.
All in all, I hope you liked the tutorial.
Please let me know in the comments section below if you run into any issues.
We hope you like the post. Please share it with your followers. Thank you for your support!
Subscribe to our newsletter for weekly thoughts and tutorials. You'll receive a FREE e-book as a bonus!