
You can have a working stratum server accepting shares in an afternoon. Building software is not what stops people — two numbers are. To offer PPS payouts on Bitcoin without going broke you need a reserve of roughly 360 BTC at a 2% fee, and to find a block more often than once a week you need about 1 EH/s — some 5,000 modern ASICs. Everything else in this guide is downstream of those two facts.
The second problem is the advice itself. Nearly every guide ranking for this question tells you to install MPOS or NOMP. MPOS has not had a commit since July 2019 and its own repository says it is not maintained. Miningcore, the most popular option after it, was archived by its author in September 2023. Following those guides means building on dead code before you write a line of your own.
Four different goals get described as “creating a mining pool”, and only one of them needs a pool business. Two are solved by software you can install this evening, one takes weeks of accounting work, and one needs funding and a lawyer. Find yours before renting a server.
| What you actually want | What to build | Effort |
|---|---|---|
| Keep the full block reward from my own farm | ckpool in --btcsolo mode on your own node — no accounting, no miners but you |
An afternoon |
| Mine at home without a custodian holding my coins | Public Pool (self-hosted) for Bitcoin, or P2Pool for Monero — both zero fee | An evening |
| Pool the hashrate of a group I already have | A stratum server plus your own accounting — the real subject of this guide | Weeks |
| Run a public pool as a business | All of the above, plus reserves, legal review, support and marketing | Months, funded |
infrastructure to save 1% is a poor trade, and zero-fee options already exist — our
solo pool comparison lists them.Five projects are actively maintained and five are effectively dead, and that is the whole landscape. The living ones cover Bitcoin stratum, decentralised Monero mining and the Stratum V2 protocol. The dead ones are, almost exactly, the packages that guides still recommend. Every date below comes from the public repository and can be re-checked in ten seconds.
| Software | Role | Last commit | Status |
|---|---|---|---|
| ckpool | Bitcoin stratum server, proxy, passthrough (C) | Sep 2026 | maintained Stratum V2 in tree |
| P2Pool | Decentralised Monero pool — no operator at all (C++) | Sep 2026 | maintained 1,489 stars |
| public-pool | Bitcoin stratum server with a web UI (TypeScript) | Aug 2026 | maintained self-hostable |
| Stratum V2 (SRI) | Protocol libraries, not a pool (Rust) | Sep 2026 | maintained reference impl. |
| DATUM Gateway | Lets miners build their own block templates (C) | Aug 2026 | maintained |
| Miningcore | Multi-coin pool engine (C#) | Sep 2023 | archived by author |
| NOMP | Node Open Mining Portal (JavaScript) | Jan 2024 | stalled |
| s-nomp | NOMP fork for Equihash coins | Dec 2023 | stalled |
| open-ethereum-pool | Ethash pool (Go) | May 2023 | archived |
| MPOS | Mining Portal Open Source (PHP) | Jul 2019 | abandoned by its own README |
Repository states checked 13 September 2026.
of forks appeared after it was archived. We looked at the fork list: the most-starred one still receiving commits has two stars. There is no community successor — only private copies. If you adopt one, you are the maintainer now, and that is a C# codebase with coin daemon integrations for a dozen chains.
A pool is not one program but four: a coin daemon, a stratum server, an accounting and payout layer, and a front end for miners. Open source hands you the first two for free and the fourth cheaply. The third — the part that moves other people’s money — you write yourself, and that is where building a pool actually gets hard.
to a single address that you specify in btcaddress, and all usernames are accepted purely for statistics. It logs shares; it does not split rewards. Turning those share logs into correct per-miner balances, with a payout model and a hot wallet, is work you write yourself — and it is the part where mistakes cost real money and reputation.
A stratum server that accepts shares is two build packages, one config file and a synced node. The commands below come from ckpool’s own documentation and assume Ubuntu or Debian with the Bitcoin node on the same machine. What you have at the end is a working pool with no payout system — that layer is still yours to write.
Build requirements are genuinely small — ckpool depends on nothing beyond the base toolchain and yasm:
sudo apt install build-essential yasm
Optional features add packages: libzmq3-dev for ZMQ block notifications, libcapnp-dev and capnproto for IPC. For a solo-mining setup the project publishes an install script that does the whole job, node included:
wget https://api.bitbucket.org/2.0/repositories/ckolivas/ckpool/src/master/scripts/install-ckpool-solo.sh
chmod +x install-ckpool-solo.sh
sudo ./install-ckpool-solo.sh
A minimal ckpool.conf needs one btcd entry and the address that receives block rewards:
{
"btcd": [{
"url": "127.0.0.1:8332",
"auth": "rpcuser",
"pass": "rpcpassword"
}],
"btcaddress": "bc1q...",
"serverurl": ["0.0.0.0:3333", "0.0.0.0:4334"],
"donation": 0.5
}
Three behaviours worth knowing before you start:
serverurl, ckpool binds every interface on port 3333. A port numbered above 4000 becomes a high-difficulty port with a minimum difficulty of one million — that is how you keep large farms from flooding you with low-diff shares.-B (--btcsolo) and it becomes per-username solo: usernames must be valid Bitcoin addresses, and whoever solves the block receives 100% of it. No accounting needed, because there is nothing to split.donation field defaults to 0.5% of solved blocks to the developers. Leaving it is the polite way to fund the software you are building a business on.Proxy and passthrough modes are in the same binary. Passthrough is how large pools scale: the public-facing nodes terminate miner connections and forward everything upstream over a single socket, keeping the real pool off the open internet.
New operators want to offer PPS — pay per share, guaranteed, regardless of whether the pool finds a block. It reads as the friendliest model. It is also the one that bankrupts pools, and the size of the problem has been known since 2011.
Meni Rosenfeld’s analysis of pooled mining reward systems derives the reserve an operator needs to keep the probability of eventual bankruptcy below ε:
where B is the block reward, f the pool fee, and
ε the bankruptcy probability you are willing to accept. His own comment on theresult: “The required reserves are higher than most people anticipate.”
With Bitcoin’s block subsidy at 3.125 BTC, that works out as:
| Pool fee | Reserve for 5% ruin risk | Reserve for 1% ruin risk |
|---|---|---|
| 1% | 468 BTC | 720 BTC |
| 2% | 234 BTC | 360 BTC |
| 4% | 117 BTC | 180 BTC |
That is capital sitting idle purely to absorb variance, and it explains something you can verify on any pool ranking: the pools offering FPPS and PPS+ on Bitcoin are the largest operators in the market, and the small ones run PPLNS.
Practical conclusion: launch on PPLNS. Under PPLNS you pay out of blocks actually found, so a run of bad luck costs your miners patience rather than costing you solvency. If you want the mechanics of each model side by side, we cover them in PPS vs PPLNS vs FPPS.
Expected time to a block is difficulty × 2³² ÷ hashrate. At the Bitcoin difficulty of 13 September 2026 — 127.45 T, with the network at roughly 952 EH/s — a new pool’s prospects look like this:
| Pool hashrate | Roughly this many ASICs | Share of network | Average wait per block |
|---|---|---|---|
| 1 PH/s | 5 | 0.0001% | 17 years |
| 10 PH/s | 50 | 0.001% | 1.7 years |
| 100 PH/s | 500 | 0.01% | 63 days |
| 1 EH/s | 5,000 | 0.105% | 6.3 days |
| 10 EH/s | 50,000 | 1.05% | 15 hours |
ASIC counts assume 200 TH/s per machine. Difficulty changes every two weeks — the live network figure sits on our Bitcoin page.
Read the first row again. A pool with five machines pays its miners nothing for years, because under PPLNS there is nothing to pay out of. This is why almost every successful small pool launched on a coin where a meaningful share of the network was reachable — not on Bitcoin.
price. If your first month brings 200 TH/s, that is invisible on Bitcoin and can be a top-ten pool on a small chain. Our live table of coins and pools shows current network hashrate and which pools already serve each chain, which is the fastest way to spot an under-served one.
Costs are the easy part. A stratum server is not demanding: ckpool is built around minimal memory overhead and multi-process scaling. The node is what needs disk — Bitcoin’s own documentation puts the initial block download at around 740 GB and ongoing traffic at 200 GB uploaded per month. A dedicated box with a modern multi-core CPU, 64 GB of RAM, NVMe storage and unmetered gigabit covers node, stratum and database on day one. You will want a second server in another region before you take the pool public, plus a small hot wallet.
Revenue is arithmetic you can do before spending anything:
daily fee income = your hashrate ÷ network hashrate × daily network issuance × your fee
On 13 September 2026 the Bitcoin network was paying out roughly 452 BTC per day across subsidy and transaction fees. So a pool running 1 EH/s — five thousand machines — at a 1% fee grosses about 0.14 BTC a month. That is the whole business at that size, before servers, before support, before the wallet.
The uncomfortable implication is that pool operation is a volume business with thin margins, and the runway to volume is long. Operators who succeed at it usually already own hashrate, or sell something alongside the pool — hosting, hardware, firmware, or data.
The moment your pool holds coins that belong to miners and sends them onward, you are in regulated territory. In the United States, FinCEN’s 2019 guidance on convertible virtual currencies devotes section 5.4 to mining pools and cloud miners. Its conclusion is narrow but useful: where the pool leader distributes what the pool earned among its members in proportion to the processing power they contributed, that distribution does not by itself qualify as money transmission under the Bank Secrecy Act.
The narrowness matters. Bolt other services onto the payout path — holding balances for purposes beyond the payout, converting between coins, letting members transfer funds to each other — and you are no longer in the safe description. The guidance explicitly contemplates operators who combine managing and renting services with other activity.
and licensing differ by jurisdiction, and the analysis turns on the exact mechanics of your payouts. Have a lawyer review the design before you take custody of anyone’s coins — retrofitting compliance onto a running pool is far more expensive.
Pools are attacked, routinely, often by competitors. The reflex is to put the pool behind Cloudflare — and that reflex fails, because stratum is a raw TCP protocol on port 3333, not HTTP. Standard HTTP proxying protects your website and leaves the thing that earns money exposed. TCP-level protection is a different product tier.
The cheapest working answer is to choose a host whose network filters attacks for you. OVHcloud, for example, states that anti-DDoS is enabled on all its products at no additional cost, covering packet floods, spoofing, malformed and amplification attacks — with 17 Tbit/s of global filtering capacity and up to 1.3 Tbit/s of mitigation per attack. That is infrastructure a new pool cannot buy any other way at that price.
Three more habits that separate pools that survive from pools that vanish:
Nearly every dead pool was technically fine; what it lacked was hashrate. Miners are conservative for good reason — switching pools means trusting a stranger with several days of unpaid earnings, and a pool that disappears takes that balance with it. Everything below is a way of lowering that risk in the miner’s eyes, because no feature list overcomes it.
What actually moves hashrate toward a new pool, in rough order of effectiveness:
follow the chain’s issuance, and miners know it. A pool advertising more coins per terahash than mathematics allows reads as a warning, not an offer.
Three of the four goals in the first table are already solved by software you can install tonight: P2Pool for Monero, ckpool’s solo mode for a farm you already own, and public-pool for home miners. All three are free, all three skip accounting entirely, and none of them puts you in custody of anyone else’s coins.
P2Pool (Monero) — a pool with no operator. It runs its own merge-mined side chain, so there is no pool wallet and no custody: blocks pay miners directly. Zero fee, PPLNS, and a minimum payout around 0.00027 XMR — orders of magnitude below any custodial pool. The documented caveat is honest: below roughly 15 MH/s of pool hashrate, blocks come slower than the six-hour PPLNS window and not every share earns a payout.
ckpool in solo mode — for a farm you already own. One flag, no accounting, 100% of any block to the address that found it. If your reason for building a pool is to stop paying someone else’s fee on your own hashrate, this is the whole project.
public-pool — for home miners and Bitaxe swarms. A self-hostable stratum server with a web UI, actively developed, and the software behind the zero-fee public instance many small miners already use.
If none of these fit and you still want a public pool business, start with the arithmetic in this guide rather than with a server. If they do fit, you have just saved months — and if what you actually wanted was a better pool rather than your own, how to join a mining pool is the shorter road.
Infrastructure is the small number: one dedicated server with enough disk for a full node, a second one in another region before launch, and a domain. The costs that decide the project are the reserve if you offer PPS (hundreds of BTC on Bitcoin), your own time over several months, and legal review before you hold anyone’s coins.
Not realistically in 2026. The turnkey packages that made it possible — MPOS, NOMP, Miningcore — are abandoned or archived, and the maintained software covers stratum but not accounting or payouts. Expect to write and own the money-handling layer yourself.
Only at scale. At a 1% fee, a pool with 1 EH/s on Bitcoin — roughly five thousand machines — grosses about 0.14 BTC a month. Below that the fee income does not cover serious infrastructure, which is why most independent pools either serve a niche chain or sell something alongside the pool.
One where you can plausibly reach a percent or more of network hashrate, and where miners are underserved by existing pools. Check current network hashrate and the pools already running on each chain on our coin pages before committing.
It depends on your jurisdiction and on exactly how your payouts work. US guidance treats the proportional distribution of pool earnings as not being money transmission in itself, but that changes as soon as you add custody or exchange features. Get advice for your own country before launch, not after.
A stratum server accepting shares: an afternoon. Correct accounting, payouts, a dashboard, monitoring, two regions and a tested failover: a few months of real work, plus however long it takes to attract the hashrate that makes any of it worthwhile.