Nodes are an important part of the Monero network infrastructure. Nodes simply store a copy of the blockchain. They can optionally be configured to
share this information with other nodes and clients. Running a node is the only way to get the highest level of privacy and security when connecting to the Monero network.
In Monero, the program for running a full node is called the “daemon”.
Running a full node will use a decent amount of storage (currently ~30GB, increasing over time) and bandwidth. It will likely take several days to sync the entire
blockchain from scratch, even if you have fast hard drive and a fast connection. The amount of bandwidth used will vary based on your internet speed and other settings.
The commands to configure these settings are at the end of the guide. Monthly bandwidth use can vary from about one hundred gigabytes per month to several terabytes.
Many people run the daemon from a terminal interface, especially if they are running a VPS. You may also want to do this if you want to stay in-sync without keeping the wallet open.
This guide will cover using Windows, Mac, and Linux. This assumes you have a 64-bit operating system. If your computer was made since 2005, it is likely 64-bit.
If You Already Have the GUI Running (All Operating Systems)
If you are running the official Monero GUI, it will prompt you to run the daemon locally by default.
This is the same as running a full node. Specify “localhost” as the daemon address in settings and click “start daemon”.
You can manually specify daemon options in the “daemon startup flags” if desired. The GUI should start and stop the daemon process automatically.
Run a Monero Node on Windows
Download the latest version from
here.
Extract the contents of the .zip file that is downloaded. To do this, you can simply double-click on the .zip file, click on the extract tab in the ribbon,
and then the “extract all” option. Choose a folder to extract these to, making sure to remember it.
You can run the daemon with all the default options by simply running “monerod.exe”. If you would like to include options, it’s best to create a batch file.
To create a batch file, open notepad by searching for it in the start menu. Type in the following:
monerod.exe
Append additional options after monerod.exe. Eg: monerod.exe --limit 1000
monerod.exe --limit 1000
Save the file in the same folder that monerod.exe is located in. When saving, change the “save as type” to “all files (*.*)”.
Name the file “Run monerod.bat”. The name can vary, but make sure that it ends in .bat.
You can run the daemon by double-clicking on the created .bat file. This will; run monerod.exe with the chosen options.
Run a Monero Node on Mac
Download the latest version from
here.
Extract the contents of the downloaded file, and open a terminal by searching for it in applications. Navigate to the extracted file location.
If you saved it to Documents, for example, use:
cd ~/Documents
Run the following command, appending additional options at the end if desired:
./monerod
Run a Monero Node on Linux (Ubuntu 16.04)
For the sake of this guide, working with local Ubuntu installations and VPS installations, it will use the terminal using root.
If you are not using root, insert “sudo ” before commands if there are permission errors.
Start by downloading the Monero daemon files:
wget https://downloads.getmonero.org/cli/linux64
This will download a .tar.gz file that needs to be extracted. Create a new folder and extract it with the following two commands:
mkdir monero
tar -xjvf linux64 -C monero
Navigate to the new folder with the extracted files. Note: the version number may change.
cd ./monero/
ls
The “ls” command will show another folder wherein the daemon files are contained. The folder should be named “monero-v0.11.1.0” or similar.
Type this exact folder name that is shown as you navigate. It may be different than the exact command below if the version has changed!
cd ./monero-v0.11.1.0
You are now in the folder with the daemon files. You need to make sure the file is executable.
chmod +x ./monerod
You can now run the daemon. However, if you want to make sure it runs in the background, you should use screen. Screen is a program that allows a simple management of multiple terminals. Install the program:
apt-get install screen
Open a new terminal session for running the daemon:
screen -S monero
Navigate to the folder and run the daemon (appending options to the end if necessary):
./monerod
Do not close the terminal if you want the session to continue in the background. Instead, detach from the screen session. Hold the control key, press A, then D like so:
Ctrl + a + d
To reattach to the screen, use the following command:
screen -r monero
Opening Up the Monero Daemon
If you are familiar with torrents, downloading data from others is called “leaching”, and uploading data to others (contributing) is called “seeding”.
With the Monero blockchain, this functions in a similar way. If you are on a firewalled network, you will only be “leaching” from the network.
Let’s walk through how to set up your client so that you can contribute to the network!
The Monero daemon uses the following ports:
- - 18080 TCP for incoming connections
- - 18081 TCP for incoming RPC connections (can be configured to a different port with --rpc-bind-port)
- - 53 UDP for DNS (optional)
If you are on a
home network, the method to open ports will vary significantly based on the router you have. However, it comes down to giving the device
running the daemon a static local IP address and opening up the desired ports. Search for your specific router model and instructions.
There is likely another simple guide available to do this.
If you are on a
hosted network (eg: VPS), the provider typically will have ports open, so all you may need to do is configure your firewall.
For Ubuntu, you can use a tool called iptables. Install iptables and UFW if not already installed:
apt-get install iptables ufw
If using IPv6 (skip this command if you are not sure), run the following command and change the IPV6 line to IPV6=yes:
nano /etc/default/ufw
Open a specific port on the firewall with ufw allow [PORT]/[TYPE]. In this example, we will prepare the node to be compatible with MoneroWorld services,
so we will open ports 18080 and 18089.
ufw allow 18080/tcp
ufw allow 18089/tcp
If you are on a
non-configurable network (eg: public WiFi, apartment with provided internet), you will need to communicate with your internet provider
to open a port for you. They may have a process in place, or they may disallow open ports.
You should make your node contribute more to the Monero network if you can! We recommend participating in the
MoneroWorld service.
Additional Monero Daemon Options
Below are some popular daemon options. Please ignore all brackets [] and the help text after #. You will need to replace these with your own values.
--rpc-bind-ip [IP ADDRESS]
--rpc-bind-port [PORT]
--restricted-rpc
--confirm-external-bind
--rpc-login [USERNAME]:[PASSWORD]
--limit [KB/s]
--limit_up [KB/s]
--limit_down [KB/s]
--data-dir [LOCATION]
--db-sync-mode safe
--out-peers [NUM]
--block-sync-size [NUM]
--db-salvage
--add-peer [IP]:[PORT]