XMR — Block —Hashrate —Tx fee ~—Converter

How to Mine Monero with P2Pool and XMRig: 2026 Setup Guide

Step-by-step P2Pool setup for Monero mining: run monerod, start P2Pool on main, mini or nano, point XMRig at it, open the right ports and check your shares.

IntermediateBy the XMR Daily team9 min read
On this page
  1. What P2Pool is and why miners use it
  2. What you need
  3. Step 1: Run monerod with ZMQ enabled
  4. Step 2: Enable huge pages
  5. Step 3: Choose main, mini or nano
  6. Step 4: Start P2Pool
  7. Step 5: Point XMRig at P2Pool
  8. Step 6: Check that it works
  9. Common problems and fixes
  10. What changes with FCMP++ and P2Pool v5
  11. Quick checklist

Key takeaways

  • P2Pool is a decentralized Monero mining pool with 0% fee, no registration and payouts sent straight from the block reward to your wallet.
  • You need three programs: monerod (synced, ZMQ enabled), P2Pool (pointed at your wallet) and XMRig (pointed at P2Pool on port 3333).
  • Pick the sidechain by hashrate: main for large miners, --mini or --nano for home rigs whose share time on main would exceed a day.
  • Enable huge pages for all three programs and use a dedicated wallet, because P2Pool payout addresses are public.
  • P2Pool v5 (currently a stressnet beta) changes payouts for the FCMP++ hard fork, so watch for a mandatory upgrade.

P2Pool is the most common answer to the question “how should I mine Monero?” in community forums, and for good reason: it pays like a pool, has no operator who can take a fee or go offline with your balance, and keeps block template creation in the hands of thousands of individual miners. This guide walks through a full P2Pool setup with XMRig on Linux and Windows, from node to first share.

If you only want a quick answer: run a synced monerod with ZMQ enabled, start p2pool with your wallet address, then point xmrig at 127.0.0.1:3333. The rest of this post explains each step and the mistakes that trip people up.

What P2Pool is and why miners use it

P2Pool is a decentralized mining pool built as a separate “sidechain” that runs alongside Monero. Every miner runs their own P2Pool node, which builds its own block templates from its own Monero node. Shares are recorded on the sidechain, and when anyone on the sidechain finds a real Monero block, the block’s coinbase transaction pays everyone with shares in the recent window.

According to the P2Pool README, the key properties are:

  • No central server. There is nothing to shut down, block or hack to steal funds.
  • Trustless payouts. No pool wallet holds your money; the Monero block itself pays you.
  • 0% fee and 0 XMR payout fee.
  • PPLNS payouts over a window of 2,160 sidechain blocks.
  • Minimum payout of about 0.00027 XMR, which is the block reward divided by 2,160.

The trade-off is that you must run more software yourself. You need a Monero node, the P2Pool binary and a miner.

Centralized pool P2Pool Solo mining
Pool fee Typically 0–1% 0% 0%
Who builds block templates Pool operator You You
Needs your own node No Yes Yes
Payout frequency Regular, above a threshold Each time the sidechain finds a block Only when you find a block
Custody of unpaid balance Pool holds it Nobody (paid in coinbase) Nobody
Payout address visibility Known to the pool Public on the sidechain On chain only as a normal output

What you need

  1. A 64-bit CPU and OS. P2Pool does not support ARMv7 or other 32-bit systems, because RandomX is too slow in 32-bit mode.
  2. Enough RAM. RandomX fast mode needs about 2 GB for its dataset, and monerod plus P2Pool add their own memory use. 8 GB is a comfortable minimum for a dedicated box; 16 GB is better if the PC is also your desktop.
  3. Disk space for a node. A pruned Monero node uses much less space than a full one and is fine for P2Pool. Use an SSD; syncing on a hard disk is painfully slow.
  4. A wallet. Create a new wallet just for mining. P2Pool payout addresses are visible to anyone looking at the sidechain, so you do not want this address linked to your other activity. See our wallets category if you need help choosing one.
  5. Upload bandwidth. The README suggests at least 10 Mbit/s of upload for the default peer settings, and lower peer counts if your connection is weaker.

Warning: Download monerod, P2Pool and XMRig only from their official sources: getmonero.org/downloads, the P2Pool GitHub releases and xmrig.com/download. Fake “optimized” miners that skim your hashrate or install malware are common. Antivirus tools often flag real miners too, so verify hashes rather than trusting a warning or the lack of one.

Step 1: Run monerod with ZMQ enabled

P2Pool talks to your node over RPC and listens for new blocks over ZMQ. The ZMQ publisher is what most first-time setups forget.

The P2Pool README’s recommended Linux command line looks like this (all on one line):

