Your own node
Why run monerod, what hardware you need and how to configure it
Your own node is monerod downloading and independently verifying the whole blockchain. A wallet connected to your own node reveals your IP to nobody and trusts nobody else's data. You need: a 64-bit 2–4-core CPU, 4–8 GB RAM, an SSD with ~100 GB (pruned) or ~250 GB (full; figures as of January 2026, growing), and a stable internet connection.
Why
- Privacy: a remote node sees your IP and when you send transactions. Your own doesn't.
- Trust: you check all the rules yourself — emission, signatures, proofs. Nobody can feed you a fake history.
- Helping the network: a public node serves blocks to others and can serve wallets (restricted RPC).
- Mining via P2Pool requires your own node.
Hardware requirements
| Minimum (pruned) | Comfortable (full) | |
|---|---|---|
| CPU | 64-bit, 2 cores (a Raspberry Pi 4/5 works) | 4+ x86-64 cores — faster initial sync |
| RAM | 4 GB | 8 GB+ |
| Disk | SSD ~100 GB + headroom | SSD/NVMe ~250 GB + headroom for growth |
| Network | unmetered; initial download ≈ database size | open port 18080 for incoming peers |
| Initial sync | a day to several days | hours to a day on a good NVMe |
The LMDB database does a huge number of random reads. On a spinning disk sync can take weeks. If you only have an HDD, use pruned mode and be patient.
Full or pruned
A pruned node keeps everything needed to verify new blocks but discards 7/8 of the "prunable" data of old transactions (signatures and proofs — see transaction structure). It fully verifies the chain while syncing and is fully suitable for your own wallet. Savings: about two thirds of the space. The only difference is that a pruned node can't serve the full history to others.
Quick start
- Download the CLI archive from getmonero.org/downloads and verify the hash (
hashes.txt, signed by binaryFate). - Run:
./monerod --prune-blockchain --enable-dns-blocklist
Data goes to ~/.bitmonero (Linux/macOS) or C:\ProgramData\bitmonero (Windows). Progress shows in the log; the interactive console accepts status, sync_info, print_height, exit.
The wallet connects to 127.0.0.1:18081 — in Feather/GUI that's the "Node" setting.
Config file
Instead of a long command line, use ~/.bitmonero/bitmonero.conf:
# data and pruning
data-dir=/var/lib/monero
prune-blockchain=1
db-sync-mode=safe
# P2P
p2p-bind-ip=0.0.0.0
p2p-bind-port=18080
out-peers=32
in-peers=64
enable-dns-blocklist=1
no-igd=1
# RPC for yourself only (full access)
rpc-bind-ip=127.0.0.1
rpc-bind-port=18081
# public restricted RPC for others' wallets (optional)
rpc-restricted-bind-ip=0.0.0.0
rpc-restricted-bind-port=18089
public-node=1
confirm-external-bind=1
# ZMQ for P2Pool (optional)
zmq-pub=tcp://127.0.0.1:18083
# send your own transactions via Tor (needs a running tor)
# tx-proxy=tor,127.0.0.1:9050,16
Ports
| Port | Purpose | Open to the internet? |
|---|---|---|
| 18080 | P2P between nodes | Yes, if you want to help the network (incoming peers) |
| 18081 | Full RPC (node control) | No, localhost only |
| 18089 | Restricted RPC (convention) for wallets | Optional — for a public node |
| 18082 / 18083 | ZMQ RPC / ZMQ pub (P2Pool) | No |
Running as a service (Linux, systemd)
[Unit]
Description=Monero daemon
After=network-online.target
[Service]
User=monero
ExecStart=/opt/monero/monerod --config-file /etc/monero/bitmonero.conf --non-interactive
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Save as /etc/systemd/system/monerod.service, then systemctl enable --now monerod. Status: /opt/monero/monerod status (the command connects to the RPC by itself).
Over Tor: a hidden service
You can make the node reachable as a .onion — for your own wallets on the go, without opening ports to the internet. Add a hidden service on port 18089 to torrc, and to the monerod config add anonymous-inbound=your.onion:18083,127.0.0.1:18083,24 for P2P over Tor. Detailed instructions are in ANONYMITY_NETWORKS.md in the Monero archive.