How to Run a Monero Node



Last updated: September 5th, 2025

How to Run a Monero Node

how-to-run-a-monero-node

Goal: get your computer syncing and serving the Monero network—privately and reliably—using either the easy GUI or the advanced CLI (monerod) path.

What you’ll install

  • Monero GUI (easy mode) or Monero CLI tools. Download only from the official site for your OS.
  • The daemon monerod, which syncs and validates the blockchain (wallets stay separate).

Option A — Easiest: Run a Node in the Monero GUI

  1. Install the latest Monero GUI for Windows/macOS/Linux from the official downloads page.
  2. Open the app → choose Advanced mode → go to Settings → Node.
  3. Select Local node to run your own node (best privacy). To point your wallet at another machine you run, choose Remote node and enter its host/port.
  4. Optional (space-saving): add the daemon startup flag --prune-blockchain in the GUI “Daemon startup flags” box to reduce disk usage by ~two-thirds.

Option B — Advanced: Run monerod from the Command Line

Quick start (pruned node)

Open a terminal (PowerShell on Windows, Terminal on macOS/Linux), then run:

# Create a data folder (optional)
mkdir -p ~/.bitmonero

# Start a pruned mainnet node (saves ~2/3 disk)
monerod --prune-blockchain --sync-pruned-blocks

--prune-blockchain saves disk space; --sync-pruned-blocks reduces bandwidth during sync.

Run as a background service on Linux (systemd)

Running as a service keeps your node online and lets you route access over Tor if you wish. The official docs include a ready-to-use systemd guide and cover firewall ports to open.

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

[Service]
User=monero
Group=monero
ExecStart=/usr/local/bin/monerod --prune-blockchain
Restart=always
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

Then enable it:

sudo systemctl daemon-reload
sudo systemctl enable --now monerod

Open the right ports (if you want to help the network or serve wallets)

  • P2P: TCP 18080 (lets peers fetch blocks from you).
  • Restricted RPC: TCP 18089 (view-only API for wallets / public nodes).
# Example with ufw on Ubuntu
sudo ufw allow 18080/tcp
sudo ufw allow 18089/tcp

Pruned vs. Full Node (Which should you run?)

  • Pruned node: keeps ~1/3 of the chain on disk (saves ~2/3 space) with no loss of wallet functionality; contributes less to initial syncs for new peers. Use --prune-blockchain.
  • Full node: stores everything; best for helping new nodes bootstrap and for research/archival needs.

Make Your Node Usable by Your Wallets (and Others)

  • Connect your own wallets: In GUI, set Settings → Node → Remote Node and point to your node’s IP and restricted RPC port.
  • Public node mode: Add --restricted-rpc (view-only API), --rpc-restricted-bind-ip 0.0.0.0, --rpc-restricted-bind-port 18089, and --confirm-external-bind. This exposes a safe subset of the API for wallets.
  • Auto-advertise your node: Add --public-node so wallets can auto-discover it over P2P.

Speed Up Sync (Optional)

You can import a prebuilt blockchain file, but note that normal P2P sync is usually faster and safer for most users.

Security & Privacy Best Practices

  • Prefer Local node for maximum privacy; if you must use a remote node, use Tor/I2P where possible.
  • If exposing RPC to the internet, always use --restricted-rpc (view-only), not the unrestricted RPC.
  • Consider routing traffic via Tor (--proxy, --anonymous-inbound) if you run a hidden service.

Common monerod Commands

  • Status: in the monerod console, type status.
  • Graceful exit: type exit.
  • Limit bandwidth: limit 2048 (kB/s).

Example Full Configs

Public (restricted) remote node + pruned

# monerod.conf
prune-blockchain=1
sync-pruned-blocks=1

# P2P
p2p-bind-ip=0.0.0.0
p2p-bind-port=18080

# Restricted RPC (safe for wallets)
restricted-rpc=1
rpc-restricted-bind-ip=0.0.0.0
rpc-restricted-bind-port=18089
confirm-external-bind=1
public-node=1

Defaults and flags documented in the official monerod reference and systemd guide.

Troubleshooting

  • Sync is slow: ensure port 18080 is open so you accept incoming peers; consider --fast-block-sync=1 (default).
  • Disk won’t shrink after adding prune: pruning added later is logical; use monero-blockchain-prune to copy a smaller database.
  • Wallet can’t connect remotely: confirm you used the restricted RPC port and set Use custom settings → Remote Node in the GUI.

Official References


Comments

No Comments

Post Comment

Prove you are human 11 + 14 =



Subscribe To Our Newsletter!

Monero Directory | Monerica Blog Sitemap


Note: some links may be affiliate links, in which we receive compensation.