How to run a Monero (XMR) node
We strongly recommend running your own Monero node! Here is a simple guide for running a Monero node with Ubuntu.
You don’t need fancy hardware to run a node that is only meant to handle your basic personal use, but we recommend the following:
- At least 256 GB of storage on an SSD
- At least dual core, ideally quad core
- At least 2 GB of RAM, ideally 4 GB
- At least 10 Mbps connection, with at least 100 GB of monthly data
We recommend running the node on your home network.
You can use another OS, but we will use Ubuntu for this guide.
Download the latest Ubuntu “LTS” release here. For this guide, we are using the command line only version.
You will need to add this image to a flash drive. Here are guides for the operating system you are currently using:
Attach the flash drive to your Monero node computer, and boot from USB.
Follow the instructions to install Ubuntu Server. After you are done, turn off the computer, remove the flash drive, and turn it back on. Make sure it boots to the newly installed Ubuntu operating system.
Update and harden Ubuntu
Run these commands (one at a time) to update and harden Ubuntu:
sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install -y ufw curl curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER su - $USER sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 18080/tcp sudo ufw allow 18081/tcp sudo ufw enable
These will install Docker and enable a firewall.
The Monero node software is called
You will need to decide if you want other people to be able to use your node for syncing and sending transactions. Doing so is good for the Monero network, but it will cost you more bandwidth.
If you DO want others to be able to access your node
Run the following command:
docker run -d --restart unless-stopped --name="monerod" -p 18080:18080 -p 18081:18081 -v bitmonero:/home/monero sethsimmons/simple-monerod:latest --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18081 --no-igd --no-zmq --enable-dns-blocklist --public-node
If you DON’T want others to be able to access your node
Select a username and a strong password. Replace
user:pass at the end of the command below with your selected username and STRONG password. For example (don’t use this!), replace it with
docker run -d --restart unless-stopped --name="monerod" -p 18080:18080 -p 18081:18081 -v bitmonero:/home/monero sethsimmons/simple-monerod:latest --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18081 --no-igd --no-zmq --enable-dns-blocklist --rpc-login:user:pass
For all cases
Copy/paste the following entire block as a single command:
docker run -d \ --name watchtower --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower --cleanup \ monerod tor
Configuring your router firewall
If you want your Monero node to be reachable outside of your local network, you will need to enable port forwarding on your router.
You will need to forward these ports:
- 18080 (TCP only, not UDP)
- 18081 (TCP only, not UDP)
There are many router-specific guides on portforward.com.
Make sure to use a modern router from a reputable brand that is still getting security updates! Update the router firmware, and select a STRONG router password!
Your Monero node will automatically update to the latest Monero version! You will want to periodically update Ubuntu:
sudo apt-get update && sudo apt-get upgrade -y
Thanks to Seth for Privacy for their node guide and their Docker image.
Not ready to run your own Monero node yet? Check out a list of popular Monero remote nodes at nodes.monero.com.