./monerod --zmq-pub tcp://127.0.0.1:18083 --out-peers 32 --in-peers 64 --add-priority-node=p2pmd.xmrvsbeast.com:18080 --add-priority-node=nodes.hashvault.pro:18080 --enforce-dns-checkpointing --enable-dns-blocklist

What the important flags do:

  • --zmq-pub tcp://127.0.0.1:18083 is required. Without it, P2Pool cannot see new Monero blocks quickly.
  • --out-peers 32 --in-peers 64 gives your node good connectivity so your blocks propagate fast. On a slow upload (under about 10 Mbit/s) the README suggests --out-peers 8 --in-peers 16.
  • --add-priority-node keeps you connected to well-connected nodes run by mining pools, which reduces orphan risk.
  • --enforce-dns-checkpointing tells your node to follow MoneroPulse DNS checkpoints if they disagree with the chain you are on. P2Pool’s documentation now recommends it, a change that followed the deep reorgs of 2025. See our post-mortem on mining centralization in the mining category for background.
  • Add --prune-blockchain if you want a pruned node.

Let the node sync completely before going further. On an SSD this can take anywhere from several hours to a couple of days depending on your hardware and connection.

Note: Monero v0.18.5.0 removed UPnP support from monerod. If you want incoming connections on port 18080, forward it manually on your router.

Step 2: Enable huge pages

RandomX is much faster with huge pages, and P2Pool’s README asks you to reserve enough of them for all three programs. On Linux:

sudo sysctl vm.nr_hugepages=3072

To make it permanent, add vm.nr_hugepages=3072 to /etc/sysctl.conf. On Windows, XMRig needs the “Lock pages in memory” privilege; running it as Administrator once and then rebooting is the simplest way, as described in the XMRig huge pages docs.

Step 3: Choose main, mini or nano

P2Pool runs three separate sidechains. They are not linked, so you pick one:

Sidechain Flag P2P port Typical fit
Main (none) 37889 Larger miners and farms
Mini --mini 37888 Most home miners with one to a few PCs
Nano --nano 37890 Single PCs, laptops and low-hashrate rigs

The official rule of thumb from the P2Pool FAQ is simple: use the share time calculator, and if your average share time on a sidechain is more than one day, move to a smaller one. A single modern desktop CPU will almost always belong on mini or nano. We compare the three in detail, with current share-time numbers, in a separate post in the mining category.

Step 4: Start P2Pool

Download the release for your OS, extract it, and run (one line):

./p2pool --host 127.0.0.1 --wallet YOUR_PRIMARY_ADDRESS --mini
  • Replace --mini with --nano, or remove it for the main chain. You cannot use both flags.
  • --host is the IP of your Monero node. If the node runs on another machine on your LAN, use its local IP and make sure its RPC and ZMQ ports are reachable from the P2Pool box.
  • On Windows the command is the same but with .\p2pool.exe.

P2Pool needs about 5 to 10 minutes to sync the sidechain. When it is ready, its stratum server listens on port 3333 for miners.

Tip: Forward the P2Pool P2P port for your sidechain (37889, 37888 or 37890) on your router. It is optional, but more incoming peers means your shares spread faster and are less likely to end up as uncles.

Optional: merge mine Tari

P2Pool v4.0 and newer can merge mine Tari at the same time, with no loss of Monero hashrate. You run a Tari base node with gRPC and mining enabled, then add --merge-mine tari://TARI_NODE_IP:18102 TARI_WALLET_ADDRESS to the P2Pool command. Tari is mined solo in this mode and your Monero payouts are unaffected. P2Pool v4.18.1 (September 2026) fixed Tari merge mining and requires Tari node v6.0.0 or newer.

Step 5: Point XMRig at P2Pool

Grab XMRig from xmrig.com/download. The current stable line is 6.26.x. The simplest command is:

./xmrig -o 127.0.0.1:3333

You do not put your wallet address in XMRig. P2Pool pays the address you gave it with --wallet and ignores whatever username the miner sends. If you run XMRig on other computers, replace 127.0.0.1 with the LAN IP of the P2Pool machine.

Two useful extras:

  • Fixed difficulty. ./xmrig -u x+10000 -o 127.0.0.1:3333 sets a fixed stratum difficulty of 10,000 for that rig, which smooths the hashrate graph P2Pool reports.
  • Run with elevated rights. On Linux, running XMRig as root lets it set huge pages and apply the MSR mod automatically. On Windows, run as Administrator. Our XMRig tuning guide covers this in depth.

Step 6: Check that it works

Watch the P2Pool console. Useful commands you can type into it:

  • status shows your hashrate, shares found and payout estimates.
  • peers lists connected P2Pool peers.

