How to run a Monero node

How to run a Monero node

This is a guide on how to install and setup a Monero node on Linux. This is a simple installation of the node, downloading the entire blockchain. I might do another blog in the future on how to install the node over Tor.

You'll need at least 250 GB of available storage. I chose to install it on an external 1 TB SATA 2.5" SSD formatted with ext4. I do not recommend using a HDD since syncing and memory access is slower.

Go to getmonero.org and download the Monero CLI wallet. Download the correct file for your device. If you are not sure what file to download, you can run the following command to know the architecture of your device:

terminal

uname -m

Once you download the correct binary file, I do not recommend to open and extract immediately. Malicious code can be (and has been) hooked on the website so you'll want to make sure that the file you downloaded is in fact the real binary from the Monero development team.

If you're feeling lucky, you can skip to the section where the binary file is finally extracted.

 

How to use the command line to verify your Monero CLI software

 

Go to Verify and Import Signing Key. Open a terminal in the same folder where you have the binary file that you just downloaded. Run the following command to hash the binary file (change the file name if needed):

terminal

shasum -a 256 monero-linux-x64-v0.18.4.1.tar.bz2

This will return an alphanumeric chain (e.g. 702ccb799c24160c0c76676d7a5b21a7e3432be47294d20e0a75451592f591b2). This should be the same as the hash shown in the Monero CLI wallet page (Verify → Show hashes to verify your download) for the binary file that you downloaded

Image

Download binaryFate's signing key by issuing the following command:

terminal

wget -O binaryfate.asc
https://raw.githubusercontent.com/monero-project/monero/master/utils/gpg_keys/binaryfate.asc

 


Verify the Signing Key

 

Once you have the binary file, check the fingerprint of binaryfate.asc by issuing the following command in the terminal:

terminal

gpg --keyid-format long --with-fingerprint binaryfate.asc

Compare the output and verify that the key fingerprint matched the one in getmonero.org. The output should look like this:

terminal

gpg: WARNING: no command supplied.  Trying to guess what you mean ...
pub   rsa4096/F0AF4D462A0BDF92 2019-12-12 [SCEA]
      Key fingerprint = 81AC 591F E9C4 B65C 5806  AFC3 F0AF 4D46 2A0B DF92
uid                           binaryFate 
sub   rsa4096/2593838EABB1F655 2019-12-12 [SEA]

This should be enough unless an attacker has compromised both the GitHub and the getmonero.org website. At the time that I'm writing this blog, the file in the Monero GitHub was uploaded on Dec 13, 2019.

Import the signing key:

terminal

gpg --import binaryfate.asc

The output should look like this if this is your first time importing the key:

terminal

gpg: key F0AF4D462A0BDF92: 2 signatures not checked due to missing keys
gpg: key F0AF4D462A0BDF92: public key "binaryFate " imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: marginals needed: 3  completes needed: 1  trust model: pgp

 

Download and Verify Hash File

 

Download the signed hashes file by issuing the following command:

terminal

wget -O hashes.txt https://www.getmonero.org/downloads/hashes.txt

Then verify the hashes.txt file by running:

terminal

gpg --verify hashes.txt

If the file is authentic, the output will look like this:

terminal

gpg:                using RSA key 81AC591FE9C4B65C5806AFC3F0AF4D462A0BDF92
gpg: Good signature from "binaryFate " [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 81AC 591F E9C4 B65C 5806  AFC3 F0AF 4D46 2A0B DF92

Now you can hash the binary file you downloaded at the beginning again and compare the output with the hashes in hashes.txt

terminal

shasum -a 256 monero-linux-x64-v0.18.4.1.tar.bz2

If the keys match the file you downloaded, congratulations! You're not getting hacked.

 

Extract the Binary File and Download the Monero Blockchain

 

In the download folder, run the following command to extract the binary file

terminal

tar -xvjf monero-linux-x64-v0.18.4.1.tar.bz2

Go into the extracted file:

terminal

cd monero-x86_64-linux-gnu-v0.18.4.1/

Download the Monero blockchain to the directory you would like (in my case it was an external SSD)

terminal

sudo ./monerod --data-dir=/REPLACE-WITH-THE-PATH

You should see something like this once the blockchain starts downloading:

I'm not quite sure why I was getting a connection error on one of my ports, this is a none critical issue so it doesn't affect anything. Either way, if this happens to you and you would like to get rid of it, you can change the file resolve.conf like this (/etc/resolve.conf):

text

# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 1.1.1.1
# nameserver fe80::1%wlan0

It can take from several hours to a few days to download the entire blockchain depending on your internet speed and the type of memory device you are using. To run the node after it's done installing (assuming you closed the terminal or restarted your device) you can use the following command to start the node again (use ctrl+c to exit):

terminal

sudo ./monerod --data-dir=/REPLACE-WITH-THE-PATH

Back to blog