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.
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:
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
| Piece | What it does |
|---|---|
| Monero node | The official monerod, pruned, as a system service under its own user, restarted if it stops |
| Restricted RPC | What wallets use. It cannot change or stop the node. The full RPC listens only on the server itself |
| HTTPS | Caddy with an automatic certificate, no access log |
| Firewall | ufw: SSH on its current port, 80, 443 and the Monero peer port open, everything else closed |
| Status page | Sync progress, peers, disk and version at /status, refreshed every minute |
| MonkStash Pay | Optional, 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:
| Host and plan | Size | Price | Nodes allowed? |
|---|---|---|---|
| Contabo Cloud VPS 6 | 6 vCPU, 12 GB, 200 GB SSD | EUR 6 a month (24-month term, tax included) | Says nodes and wallets are allowed; mining is not |
| Netcup VPS 2000 | 256 GB disk | EUR 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.
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
# 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.