Running your own Monero node is the single most impactful thing you can do for your privacy โ and for the network. When you use a remote node (the default in most wallets), the node operator can see: your IP address, which transactions you're scanning for, and when you're active. They can't see your spend key or break Monero's cryptography, but they absolutely can build a metadata profile on you. Running your own node eliminates this entirely. Here's how.
๐ฅ๏ธ Why Run Your Own Node?
- Maximum privacy: Nobody sees which transactions belong to you โ not remote nodes, not ISPs (with Tor), nobody.
- Trustless verification: You validate every block and transaction yourself. No trusting a third party about the state of the chain.
- Network strength: Every node increases Monero's decentralization and censorship resistance.
- Fast wallet sync: Local node syncs your wallet in minutes, not the hours a remote node might take.
Types of Monero Nodes
Full Node (Unpruned)
A full node downloads and validates the entire Monero blockchain โ every block, every transaction, since April 2014. As of mid-2026, the blockchain is approximately 210โ230 GB. Full nodes verify everything and serve the complete blockchain to other peers. Best for: maximum security, contributing maximum bandwidth to the network, and archival purposes.
Pruned Node
A pruned node stores only ~1/3 of the blockchain data (~70โ80 GB). It still fully validates every transaction โ pruning only discards old ring signature data that's no longer needed for validation. For virtually all users, a pruned node offers identical security to a full node at a fraction of the storage cost. The prune ratio is approximately 3:1.
Light Wallet Server (Optional)
If you want to use mobile wallets while preserving privacy, you can run your own light wallet server alongside your node. This lets Cake Wallet, Monerujo, or other mobile wallets connect to your infrastructure instead of a public remote node.
Hardware Requirements
๐ฆ Minimum Specs (Pruned Node)
- CPU: Any modern 64-bit processor (x86_64 or ARM64)
- RAM: 4 GB (8 GB recommended)
- Storage: 100 GB SSD (NVMe strongly preferred โ HDD is painfully slow for sync)
- Internet: Unmetered connection recommended. Initial sync downloads 80โ230 GB.
- OS: Linux (Ubuntu/Debian recommended), macOS, Windows (WSL2), or BSD
๐ช Recommended Specs (Full Node)
- CPU: Quad-core 64-bit, 2 GHz+
- RAM: 8 GB
- Storage: 500 GB NVMe SSD (room for blockchain growth)
- Internet: Unmetered, 10+ Mbps upstream helps the network
Installation: Linux (Ubuntu/Debian)
Step 1: Download and Verify Monero CLI
# Download the latest release
wget https://downloads.getmonero.org/cli/linux64
# Verify the hash (check against getmonero.org/downloads)
sha256sum linux64
# Extract
tar -xvf linux64
cd monero-x86_64-linux-gnu-v*
Step 2: Start the Daemon (Pruned Mode)
# Pruned node โ downloads ~70 GB, stores ~80 GB
./monerod --prune-blockchain --data-dir /path/to/blockchain
For a full node, simply omit --prune-blockchain:
# Full node โ downloads ~220 GB, stores ~230 GB
./monerod --data-dir /path/to/blockchain
Step 3: Configure for Your Wallet
Once monerod is fully synced (check with status command in the daemon console), configure your wallet to connect:
# Monero GUI / CLI: set "localhost" as the node
# Feather Wallet: Settings โ Node โ Custom โ 127.0.0.1:18081
# Cake Wallet: Settings โ Node โ Add Node โ 127.0.0.1:18081
โฑ๏ธ How Long Does Initial Sync Take?
On a modern NVMe SSD with a decent internet connection: 6โ12 hours for a full node, 3โ6 hours for a pruned node. On an HDD, it can take 2โ5 days due to random I/O bottlenecks during validation. An SSD is not optional for a reasonable experience โ it's essential.
Running Monero on a Raspberry Pi
Yes, you can run a Monero node on a Raspberry Pi. A Pi 5 (8 GB) is the recommended minimum. Here's what you need:
- Hardware: Raspberry Pi 5 (8 GB RAM) or better
- Storage: External NVMe SSD via USB 3.0 or NVMe HAT (avoid microSD โ it will die quickly under blockchain I/O)
- Power: Official Pi 5 power supply (5V/5A) โ undervoltage will corrupt the blockchain database
- Cooling: Active cooling (fan or heatsink case) โ the Pi 5 runs hot under sustained load
- OS: Raspberry Pi OS (64-bit) or Ubuntu Server for ARM
Pi Setup:
# Install dependencies
sudo apt update && sudo apt install bzip2 wget
# Download ARM64 Monero binaries
wget https://downloads.getmonero.org/cli/linuxarm8
tar -xvf linuxarm8
cd monero-aarch64-linux-gnu-v*
# Run pruned node (essential for Pi's limited storage)
./monerod --prune-blockchain --data-dir /mnt/ssd/blockchain \
--out-peers 8 --in-peers 16 --limit-rate-up 256 \
--limit-rate-down 1024
The bandwidth limits (--limit-rate-up and --limit-rate-down in KB/s) are important for home connections. Adjust based on your upstream bandwidth.
Bandwidth: What to Expect
Running a Monero node uses significant bandwidth, especially during initial sync and if you have many peers:
- Initial sync download: 70 GB (pruned) to 220 GB (full)
- Initial sync upload: 20โ50 GB (serving blocks to peers during sync)
- Ongoing (full node): 300โ500 GB/month upload, 50โ100 GB/month download
- Ongoing (pruned): 150โ300 GB/month upload, 30โ60 GB/month download
If you have a metered connection, use --limit-rate-up and --limit-rate-down to cap bandwidth. You can also reduce peer counts with --out-peers 4 --in-peers 8 to lower usage. The node stays fully functional โ you're just contributing less to the network.
Docker & Systemd: Running 24/7
Docker Setup
# Pull the official image
docker pull ghcr.io/sethforprivacy/simple-monerod:latest
# Run pruned node
docker run -d --name monerod \
-v /path/to/blockchain:/home/monero/.bitmonero \
-p 18080:18080 -p 18081:18081 \
ghcr.io/sethforprivacy/simple-monerod:latest \
--prune-blockchain --rpc-bind-ip=0.0.0.0 \
--rpc-bind-port=18081 --confirm-external-bind
Systemd Service (for auto-start on boot)
# Create service file: /etc/systemd/system/monerod.service
[Unit]
Description=Monero Full Node
After=network.target
[Service]
User=monero
Group=monero
ExecStart=/usr/local/bin/monerod \
--prune-blockchain \
--data-dir=/var/lib/monero \
--pidfile=/run/monero/monerod.pid
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable monerod
sudo systemctl start monerod
Connecting Your Wallet to Your Node
Once your node is running and synced, connecting your wallet is straightforward:
- Monero CLI:
./monero-wallet-cli --daemon-address localhost:18081 - Monero GUI: Settings โ Node โ Local node
- Feather Wallet: Settings โ Node โ Custom โ
127.0.0.1:18081 - Cake Wallet (mobile): If running a light wallet server on your node, connect to your node's LAN IP or use Tailscale/WireGuard for secure remote access
๐ Pro Privacy: Node + Tor
Run your node over Tor to hide your IP address from the rest of the Monero network. Add --tx-proxy=tor,127.0.0.1:9050,10 --anonymous-inbound=TOR_ADDRESS:18083,127.0.0.1:18083,25 to your monerod command. This broadcasts transactions through Tor and allows inbound connections via Tor hidden service. Combined with a local node, this is the gold standard for Monero privacy.
Troubleshooting Common Issues
Node won't sync / stuck at a block
Try: monerod --pop-blocks 100 to rewind and re-download the last 100 blocks. If that doesn't work, the blockchain database may be corrupted โ delete data.mdb and re-sync (this is why SSDs matter; resync on HDD is days of pain).
Out of memory
Monerod needs ~4 GB RAM minimum during sync. On Raspberry Pi or low-RAM VPS, ensure swap is enabled (at least 4 GB) โ but expect slower sync with swap.
Port forwarding
For incoming connections (which help the network), forward port 18080 on your router. This is optional โ your node will still work with only outbound connections, but it won't contribute incoming bandwidth to the network.
Why This Matters
Every person running their own Monero node strengthens the network against:
- Sybil attacks: Malicious actors running thousands of nodes to de-anonymize users by controlling their view of the network.
- Eclipse attacks: Isolating a specific node from the honest network by surrounding it with malicious peers.
- Censorship: More independent nodes = harder to block Monero traffic at the network level.
Running a node isn't just about your own privacy โ it's a direct contribution to Monero's censorship resistance. Every node counts.