{
  "version": "v1",
  "slug": "run-a-monero-node",
  "title": "How to run your own Monero node",
  "description": "Why a personal node is the upgrade most XMR users skip, what hardware/bandwidth it needs, and the bootstrap, sync, and remote-access setup — including a Tor hidden service.",
  "intro": "Public remote nodes work, but they correlate your IP with your subaddresses on every wallet refresh. A personal node solves that — and gives you a chain you can trust against re-org/relay manipulation. Below: when it's worth the effort, the hardware floor, the setup, and how to share it back to the network.",
  "body_plain": "Why personal nodes matter (and when they don't) Privacy: the remote-node operator sees your IP and which subaddresses you scan for. Your own node makes that information local-only. Trust: you verify every block. The chain you see is the chain consensus rules say is valid — not what a public-node operator chose to show you. Availability: public nodes go down or get rate-limited. Your node is always there. When not worth it: low-balance hot wallet, mobile-only user, transient setup. Then a vetted Tor-hosted remote node from /nodes is the pragmatic option. Hardware floor CPU: any 64-bit CPU made in the last 10 years. Sync is single-threaded-ish + RandomX validation; nothing fancy. RAM: 4 GB minimum, 8 GB comfortable. Disk: ~250 GB SSD as of mid-2026 (pruned: ~80 GB). NVMe is faster but SATA SSD works. Spinning rust is painful. Bandwidth: ~5–10 GB initial sync, then a few hundred MB/day. Unlimited or generous-cap connection. OS: Linux (Debian / Ubuntu / Arch) is the path of least resistance. Windows + macOS work; raspi 4 works for pruned-only. Setup — Linux (recommended) Get a verified binary. Download from getmonero.org → verify GPG signature (see verify guide ) → extract. Pick a config: monerod \\ --data-dir /var/lib/monero \\ --no-igd \\ --restricted-rpc \\ --rpc-bind-ip 127.0.0.1 \\ --rpc-bind-port 18081 \\ --confirm-external-bind \\ --enable-dns-blocklist \\ --out-peers 32 \\ --in-peers 64 (drop --restricted-rpc if this node is for your own wallet only; keep it if you'll share) Run as a service: systemd unit, restart on failure, user monero . Wait. Initial sync: 12–48 hours depending on disk + CPU. Use --fast-block-sync 1 for less verification (faster but trusts the network more on old blocks). Open the wallet RPC port only to localhost (or your LAN with a firewall). Never expose 18081 to the public internet without RPC restrictions. Connect your wallet Feather / Monero GUI / Cake on same machine: point at http://127.0.0.1:18081 . Done. Same LAN: point at the LAN IP. Make sure RPC is bound to the LAN interface, firewalled to your subnet. Remote (recommended Tor): see below. Expose over Tor (recommended for remote access) Install Tor on the same machine. apt install tor . Add a hidden service to /etc/tor/torrc : HiddenServiceDir /var/lib/tor/monero-rpc/ HiddenServicePort 18081 127.0.0.1:18081 Restart Tor , read /var/lib/tor/monero-rpc/hostname — that's your .onion address. Wallet config: point at http://<your-onion>:18081 . Use --proxy 127.0.0.1:9050 on the wallet's CLI or the wallet's \"use Tor\" toggle. Optional: add the --rpc-restricted-bind port to a second hidden service so you can share with friends without exposing internal-only RPC. Share back to the network If you have bandwidth to spare, the Monero P2P port ( 18080 ) can be exposed publicly to relay blocks and transactions for others. Doing so helps decentralization. Run a clear-net peer + an onion peer for max impact; xmr.club lists working public nodes at /nodes — yours can join. Common failure modes Disk fills up during sync. Provision 300+ GB. Use a separate volume so the OS root doesn't crash. \"Connection refused\" from wallet. RPC isn't bound to where the wallet's connecting. Check --rpc-bind-ip + firewall. Slow first sync. CPU is RandomX-bottlenecked or disk is the bottleneck. SSD non-negotiable. Node falls behind. Often clock skew. Run chrony / systemd-timesyncd . Wallet syncs forever. Wallet's restore height is too low. Set it to the height your wallet was created — wallet skips earlier blocks. Wallet picks that work well with your own node",
  "body_html": "\n      <section>\n        <h2 class=\"section-h\">Why personal nodes matter (and when they don't)</h2>\n        <ul class=\"bullet-list\">\n          <li><strong>Privacy:</strong> the remote-node operator sees your IP and which subaddresses you scan for. Your own node makes that information local-only.</li>\n          <li><strong>Trust:</strong> you verify every block. The chain you see is the chain consensus rules say is valid — not what a public-node operator chose to show you.</li>\n          <li><strong>Availability:</strong> public nodes go down or get rate-limited. Your node is always there.</li>\n          <li><strong>When not worth it:</strong> low-balance hot wallet, mobile-only user, transient setup. Then a vetted Tor-hosted remote node from <a href=\"/nodes\">/nodes</a> is the pragmatic option.</li>\n        </ul>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Hardware floor</h2>\n        <ul class=\"bullet-list\">\n          <li><strong>CPU:</strong> any 64-bit CPU made in the last 10 years. Sync is single-threaded-ish + RandomX validation; nothing fancy.</li>\n          <li><strong>RAM:</strong> 4 GB minimum, 8 GB comfortable.</li>\n          <li><strong>Disk:</strong> ~250 GB SSD as of mid-2026 (pruned: ~80 GB). NVMe is faster but SATA SSD works. Spinning rust is painful.</li>\n          <li><strong>Bandwidth:</strong> ~5–10 GB initial sync, then a few hundred MB/day. Unlimited or generous-cap connection.</li>\n          <li><strong>OS:</strong> Linux (Debian / Ubuntu / Arch) is the path of least resistance. Windows + macOS work; raspi 4 works for pruned-only.</li>\n        </ul>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Setup — Linux (recommended)</h2>\n        <ol class=\"bullet-list\">\n          <li><strong>Get a verified binary.</strong> Download from getmonero.org → verify GPG signature (see <a href=\"/guides/verify-wallet-binary\">verify guide</a>) → extract.</li>\n          <li><strong>Pick a config:</strong>\n            <pre><code>monerod \\\n  --data-dir /var/lib/monero \\\n  --no-igd \\\n  --restricted-rpc \\\n  --rpc-bind-ip 127.0.0.1 \\\n  --rpc-bind-port 18081 \\\n  --confirm-external-bind \\\n  --enable-dns-blocklist \\\n  --out-peers 32 \\\n  --in-peers 64</code></pre>\n            (drop <code>--restricted-rpc</code> if this node is for your own wallet only; keep it if you'll share)</li>\n          <li><strong>Run as a service:</strong> systemd unit, restart on failure, user <code>monero</code>.</li>\n          <li><strong>Wait.</strong> Initial sync: 12–48 hours depending on disk + CPU. Use <code>--fast-block-sync 1</code> for less verification (faster but trusts the network more on old blocks).</li>\n          <li><strong>Open the wallet RPC port</strong> only to localhost (or your LAN with a firewall). Never expose 18081 to the public internet without RPC restrictions.</li>\n        </ol>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Connect your wallet</h2>\n        <ul class=\"bullet-list\">\n          <li><strong>Feather / Monero GUI / Cake on same machine:</strong> point at <code>http://127.0.0.1:18081</code>. Done.</li>\n          <li><strong>Same LAN:</strong> point at the LAN IP. Make sure RPC is bound to the LAN interface, firewalled to your subnet.</li>\n          <li><strong>Remote (recommended Tor):</strong> see below.</li>\n        </ul>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Expose over Tor (recommended for remote access)</h2>\n        <ol class=\"bullet-list\">\n          <li><strong>Install Tor</strong> on the same machine. <code>apt install tor</code>.</li>\n          <li><strong>Add a hidden service</strong> to <code>/etc/tor/torrc</code>:\n            <pre><code>HiddenServiceDir /var/lib/tor/monero-rpc/\nHiddenServicePort 18081 127.0.0.1:18081</code></pre>\n          </li>\n          <li><strong>Restart Tor</strong>, read <code>/var/lib/tor/monero-rpc/hostname</code> — that's your .onion address.</li>\n          <li><strong>Wallet config:</strong> point at <code>http://&lt;your-onion&gt;:18081</code>. Use <code>--proxy 127.0.0.1:9050</code> on the wallet's CLI or the wallet's \"use Tor\" toggle.</li>\n          <li><strong>Optional:</strong> add the <code>--rpc-restricted-bind</code> port to a second hidden service so you can share with friends without exposing internal-only RPC.</li>\n        </ol>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Share back to the network</h2>\n        <p>If you have bandwidth to spare, the Monero P2P port (<code>18080</code>) can be exposed publicly to relay blocks and transactions for others. Doing so helps decentralization. Run a clear-net peer + an onion peer for max impact; xmr.club lists working public nodes at <a href=\"/nodes\">/nodes</a> — yours can join.</p>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Common failure modes</h2>\n        <ol class=\"bullet-list\">\n          <li><strong>Disk fills up during sync.</strong> Provision 300+ GB. Use a separate volume so the OS root doesn't crash.</li>\n          <li><strong>\"Connection refused\" from wallet.</strong> RPC isn't bound to where the wallet's connecting. Check <code>--rpc-bind-ip</code> + firewall.</li>\n          <li><strong>Slow first sync.</strong> CPU is RandomX-bottlenecked or disk is the bottleneck. SSD non-negotiable.</li>\n          <li><strong>Node falls behind.</strong> Often clock skew. Run <code>chrony</code> / <code>systemd-timesyncd</code>.</li>\n          <li><strong>Wallet syncs forever.</strong> Wallet's restore height is too low. Set it to the height your wallet was created — wallet skips earlier blocks.</li>\n        </ol>\n      </section>\n\n      <section>\n        <h2 class=\"section-h\">Wallet picks that work well with your own node</h2>\n      </section>\n    ",
  "picks": [
    {
      "category": "wallets",
      "id": "feather",
      "name": "Feather",
      "url": "https://xmr.club/wallets/feather",
      "markdown_twin": "https://xmr.club/llm/wallets/feather.txt",
      "why": "Best wallet-to-node UX. Add custom remote → done. Tor handling built in."
    },
    {
      "category": "wallets",
      "id": "monero-gui",
      "name": "Monero GUI",
      "url": "https://xmr.club/wallets/monero-gui",
      "markdown_twin": "https://xmr.club/llm/wallets/monero-gui.txt",
      "why": "Official desktop. Talks to local monerod natively. Reproducible build."
    },
    {
      "category": "wallets",
      "id": "monerujo",
      "name": "Monerujo",
      "url": "https://xmr.club/wallets/monerujo",
      "markdown_twin": "https://xmr.club/llm/wallets/monerujo.txt",
      "why": "Android. Connects to your own onion node with the Tor proxy toggle."
    },
    {
      "category": "wallets",
      "id": "cake-wallet",
      "name": "Cake Wallet",
      "url": "https://xmr.club/wallets/cake-wallet",
      "markdown_twin": "https://xmr.club/llm/wallets/cake-wallet.txt",
      "why": "Mobile. Custom remote-node field accepts your onion address."
    }
  ],
  "url": "https://xmr.club/guides/run-a-monero-node",
  "markdown_twin": "https://xmr.club/llm/guides/run-a-monero-node.txt"
}