Running a Monero Node on a VPS
Running your own monerod node gets your wallet off public remote nodes and puts you in full control of chain verification. Here's how to size, install, and configure one on a VPS.
Size Your VPS
The full Monero blockchain is large and growing — well over 200 GB at time of writing, so check the current size before you provision. A pruned node (monerod's --prune-blockchain flag) keeps roughly a third of that while still fully validating the chain and serving most wallet needs, which is what most self-hosters run.
For a pruned node, a Master tier VPS (80 GB NVMe, 12 GB RAM) gives comfortable headroom. If you want an unpruned archival node, or plan to grow into other services on the same box, go with an Enterprise tier (120 GB NVMe, 18 GB RAM). NVMe storage matters here — initial sync is I/O-bound, and spinning disks make it dramatically slower.
Connect and Update
SSH into your server and update packages before installing anything:
ssh root@YOUR_SERVER_IP apt update && apt upgrade -y
Download and Verify monerod
Download the official Monero CLI release for Linux from the Monero Project's website (getmonero.org) — never from a third-party mirror. Before extracting or running anything, verify the download's PGP signature or checksum against the values published on the official site.
This step matters more than it might seem: a tampered binary running as root on your server is a serious compromise. The official downloads page documents the current verification process — follow it exactly rather than skipping to extraction.
Configure monerod
Extract the binaries somewhere sensible, e.g. /opt/monero, and create a data directory for the blockchain, e.g. /data/monero (put this on your largest volume if storage is split).
A reasonable starting config (monerod.conf in your data directory):
data-dir=/data/monero prune-blockchain=1 rpc-bind-ip=127.0.0.1 rpc-bind-port=18081 confirm-external-bind=0 log-file=/data/monero/monerod.log log-level=0
Binding RPC to 127.0.0.1 keeps it local-only by default — safer than exposing it to the internet unless you deliberately want to run a public node.
Run as a systemd Service
Create /etc/systemd/system/monerod.service:
[Unit] Description=Monero Daemon After=network.target
[Service] User=monero ExecStart=/opt/monero/monerod --config-file=/data/monero/monerod.conf --non-interactive Restart=on-failure
[Install] WantedBy=multi-user.target
Create a dedicated non-root user for the service (useradd -r -s /usr/sbin/nologin monero, then chown the data directory to it) rather than running monerod as root. Then enable and start it:
systemctl daemon-reload systemctl enable --now monerod
Let It Sync
Check progress with:
monerod status
or by tailing the log file. Initial sync time depends heavily on disk speed and network throughput — on NVMe with good bandwidth it's commonly done well within a day; on slower hardware it can take considerably longer. Adding --fast-block-sync=1 (the default in recent releases) speeds this up by trusting checkpointed blocks rather than fully validating ancient history block-by-block, while still verifying the chain from the checkpoint forward.
Point Your Wallet at Your Node
Once synced, connect a wallet to your own node instead of a public remote node — this is the entire point of running one. In the official GUI wallet, choose "Connect to a specific node" and enter 127.0.0.1:18081 if the wallet runs on the same server, or your server's IP and a firewalled port if connecting remotely.
If you want to connect from elsewhere, don't just open 18081 to the world — use the restricted RPC mode (--restricted-rpc, typically on port 18089) which limits what remote callers can do, and put it behind a firewall rule (ufw allow from YOUR_IP to any port 18089) or a WireGuard tunnel rather than leaving it open to everyone.
FAQ
Why run my own node instead of using a public remote node?
A remote node operator can see the IP address querying it and, depending on the query, some metadata about what your wallet is doing — even though they can't see your private keys or spend funds. Running your own node removes that third party entirely and lets you independently verify the chain rather than trusting someone else's copy.
Pruned or full node — which should I run?
A pruned node validates the entire chain and works fine for wallet use and relaying transactions, at roughly a third of the storage. Run a full unpruned node only if you specifically need complete historical block data — for example for certain research, indexing, or block-explorer use cases.
Will syncing a node eat my bandwidth allowance?
Initial sync transfers meaningfully more data than day-to-day operation, but Strike.bz plans in the Master/Enterprise range include 16–24 TB of monthly traffic, which comfortably covers a full sync plus ongoing peer relay traffic for a personal node.
Can I also use the same VPS for other things?
Yes — you get full root access, so the same server can run a wallet backend, a WireGuard tunnel, or anything else alongside monerod, as long as you size RAM and storage for the combined workload.
Do I need to verify my identity to order the VPS?
No. Strike.bz doesn't require KYC for any plan, and you can pay with Monero itself — see our guide on buying a VPS with Monero.
Get a VPS Sized for a Monero Node
Master and Enterprise tiers: 80–120 GB NVMe, 12–18 GB RAM. No KYC, pay with crypto including Monero.