How to Run a Monero Node — Full Setup Guide (2026)

Step-by-step monerod setup for Linux, macOS, and Windows. Tor integration, pruning, remote access, and why your own node is essential for privacy.

Quick Summary

A Monero node validates transactions and strengthens the network. Running your own means maximum privacy: your wallet talks directly to your node instead of leaking data to third parties. Requirements: 4+ GB RAM, 60-200 GB SSD, broadband internet. Sync time: 12-48 hours. Cost: $0 (software is free). Difficulty: beginner-friendly with this guide.

Why Run Your Own Monero Node?

Benefit Details
Maximum privacy Your transactions broadcast from your node, not a third party's. No one logs which transactions are yours.
Trustless verification You verify every transaction yourself. No trusting remote nodes to tell you the truth about the blockchain.
Network strength More nodes = more decentralized = harder to attack. You directly improve Monero's censorship resistance.
Required for Haveno Haveno (RetosSwap, DawnSwap) runs its own embedded node. Understanding monerod helps troubleshoot P2P trading.
Required for mining Mining Monero (especially solo mining and P2Pool) requires a synced local node.
IP privacy with Tor Run your node over Tor and even your ISP cannot see you're running Monero software.

The remote node risk: When you connect Feather Wallet or Monero GUI to a public remote node, that node operator can see your IP address and the transactions you submit. They cannot steal your funds or see your balance (Monero's cryptography prevents that), but they can correlate your IP with your transaction activity. For many users this is acceptable. For maximum privacy, your own node eliminates this risk entirely.

Hardware Requirements

Component Full Node Pruned Node Raspberry Pi
RAM 4 GB minimum
8 GB recommended
4 GB sufficient 4 GB minimum
Disk 250 GB SSD recommended
(~190 GB blockchain + growth room)
128 GB SSD recommended
(~60 GB pruned + growth room)
128 GB USB 3.0 SSD external
CPU Any modern dual-core Any modern dual-core Cortex-A72 (Pi 4/5)
Internet Broadband (10+ Mbps)
~150 GB initial download
Broadband (10+ Mbps)
~50 GB initial download
Broadband (5+ Mbps)
Sync time 12-48 hours (SSD)
3-7 days (HDD)
8-24 hours (SSD) 2-5 days
Ongoing bandwidth ~30-100 GB/month ~20-50 GB/month ~20-50 GB/month

SSD is non-negotiable. Monero's blockchain requires millions of random reads during sync and verification. An HDD will work but takes 5-10x longer to sync and makes the node sluggish. A basic 256 GB SATA SSD ($25-30) is the single best investment for a Monero node.

Step-by-Step Setup

Option A: Full Node vs. Pruned Node

Choose before you start:

Full Node Pruned Node
Disk space ~190 GB (growing) ~60 GB (growing slower)
Validates all transactions? Yes Yes
Serves full blockchain to peers? Yes Partial (1/8th of old blocks)
Privacy benefit? Full Full (identical)
Best for Dedicated server, lots of disk space Personal use, limited disk, Raspberry Pi

Recommendation: If you have 250+ GB free, run a full node. If disk is tight, pruned is just as good for personal privacy.

Option B: Download monerod

Linux
macOS
Windows

All platforms: Download from getmonero.org/downloads. Always verify the download hash against the signed hashes on the download page.

Download and verify

# Linux (x86_64)
wget https://downloads.getmonero.org/cli/linux64
# Verify the hash (check getmonero.org for current hash)
sha256sum linux64
# Extract
tar xvf linux64
cd monero-x86_64-linux-gnu-*/

On macOS: download the macOS CLI or use the GUI from getmonero.org. On Windows: download the .zip, extract, and open a command prompt in the folder.

Create a data directory

# Choose where to store the blockchain (needs 60-200 GB)
mkdir -p ~/.bitmonero
# Or use a dedicated drive:
mkdir -p /mnt/ssd/monero

Start monerod (full node)

# Full node — uses ~190 GB disk
./monerod --data-dir ~/.bitmonero --log-level 0

# OR pruned node — uses ~60 GB disk
./monerod --data-dir ~/.bitmonero --prune-blockchain --log-level 0

# Custom data directory on external SSD:
./monerod --data-dir /mnt/ssd/monero --prune-blockchain

The node will start syncing from block 0. This takes 12-48 hours on a first run. You'll see block heights counting up in the log.

Check sync status

# In another terminal, check status:
./monerod status

# Output when synced:
# Height: 3245678/3245678 (100.0%) on mainnet, not mining, net hash ...

# Output while syncing:
# Height: 1500000/3245678 (46.2%) on mainnet, not mining, net hash ...

When the height matches the network height, your node is fully synced.

Connect your wallet

# Feather Wallet: Settings → Node → Add custom node
# Address: 127.0.0.1  Port: 18081

# Monero GUI: Settings → Node → Local node
# It auto-detects monerod running on localhost

# CLI wallet:
./monero-wallet-cli --daemon-address 127.0.0.1:18081

Your wallet now talks exclusively to your own node. Zero data leakage to third parties.

Running Your Node Over Tor

For maximum privacy, route your node through Tor. This hides the fact that you're running a Monero node from your ISP and prevents network-level surveillance from correlating your IP with Monero activity.

Install Tor

# Debian/Ubuntu:
sudo apt install tor

# macOS (Homebrew):
brew install tor

# Start Tor service:
sudo systemctl start tor   # Linux
brew services start tor     # macOS

Configure monerod for Tor

# Start monerod with Tor proxy + transaction padding:
./monerod \
  --proxy 127.0.0.1:9050 \
  --anonymous-inbound YOUR_ONION.onion:18083,127.0.0.1:18083 \
  --pad-transactions \
  --no-igd \
  --hide-my-port \
  --data-dir ~/.bitmonero \
  --prune-blockchain

# Flags explained:
# --proxy          → route all outgoing connections through Tor SOCKS5
# --anonymous-inbound → accept incoming connections via Tor hidden service
# --pad-transactions  → add random padding to prevent traffic analysis
# --no-igd           → disable UPnP (leaks to LAN)
# --hide-my-port     → don't announce your real port to peers

Tor hidden service setup: To create an anonymous-inbound address, add to your /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/monero/
HiddenServicePort 18083 127.0.0.1:18083


Restart Tor, then find your .onion address in /var/lib/tor/monero/hostname. Use this as YOUR_ONION in the monerod command above.

Performance and Optimization

Speed up initial sync

Run as a system service (Linux)

# Create systemd service: /etc/systemd/system/monerod.service
[Unit]
Description=Monero Daemon
After=network.target

[Service]
User=monero
ExecStart=/opt/monero/monerod \
  --data-dir /home/monero/.bitmonero \
  --prune-blockchain \
  --non-interactive \
  --log-level 0 \
  --max-concurrency 4
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

# Enable and start:
# sudo systemctl enable --now monerod

This keeps your node running 24/7 and auto-restarts on crash or reboot.

Useful monerod commands

CommandDescription
statusShow sync height, hashrate, connections
print_net_statsShow bandwidth usage
print_cnShow connected peers
print_bc <height>Print block at specific height
in_peers <n>Limit incoming connections
out_peers <n>Limit outgoing connections
saveForce save blockchain to disk
exitGracefully shut down monerod

Node Types at a Glance

Type Disk Privacy Network Help Best For
Full node ~190 GB Maximum Maximum Servers, dedicated hardware
Pruned node ~60 GB Maximum Good Personal use, limited disk
Pruned + Tor ~60 GB Maximum++ Good Maximum privacy on limited disk
Remote node 0 GB Reduced None Mobile, casual use

Nodes and P2P Trading

If you trade Monero peer-to-peer, running your own node has direct practical benefits:

Buy or Sell Monero P2P

I'm arnoldnakamura — 683 trades, 454 partners, 100% feedback (verified on Wayback Machine). Cash by Mail EU-wide, Face-to-Face in SW Germany.

Contact: Telegram @arnoldnakamura

Common Issues

Node won't sync / stuck at a height

Check your system clock (date) — monerod requires accurate time. Try set_limit 0 to remove bandwidth limits. Check if port 18080 is open for incoming connections (not required but helps). Try restarting with --add-peer node.moneroworld.com:18080 to bootstrap peer discovery.

Running out of disk space

Switch to a pruned node: stop monerod, restart with --prune-blockchain. This will prune the existing database in-place, freeing ~130 GB. Or move the data directory to a larger drive with --data-dir.

High bandwidth usage

Limit peers: --out-peers 16 --in-peers 32 (defaults are higher). Or set bandwidth limits: --limit-rate-up 2048 --limit-rate-down 8192 (KB/s). Tor nodes naturally use less bandwidth.

Wallet can't connect to local node

Ensure monerod is running and RPC is enabled (it is by default on port 18081). Check firewall isn't blocking localhost:18081. In Feather Wallet: Settings → Node → Add → 127.0.0.1:18081.