How to run your own Monero node on a VPS

Pruned at about 113 GB or full at 285 GB, on NVMe: install monerod from verified binaries and connect your wallets over restricted RPC, SSH or Tor.

CBCheapServ BillingWritten by 6 min read
A server stack inside a translucent blue shield, with small blocks orbiting it
On this page8
  1. Pruned or full
  2. Disk, memory, CPU and traffic
  3. Install monerod and verify it
  4. Configure the node
  5. Run it as a service
  6. Connect your wallets
  7. Mining: on dedicated servers, not on a VPS
  8. Keeping it healthy

Every Monero wallet needs a node to sync with. Use a public remote node and that stranger learns your IP address, when you open your wallet and when you send; run your own and the only server your wallet talks to is yours. A VPS makes that easy: it is online all the time, so your phone and laptop sync quickly from anywhere. This guide picks the right size, installs monerod from verified binaries, and connects your wallets to it safely.

Pruned or full

Like Bitcoin Core, monerod downloads and verifies the whole chain either way. A pruned node then throws away most of the signature data of old transactions, which nobody needs once they are verified, and keeps about a third of the chain; a full node keeps everything and can serve the complete history to other nodes.

SetupDisk todayWhat it can doFits on
Pruned nodeAbout 113 GB (105 GiB)Sync your own wallets, act as a private remote node for your devicesVPS-4 (160 GB NVMe)
Full nodeAbout 285 GB (265 GiB)All of the above, plus serving full blocks to peers that sync from scratchVPS-16 (640 GB NVMe); VPS-8 (320 GB) only just

These are the Monero documentation’s own figures, as of 5 October 2026. The full chain grows by roughly 20 to 30 GB a year and a pruned one by about 10 GB, so VPS-4 leaves a pruned node about three years of growth. For a personal node a pruned one is the right choice: your wallet cannot tell the difference.

Disk, memory, CPU and traffic

  • Disk: Monero’s LMDB database does many small random reads, and monerod warns when it finds itself on a hard disk: “The blockchain is on a rotating drive: this will be very slow, use an SSD if possible”. That is why we recommend the Standard plans with NVMe for Monero rather than the Storage line.
  • Memory: the Monero documentation recommends 4 GB or more; VPS-4 has 8 GB.
  • CPU: the first sync is the CPU-heavy part, where more cores help; once the node is synced, the load is light.
  • Traffic: the first sync downloads the chain once; after that, traffic depends on your peers and on how many wallets you serve. monerod caps its upload at 8192 kB/s by default, and the configuration below lowers that with limit-rate-up. Every plan includes several terabytes a month; past the allowance the port slows to 100 Mbps and nothing is billed.

Install monerod and verify it

The Monero release hashes are listed in a file signed by binaryFate, the maintainer who signs releases. Check the signing key’s fingerprint, then the signature on the list, then the hash of your download:

cd /tmp
wget -O monero-linux-x64.tar.bz2 https://downloads.getmonero.org/cli/linux64
wget https://www.getmonero.org/downloads/hashes.txt
wget https://raw.githubusercontent.com/monero-project/monero/master/utils/gpg_keys/binaryfate.asc
gpg --show-keys --fingerprint binaryfate.asc
gpg --import binaryfate.asc
gpg --verify hashes.txt
sha256sum monero-linux-x64.tar.bz2
grep linux-x64 hashes.txt

Before importing the key, check the fingerprint the first gpg command prints: it must read 81AC 591F E9C4 B65C 5806 AFC3 F0AF 4D46 2A0B DF92, as published in the verification guide on getmonero.org. gpg --verify must report a good signature from binaryFate, and the two SHA-256 values must be identical. Then install the daemon and create a system user:

tar xjf monero-linux-x64.tar.bz2
install -m 0755 -o root -g root monero-x86_64-linux-gnu-*/monerod /usr/local/bin/
adduser --system --group --home /var/lib/monero monero

Configure the node

