Run Your Own Monero Node
You run your own Monero node when you point monerod at hardware you control, rather than trusting a remote node with your IP address and your transaction history. This guide walks through the full setup on Windows and Linux.
Why Run a Node?
Running monerod on hardware you control stores a copy of the blockchain and connects to the P2P network. While you can use remote nodes for convenience, a local node offers significant benefits:
- Privacy: Remote nodes can see your IP address and when you broadcast transactions. A local node keeps this data on your own device.
- Security: You verify the blockchain yourself rather than trusting a third party.
- Network Health: More nodes make Monero more resilient against attacks and censorship.
Prerequisites
Hardware
- Storage: SSD recommended (HDD is very slow).
- Space: ~70GB (Pruned) or ~150GB+ (Full).
- RAM: At least 4GB.
Software
- Monero Command Line Tools (CLI).
- A text editor (Notepad, Nano, VS Code).
- Basic terminal/command prompt knowledge.
Step-by-Step Setup
1 Step 1: Download & Prepare Folders
Download the CLI tools from the official website. Once downloaded, create a dedicated folder for your node.
Windows
- Create a folder named
monerodon your C: drive. - Extract the downloaded zip contents into this folder.
- Add an exclusion in Windows Defender for this folder to prevent false positives.
Linux
Run the following commands to create a directory and extract the tarball:
tar -xjf monero-linux-x64-v*.tar.bz2 -C ~/monerod
2 Step 2: Create Configuration File
Instead of running the node with default settings, we will create a config file to customize it. In your monerod folder, create a new text file named bitmonero.conf.
Paste the following configuration into the file. This setup enables a Pruned Node (saves space) and sets up log locations.
data-dir=./data
# Log File Location
log-file=./data/logs/monerod.log
# Pruning (Saves disk space, downloads ~1/8th of full history)
prune-blockchain=1
sync-pruned-blocks=1
# Security
enable-dns-blocklist=1
no-zmq=1
3 Step 3: Start the Node
Open your terminal (or PowerShell on Windows) and navigate to your folder. Run the daemon using the config flag.
Command:
./monerod --config-file=./bitmonero.conf
(On Windows, use .\monerod.exe)
You will see the node begin to sync. If you see SYNCHRONIZED OK, your node is fully up to date. This process can take several hours or days depending on your internet and drive speed.
4 Step 4: Port Forwarding (Optional)
To help the network by letting other nodes download from you, you need to open port 18080.
- Router: Log into your router settings and forward TCP port 18080 to your computer's local IP.
- Linux Firewall (UFW): Run
sudo ufw allow 18080/tcp. - Windows Firewall: Create a new Inbound Rule allowing TCP connection on port 18080.
Useful Node Commands
| Command | Description |
|---|---|
| status | Check block height and connection status. |
| print_net_stats | See data traffic (upload/download) stats. |
| limit_down 1024 | Limit download speed to 1MB/s (adjust number as needed). |
| exit | Safely shut down the node and save the database. |
Pointing a wallet at your node
A daemon nobody connects to is just disk usage. In the Monero GUI, open Settings, then Node, and select Local node if the wallet runs on the same machine; confirm the address reads 127.0.0.1 on RPC port 18081. Feather asks for a node on first launch and takes the same host and port, typed into the Node tab rather than chosen from its bundled list. The CLI wallet accepts --daemon-address 127.0.0.1:18081.
Wallets on other devices need that RPC port reachable, and exposing 18081 straight to the internet publishes a service anyone can fingerprint and query. Publish it as a Tor hidden service instead. Add a HiddenServicePort 18081 127.0.0.1:18081 line to your torrc, restart Tor, then give the phone wallet the resulting .onion address with its own Tor toggle enabled. Cake Wallet and Monerujo both accept an onion node address in their custom-node fields.
Two settings decide whether the node stays safe to share. Running with restricted-rpc stops other people's wallets from calling administrative commands if you ever hand out the address. Setting no-igd and disabling UPnP keeps the daemon from asking your router to open ports you did not choose yourself. Before trusting a balance, check the daemon's own view of itself with status and sync_info: a wallet syncing against a node that is itself behind will report stale numbers without saying so.
Keeping your node healthy
Congratulations! You are now running a local Monero node. You have increased your financial privacy and contributed to the strength of the network. Leave monerod running when practical so wallets you control can sync against localhost rather than a stranger's remote. If disk space is tight, prune mode trades some history for a smaller footprint — document which mode you chose before pointing a wallet at the daemon. Rebooting the host is fine; set monerod to start with the OS if you rely on it daily.
Back to Tutorials












