Money no one can freezeCash for the internet, private by default

MonkStash Server Your own Monero node, in one command.

Rent a small Linux server, paste two lines, and get a pruned Monero node with HTTPS, a firewall and a status page. Add MonkStash Pay and the same server takes payments for your shop. Free and open source.

Last updated . Tested on every change on Ubuntu 24.04 (x86-64 and ARM64) and 22.04. Debian 12 and 13 are supported but not in the automatic test yet.

Your wallet, on your deviceyour serverHTTPS and status pageCaddy, automatic certificateMonero node, prunedofficial release, signature checkedMonkStash Pay (optional)view-only payments for a shopThe Monero networkyours,no account,no telemetry
Figure 1What runs on your server.

The short version

  • Your node, not someone else's. A public node sees which requests your wallet makes. Your own node sees only you.
  • The official Monero release. The script checks the release signature with the Monero project's key before it installs anything.
  • Ready for wallets. HTTPS with an automatic certificate, and the MonkStash web wallet may connect from a browser. Feather, Cake and the Monero GUI work too.
  • Payments for a shop, if you want them. One flag adds MonkStash Pay: a view-only payment server that can see payments and never spend them.

Install it

1. Rent a server

Debian 12 or 13, or Ubuntu 22.04, 24.04 or 26.04, with at least 4 GB of memory and about 150 GB of free disk for a pruned mainnet node. Point a domain at its IP address (for example node.example.com), or skip that and the script uses an address like 203-0-113-7.sslip.io. See pick a server.

2. Run two lines

Log in to the server with SSH and run:

InstallDebian or Ubuntu, as root
curl -fsSL https://monkstash.com/server/install.sh -o install.sh
sudo bash install.sh install --domain node.example.com

It asks once before it changes anything. Want to read it first? It is a single file: less install.sh, or read it on GitHub.

3. Connect your wallet

Open https://node.example.com/status and wait until it says Up to date. Then in MonkStash go to Settings, Connection, choose your own node and paste https://node.example.com. Other wallets take the same address.

What it sets up

Table 1. The pieces MonkStash Server installs
PieceWhat it does
Monero nodeThe official monerod, pruned, as a system service under its own user, restarted if it stops
Restricted RPCWhat wallets use. It cannot change or stop the node. The full RPC listens only on the server itself
HTTPSCaddy with an automatic certificate, no access log
Firewallufw: SSH on its current port, 80, 443 and the Monero peer port open, everything else closed
Status pageSync progress, peers, disk and version at /status, refreshed every minute
MonkStash PayOptional, with --pay: checkout pages and a shop API at pay.<your address>

Pick a server

A pruned mainnet node needs about 4 GB of memory and 150 GB or more of SSD, and the disk matters most for the first sync. Two plans that fit, checked on 21 October 2026:

Table 2. Servers that fit a pruned node
Host and planSizePriceNodes allowed?
Contabo Cloud VPS 66 vCPU, 12 GB, 200 GB SSDEUR 6 a month (24-month term, tax included)Says nodes and wallets are allowed; mining is not
Netcup VPS 2000256 GB diskEUR 26.92 a month (12-month term)Check its terms for nodes before you order

Prices change; check the host. Avoid plans under 150 GB of disk: they cannot hold the chain for long. Mainstream clouds work too but need an extra volume for the disk, which roughly doubles the price.

For shops: MonkStash Pay

Add --pay and the same server takes Monero payments for your shop. It asks for your shop wallet's primary address, private view key and restore height. With those it can see payments, never spend them. Never give it a seed or spend key.

Node and paymentsWooCommerce shop
sudo bash install.sh install --domain node.example.com --pay \
  --shop-url https://shop.example.com --shop-name "Example shop" --currency EUR

Then run sudo monkstash-server pay-info and copy the server address, API key and webhook secret into the MonkStash Pay plugin in WooCommerce. A fresh address for every order, prices in your currency, and the order completes itself when paid. The plugin and how it works: Monero for WooCommerce.

Day to day

Commands
# Sync progress, peers, disk, version
monkstash-server status
# Install a newer Monero release (signature checked again)
sudo monkstash-server update
# Check for new releases every day and install them
sudo monkstash-server install --auto-update
# Get the latest version of this script
sudo monkstash-server self-update

Running install again changes settings (a domain, another wallet origin, Pay) and keeps the blockchain. uninstall removes the services and keeps the blockchain unless you add --purge.

What it checks, and its limits

  • The release. It downloads the signed hash list from getmonero.org, checks the signature with the Monero release key (fingerprint 81AC 591F E9C4 B65C 5806 AFC3 F0AF 4D46 2A0B DF92), and checks the archive's SHA-256 against it. A changed hash list or a different key stops the install.
  • The script itself. Its SHA-256 is listed in this site's build manifest, and the site can be rebuilt from the public source to check it (how). Run sha256sum install.sh to compare.
  • Tested in public. Every change installs it on fresh Ubuntu machines, x86-64 and ARM64, with a test node, and checks the sync, HTTPS, browser access, the restricted RPC, the status page, the firewall and uninstall (the test runs).
  • It runs as root, like any server installer, because it installs services and a firewall. Read it before you run it if you can.
  • You run the server. Keeping its system updated, its SSH login safe and its disk from filling up is yours to do. The script has not had an independent security review yet.

Questions

How long does the first sync take?

About 1 to 3 days for a pruned mainnet node on a typical VPS, mostly limited by the disk. The status page shows the progress. Your wallet can use the node once it says Up to date.

Pruned or full?

Pruned is the default: it keeps about a third of the data (about 105 GiB in October 2026, against about 265 GiB for the full chain), still checks every block and serves wallets. Choose --full if you want to help other nodes sync from the very beginning.

Can other wallets use it?

Yes. Feather, Cake Wallet and the Monero GUI can connect to the same address. MonkStash Server also allows the MonkStash web wallet to call it from a browser.

Does MonkStash see anything?

No. The script sends nothing to MonkStash, and there are no accounts or telemetry. It downloads the release from getmonero.org and GitHub, Caddy from its package repository, and a certificate from Let's Encrypt. Your node then talks to other Monero nodes.

Who can see my server's IP address?

Other Monero nodes see it, as with any node, and anyone you give the address to. Wallets that connect to it see it too. The node does not keep an access log of who connects.

Does it run on a Raspberry Pi?

It supports ARM64 Linux (Debian or Ubuntu with systemd), so a Pi 4 or 5 with 4 GB or more and an SSD can work, but a home connection needs a public address or a domain for HTTPS. A VPS is the simpler start.