Then look up your wallet address on P2Pool Observer (or the mini and nano versions at mini.p2pool.observer and nano.p2pool.observer) once you have found at least one share. You will see your shares, uncles and payouts.

Key point: A share is not a payout. You get paid when the sidechain finds a Monero block while at least one of your shares is still inside the PPLNS window. On smaller sidechains this can mean waiting several hours or longer between payouts, even when everything is set up correctly.

Common problems and fixes

“P2Pool can’t connect to monerod”

Check that the node is fully synced, that --zmq-pub is set and that the RPC port (18081 by default, or 18089 for restricted RPC) is reachable. Firewall rules on the node machine are the usual culprit when the node is on a different box.

Huge pages show less than 100%

XMRig prints a line like huge pages 100% at startup. If it shows less, you either did not reserve enough pages or (on Windows) memory was fragmented. Reboot and start the miner before other heavy programs.

Lots of uncle or orphaned shares

Uncles still earn a reduced reward, so a few are normal. A high rate usually points to poor connectivity: too few peers, no open P2P port, or a node that lags behind. Raising peer counts and forwarding ports helps.

Payouts look tiny and frequent, or rare and large

That is the nature of PPLNS on a sidechain. Your long-run income depends on your share of the hashrate, not on which chain you pick. The choice of sidechain only changes how smooth the payouts feel.

What changes with FCMP++ and P2Pool v5

Monero’s next hard fork will bring FCMP++, the Carrot addressing scheme and RandomX v2. None of it is on mainnet yet and no activation date has been set, but P2Pool is already preparing:

  • P2Pool v5.0-beta (1 October 2026) adds FCMP++, Carrot and RandomX v2 support and a new reward split algorithm. It runs only on the FCMP++ beta stressnet and refuses to run on the normal main, mini or nano chains.
  • Subaddresses are dropped in v5 because of consensus changes, so plan to mine to a primary address.
  • New rounding for small payouts. Because spending an output costs more after FCMP++, the v5 design rounds payouts on mini and nano to multiples of 0.0006 XMR, with the odds set so the expected total stays the same. Small miners get paid in fewer blocks but lose less to fees when they spend. Main-chain payouts are essentially unchanged.

Tip: When the mainnet fork date is announced, P2Pool, monerod and XMRig will all need updating before the fork height. Follow the P2Pool GitHub releases page and getmonero.org so you do not end up mining on the wrong chain.

Quick checklist

  1. Create a dedicated mining wallet and note its primary address.
  2. Download monerod, P2Pool and XMRig from official sources and verify them.
  3. Start monerod with --zmq-pub tcp://127.0.0.1:18083 and let it sync.
  4. Reserve huge pages (3,072 on Linux for all three programs).
  5. Start P2Pool with --wallet and --mini or --nano if your hashrate is modest.
  6. Start XMRig with -o 127.0.0.1:3333, as root or Administrator for best speed.
  7. Forward ports 18080 and your P2Pool P2P port if you can.
  8. Check your shares on P2Pool Observer after the first hour.

Once it is running, P2Pool needs little attention beyond software updates. You get pool-style payouts without trusting a pool, and you add one more independent block template builder to the network.

Frequently asked questions

Do I need to run my own Monero node for P2Pool?

Yes. P2Pool needs a fully synced monerod with ZMQ enabled, normally on the same machine or LAN. A pruned node works and saves a lot of disk space.

Does P2Pool charge a fee?

No. P2Pool has a 0% pool fee and no payout fee. Rewards are written directly into the coinbase transaction of each Monero block it finds.

Can I use a subaddress with P2Pool?

Current P2Pool v4 releases accept a subaddress through the --subaddress option alongside your main address, but the P2Pool v5 beta for the FCMP++ hard fork removes subaddress support. Using your primary address in a dedicated mining wallet is the safest choice.

Why is my hashrate fine but I see no payouts?

You only get paid when the sidechain finds a Monero block while you have a share in the PPLNS window. If your share time is longer than a day, switch to the mini or nano sidechain.

Should I set my wallet address in XMRig when using P2Pool?

No. P2Pool ignores the XMRig username for payouts. Your payout address is the one you pass to P2Pool with --wallet.

Sources and further reading

  1. P2Pool on GitHub (README and releases)
  2. P2Pool.io: official site and FAQ
  3. Monero Docs: Mining with XMRig on P2Pool
  4. XMRig: Huge pages documentation
  5. P2Pool Observer share time calculator
  6. P2Pool v5 payouts explained (SChernykh gist)
  7. Monero downloads
  • p2pool
  • xmrig
  • monero mining
  • how to
  • decentralized mining