All systems operational 21 cryptocurrencies accepted · Monero welcome No-KYC policy
ChainVPS

Privacy

How to Run a Monero Node on a VPS

Verify the chain yourself, sync your wallet privately, and keep a Monero node online around the clock — a practical, security-first setup guide.

Privacy7 min readChainVPS team

How to Run a Monero Node on a VPS

Running your own Monero node means you verify the blockchain yourself, broadcast transactions without trusting a stranger's server, and stop leaking your wallet activity to third-party remote nodes — and a VPS is the cleanest way to keep it online 24/7.

Why run your own Monero node

Most wallets default to a public remote node run by someone else. That node sees every request your wallet makes and can correlate your IP, timing, and the block range your wallet scans.

A node you control removes that middleman. You get authoritative validation, faster and more private wallet syncing, and the ability to serve your own devices from anywhere.

Trustless validation

Your node independently checks every block and transaction against consensus rules — no faith in a third party required.

Wallet privacy

Point your own wallets at your node so scan requests never touch a public server that logs IPs.

Always available

A VPS stays online when your laptop sleeps, so your node keeps syncing and stays ready the moment you need it.

Network health

Every well-connected node strengthens Monero's peer-to-peer graph and decentralization.

What kind of VPS you actually need

Monero's chain is large and grows steadily. The single most important resource is disk, followed by RAM and a stable connection — CPU matters mainly during the initial sync.

Storage~250 GB+ SSD/NVMe today, with headroom to grow; use a pruned node to roughly a third of that
RAM2 GB minimum, 4 GB comfortable — the DB is memory-mapped, so more RAM caches more of it
CPU2 vCPU is plenty; initial verification is the only heavy moment
BandwidthUnmetered strongly preferred — a public node can move real traffic
Ports18080 (P2P), 18081 (RPC), plus 18089 for restricted public RPC if you expose one

Disk speed is the real bottleneck during initial sync. NVMe over spinning disk can turn days of syncing into hours. If your provider offers NVMe, take it.

For an offshore, unmetered box with the disk headroom a growing chain needs, a privacy-focused VPS is a natural fit — ChainVPS offshore VPS plans are prepaid, no-KYC, and come with unmetered bandwidth so a busy node never runs into an overage.

Pruned vs full node

A full node stores the entire blockchain. A pruned node keeps all block headers and the data needed to validate, but discards most historical ring member data it no longer needs to serve.

  • Pruned node: roughly one-third the disk, validates just as strictly, and can still serve wallets — ideal for a lean VPS.
  • Full node: keeps everything, useful if you want to serve pruned peers or run archival tooling.
  • For a personal or wallet-serving node, pruned is the sensible default and saves you the most on storage.

Step-by-step: install and run monerod

  1. 1

    Provision the VPS

    Spin up a Debian or Ubuntu box that meets the specs above. SSH in and create a non-root user for the daemon.

  2. 2

    Harden first

    Update packages, enable a firewall (allow SSH plus 18080/18081), and set up key-only SSH before you expose anything.

  3. 3

    Download the official binaries

    Get the CLI tools from getmonero.org and verify the GPG signature and hashes against the signed hashes file. Never skip verification.

  4. 4

    Extract and place monerod

    Unpack the archive and move monerod into /usr/local/bin so it is on your PATH.

  5. 5

    Create a data directory

    Make a dedicated folder like /var/lib/monero owned by your daemon user, and point the node there so data lives on your big disk.

  6. 6

    Write a config file

    Create monerod.conf with your data-dir, log settings, pruning flag, and RPC binding. A config file beats a long command line and survives restarts.

  7. 7

    Run under systemd

    Create a systemd service so the node starts on boot, restarts on failure, and runs unprivileged. Enable and start it.

  8. 8

    Watch the initial sync

    Tail the log or run status in monerod. Initial sync takes hours to a day depending on disk speed; let it finish before relying on the node.

A minimal monerod.conf

  • data-dir=/var/lib/monero — keep the DB on your large volume
  • prune-blockchain=1 — run pruned to save disk
  • log-file=/var/log/monero/monerod.log and log-level=0
  • rpc-bind-ip=127.0.0.1 and rpc-bind-port=18081 — keep RPC local unless you deliberately publish it
  • p2p-bind-port=18080 — the peer-to-peer port that keeps you connected
  • no-igd=1 and enable-dns-blocklist=1 — skip UPnP on a VPS and drop known-bad peers

Keep RPC bound to 127.0.0.1 unless you intend to serve the public. If you want remote wallets to reach it, tunnel over SSH or WireGuard rather than opening 18081 to the whole internet.

Connecting your wallet to your node

Once synced, point your wallet's daemon address at your node. Do it privately — a plaintext RPC port on the open internet defeats the purpose of running your own node.

SSH tunnel

Forward the remote 18081 to a local port over SSH. Your wallet talks to localhost; nothing hits the public internet in the clear.

WireGuard

Put your node and devices on a small private VPN and point the wallet at the node's internal IP.

Tor hidden service

Expose RPC as an onion service so remote wallets reach it offshore without a public IP.

Running an offshore or public node

You can help the network by serving others through the restricted RPC port 18089, which only exposes what a wallet needs and hides sensitive operations.

  • Use --public-node and --rpc-restricted-bind-port=18089 to advertise a restricted endpoint.
  • Consider running over Tor or I2P so your node's location isn't tied to your identity — privacy networks are first-class in Monero.
  • Rate-limit and firewall carefully; a public node invites traffic and the occasional abusive peer.

Never claim transaction finality by counting a fixed number of confirmations in anything you build on top of your node. Treat a payment as settled once the network confirms it, and let your own risk tolerance decide how long to wait.

Keeping the node healthy

  • Update monerod promptly around network upgrades — an outdated node can fork off and stop validating correctly.
  • Monitor disk usage; the chain only grows, so alert before the volume fills.
  • Back up your monerod.conf and systemd unit, not the blockchain — the chain re-syncs from peers.
  • Check peer count and sync height periodically so you notice a stalled or isolated node early.
How much disk does a Monero node really need?

A pruned node fits comfortably under 100 GB today, while a full node needs roughly 250 GB and climbing. Since the chain grows continuously, provision extra headroom rather than sizing to the exact current total.

Is a VPS private enough for a Monero node?

The node software is what protects you, not the host — validation is trustless either way. For metadata privacy, choose a no-KYC provider, pay with crypto, keep RPC off the public internet, and optionally route the node over Tor or I2P.

Will running a node speed up my wallet?

Yes. Syncing against a fast local node on NVMe is far quicker and more private than a distant public node, because there's no shared queue and no third party logging your scan requests.

Can I run the node and my wallet on the same VPS?

You can, but it's cleaner to keep the spend/view keys off an internet-facing box. Run monerod on the VPS and connect a wallet from your own device over an SSH tunnel or VPN.

Put it into practice.

Deploy an offshore server from $3.49/mo · 21 cryptocurrencies · no KYC.