mkdir -p /etc/monero
cat > /etc/monero/monerod.conf <<'EOF'
data-dir=/var/lib/monero
log-file=/var/lib/monero/monerod.log
# Pruned node; remove both lines for a full node.
prune-blockchain=1
sync-pruned-blocks=1
# Peer-to-peer network.
p2p-bind-ip=0.0.0.0
p2p-bind-port=18080
out-peers=32
in-peers=64
# Upload cap in kB/s (default 8192).
limit-rate-up=2048
enable-dns-blocklist=1
no-igd=1
# Restricted RPC for your wallets: no admin commands.
rpc-restricted-bind-ip=0.0.0.0
rpc-restricted-bind-port=18089
# Full RPC stays on the server.
rpc-bind-ip=127.0.0.1
rpc-bind-port=18081
EOF

The restricted RPC port answers the calls a wallet needs to sync and send, and refuses everything that could change the node’s settings, so it is the one to point your wallets at. To offer it to other people’s wallets as a public node, add public-node=1, which advertises the restricted port over the peer-to-peer network; the Monero documentation warns that this can use a sizeable amount of resources.

Run it as a service

cat > /etc/systemd/system/monerod.service <<'EOF'
[Unit]
Description=Monero daemon
After=network-online.target
Wants=network-online.target

[Service]
User=monero
Group=monero
ExecStart=/usr/local/bin/monerod --config-file /etc/monero/monerod.conf --non-interactive
Restart=on-failure
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF
chown -R monero:monero /var/lib/monero
systemctl daemon-reload
systemctl enable --now monerod
ufw allow 22/tcp
ufw allow 18080/tcp comment monero-p2p
ufw enable

Follow the sync with monerod status, which prints the current height against the network’s and a percentage. The first sync is the long part: disk speed limits it most, then CPU and peers.

Connect your wallets

Feather, Cake Wallet, Monerujo and the official GUI all accept a custom node as an address and a port. You have three ways to reach it, from simplest to most private:

  • Open the restricted port to your own addresses only, for example ufw allow from 203.0.113.7 to any port 18089 proto tcp with your home or office IP, then use the server’s IPv4 and port 18089 in the wallet.
  • Through an SSH tunnel or WireGuard: forward port 18089 to the server and point the wallet at 127.0.0.1:18089. Nothing is exposed to the internet.
  • As a Tor onion service, so the wallet reaches the node without revealing your IP even to your own server’s logs:
apt install -y tor
cat >> /etc/tor/torrc <<'EOF'
HiddenServiceDir /var/lib/tor/monerod/
HiddenServicePort 18089 127.0.0.1:18089
EOF
systemctl restart tor
cat /var/lib/tor/monerod/hostname

Enter the .onion address with port 18089 in a wallet that supports Tor, such as Feather. Because every request then reaches monerod from 127.0.0.1, add disable-rpc-ban=1 to the configuration so the node does not ban its own onion service after a burst of wallet requests. Tor relays are welcome on our network; exit nodes are not.

Mining: on dedicated servers, not on a VPS

Running a node is welcome on every plan. Mining is not allowed on VPS and RDP plans, where it would slow down other customers on the same host; it is allowed on dedicated and GPU servers, where you have the whole machine. If you mine with P2Pool on a dedicated server, add zmq-pub=tcp://127.0.0.1:18083 to the configuration so P2Pool can follow new blocks from your own node.

Keeping it healthy

  • Upgrades: repeat the download and the three checks, replace monerod and restart the service. Monero announces network upgrades months ahead; none is scheduled as of October 2026, and when one is, upgrade before the fork height or your node will stop following the network.
  • Disk: du -sh /var/lib/monero once a month; resize the plan before the volume passes 85%.
  • Snapshots: take one once the node is synced, and before every upgrade.
  • Privacy of the server itself: pay for it in Monero from your own wallet if the payment trail matters; how our Monero deposits work explains what we see.
Run it on a CheapServ VPS

VPS-4 runs a pruned node with about three years of headroom for $6.99 a month, and VPS-16 holds the full chain for years. Pay in XMR with an e-mail-only account; the Monero node VPS page lists the plans that fit.

CB
CheapServ Billing

Owns the balance model, the deposit flow and the coin integrations.

Deploy your first server in under a minute.

Top up from $25 in BTC, ETH, XMR or USDT. Your balance never expires and unused funds are refundable.

Sign up now