PIXEL Subscribe FR EN

Solo mining with Bitcoin Core: your node, your pool, your Bitaxe

Solo mining on your own node means running at home the three pieces a pool usually lends you: Bitcoin Core, which checks the chain and prepares blocks, a small pool program, and your machine. This is the path of my video (in French): Bitcoin Core on Windows, ckpool in Docker, a Bitaxe pointed at it. Here is every step, the exact settings, and what you must never open to the internet.

Published 28 October 2026 · by Pixel · 11 min read

Video The topic on video Play the video: Local solo Bitcoin mining: Bitcoin Core + pool + Bitaxe (2026) 6:04
Local solo Bitcoin mining: Bitcoin Core + pool + Bitaxe (2026) Video in French, with subtitles · open on YouTube The video loads from YouTube when you press play.
In short

You need an always-on PC, a synced Bitcoin Core 31.1 node (about 780 GB of blocks on 27 October 2026, per blockchain.com), ckpool in solo mode, and your Bitaxe pointed at the PC’s address, port 3333. The node earns nothing by itself: only a found block pays.

Contents 9 parts and a FAQ · 11 min read
  1. Why mine on your own node, and what does it earn?
  2. What do you need?
  3. How do you install Bitcoin Core and verify the file?
  4. What goes in bitcoin.conf?
  5. How do you install the solo pool (ckpool)?
  6. How do you connect the Bitaxe and check everything works?
  7. Security: what must you never open?
  8. Bitcoin Core or Bitcoin Knots?
  9. Easier with Umbrel, zero upkeep with FindMyBlock

1. Why mine on your own node, and what does it earn?

For me the reason is the one on my about page: the wish to depend on no one (my machines, my node A computer that keeps a full copy of Bitcoin and checks every block itself. Run your own node, my pool A server that machines connect to. A regular pool shares the earnings, a solo pool does not. Solo or pool?), and my way of taking part, at my scale, in the decentralisation of the network. In practice, on your own node:

  • No middleman. The pool software runs at home. In solo mode, ckpool writes your machine’s address into the block: if it finds one, the whole reward goes to that address, minus any donation you set yourself (ckpool-solo README).
  • Your own block template. Your node picks the transactions of the block your machine is trying to find, by its own rules, not a pool’s.
  • One more node on the network, checking every block and every transaction itself.

What it earns: nothing extra. A Bitcoin node earns nothing by itself; it gets no fee and no reward for its verification work. Only a found block pays, and your odds are exactly the same as on any solo pool: they depend only on your machine’s hashrate Computing power: the number of attempts per second of a machine or of the whole network. The higher it is, the more tickets you play in each draw.. A Bitaxe Gamma (1.2 TH/s rated) has about a 1 in 16,000 chance a year of finding a block (network as of 17 October 2026), a block worth about €227,000 on average. Your own case: the solo mining calculator. Why solo and pool pay the same on average: solo or pool.

On the cost side, the PC running the node draws power day and night: every 10 W left on around the clock costs about €18 a year at €0.20 per kWh. So running your node does not make money; it buys independence.


2. What do you need?

  • A PC or mini PC that stays on. If the PC goes off, your pool stops and your Bitaxe stops mining. Bitcoin Core 31.1 is tested from Windows 10 (version 1903), macOS 14 and Linux (31.1 release notes).
  • A large enough SSD. The Bitcoin blockchain weighed about 780 GB on 27 October 2026 and grows by about 250 MB a day (blockchain.com). A 1 TB SSD is still enough, but the margin is shrinking: the node also stores its indexes on top of the blocks, and Windows takes up space too if it is on the same drive. If you are buying the drive now, get 2 TB. An SSD rather than a hard drive, so the sync does not drag on forever.
  • Memory. bitcoin.org recommends at least 2 GB of RAM for Bitcoin Core alone (system requirements). With Windows and Docker Desktop on top, my video’s description says 8 GB minimum.
  • An uncapped connection. Again per bitcoin.org, plan for about 5 GB a day uploaded to other nodes, and the first sync downloads the whole chain.
  • Docker Desktop and Git, to fetch and run ckpool. Both are free for personal use.
  • A Bitcoin address from a wallet you hold the keys to: that is where the block would be paid (which wallet).

What about a pruned node? Pruning (the prune option) saves disk, not download: bitcoin.org says a node set up for 7 GB of disk still downloads the whole chain once. The ckpool README does not mention pruning. The calls ckpool makes to the node, such as getblocktemplate and submitblock, do not need old blocks, so a pruned node should work, but its documentation does not say so: if you have the room, keep a full node.

On a Raspberry Pi? For the node, yes: umbrelOS installs on a Raspberry Pi 5, and Umbrel advises booting it from an NVMe or USB SSD rather than a microSD card. That is the Umbrel route, covered below, rather than this guide’s.


3. How do you install Bitcoin Core and verify the file?

  1. Download Bitcoin Core from bitcoincore.org, the project’s site. On 28 October 2026 the latest version is 31.1, released on 8 July 2026. On Windows the file is bitcoin-31.1-win64-setup.exe.
  2. Verify the file before opening it. Also download SHA256SUMS and SHA256SUMS.asc. The command certUtil -hashfile bitcoin-31.1-win64-setup.exe SHA256 prints the file’s SHA-256 The hash calculation Bitcoin uses, and so mining. Bitcoin Cash uses the same one: the same machines mine either. checksum: it must appear, character for character, in SHA256SUMS. Then, with GPG installed, gpg --verify SHA256SUMS.asc SHA256SUMS checks that the list was signed by several developers. The download page details each step.
  3. Install, then start Bitcoin Core. On first launch, pick the data folder on your large SSD.
  4. Let it sync. The node downloads and checks every block since 2009. Expect several hours to several days depending on the PC, the disk and the connection; my video’s description says 1 to 3 days. It is not a fault.

You can prepare the next steps during the sync, but the pool can only give the Bitaxe work once the node is up to date.


4. What goes in bitcoin.conf?

The bitcoin.conf file does not exist at first: create it in the data folder. On Windows its default location is %LOCALAPPDATA%\Bitcoin\bitcoin.conf, that is C:\Users\your-name\AppData\Local\Bitcoin\bitcoin.conf (Bitcoin Core documentation). Per its README, ckpool needs at least server, rpcuser and rpcpassword; it also listens for new blocks over ZMQ, through the node’s zmqpubhashblock option. For Windows, with ckpool in Docker Desktop on the same PC, here is the file from my video’s description, with the ZMQ line ckpool asks for in place of the two original ZMQ lines:

server=1
rpcuser=youruser
rpcpassword=a-long-unique-password
rpcallowip=127.0.0.1
rpcport=8332
zmqpubhashblock=tcp://127.0.0.1:28332
  • server=1 turns on the RPC interface, through which ckpool asks for block templates and submits a found block.
  • rpcuser and rpcpassword are the credentials you will copy into ckpool. Pick a long, unique password: the Bitcoin Core documentation points out that they travel in clear text.
  • rpcallowip=127.0.0.1 and rpcport=8332 keep RPC on the PC itself, on its usual port.
  • zmqpubhashblock tells ckpool the moment a new block arrives, on port 28332, which it listens to by default. The video’s description lists zmqpubrawblock and zmqpubrawtx: those are notifications other software uses (Public Pool, for instance, listens to zmqpubrawblock), but the ckpool README asks for zmqpubhashblock.

On Linux, the docker-ckpool README has the node listen on the Docker gateway address. Bitcoin Core ignores rpcbind without rpcallowip; Public Pool’s example file opens 172.16.0.0/12 for Docker containers (.env.example). That gives:

rpcbind=127.0.0.1
rpcbind=172.17.0.1
rpcallowip=127.0.0.1
rpcallowip=172.16.0.0/12
zmqpubhashblock=tcp://172.17.0.1:28332

Save, then restart Bitcoin Core: it only reads its file at startup.


5. How do you install the solo pool (ckpool)?

ckpool is Con Kolivas’s pool software, the one that runs Solo CK. My video uses docker-ckpool, a repository that builds it in a Docker container from ckpool-solo, a version with a configurable donation. The container starts ckpool with the -B option, BTCSOLO mode: every username must be a valid Bitcoin address, and the block goes to whoever finds it.

  1. Fetch the repository, in a terminal: git clone https://github.com/golden-guy/docker-ckpool.git, then cd docker-ckpool.
  2. Open conf/ckpool.conf and change these fields, leaving the others alone:
auth your rpcuser
pass your rpcpassword
donrate 0, 1 or more (1 in the supplied file)
btcsig a signature of your own, e.g. /my node/
  • donrate is a donation, as a percentage of the block, sent to the donaddress already filled in the file: 1% in the supplied file, 0 to 10% allowed, 0 for none. It is your call, but make it knowingly. My video’s description uses "donation": this ckpool version does not read that word, donrate is what counts.
  • url stays ckpool.local:8332: in the repository’s docker-compose.yml, that name points to the PC running Docker, so to your node. zmqblock points the same way, on port 28332.
  • btcaddress can stay as it is: the README says it is ignored in BTCSOLO mode.
  1. Build the image: docker build -t docker-ckpool .
  2. Start the pool: docker compose up -d. To change the configuration later, stop the container first (docker compose stop), edit, then start it again (docker compose start).

The other common option: Public Pool. Public Pool is a Stratum The language machines and pools speak. server written in TypeScript for Node.js, with a web interface offered separately. It is set up in a .env file (the node’s RPC address, credentials and port, ZMQ optional) and takes miners on port 3333 in its example file. It is the one you install in one click on Umbrel.


6. How do you connect the Bitaxe and check everything works?

On the PC, type ipconfig in a terminal and note the network card’s IPv4 address, for example 192.168.1.20. Reserve it in your router if you can, so it does not change. The pool expects your machines on stratum+tcp://<PC address>:3333. In AxeOS The open-source Bitaxe software, set from a browser: pool, frequency, voltage, fan. Update it, on the Pool page:

Stratum Host the PC’s IPv4 address, e.g. 192.168.1.20
Stratum Port 3333
User your-bitcoin-address.bitaxe1
Password x

ckpool splits the username at the first dot (or the first underscore): the address is used for payment, the rest names the machine. The full AxeOS walkthrough is in Set up a Bitaxe. Since your pool now depends on your PC, also set a fallback pool: if the PC restarts, the Bitaxe keeps mining elsewhere.

  1. The node is up to date: in the Bitcoin Core console or with bitcoin-cli getblockchaininfo, verificationprogress is close to 1 and initialblockdownload is false (getblockchaininfo documentation).
  2. ckpool is running: docker compose logs shows its log, which is also written to the repository’s logs folder (ckpool.log). A file named after your address appears in logs/users once a machine sends shares An attempt good enough to be counted by the pool. It proves your machine is working, even if it is not enough to find a block..
  3. The Bitaxe is mining: in AxeOS the hashrate shows up and accepted shares climb.

If the Bitaxe does not connect, check the IP address and the port, then Windows Firewall: per Docker’s documentation, the com.docker.backend.exe program is what receives the connections and what the firewall filters. Allow it on private networks. For other symptoms: Bitaxe not hashing.


7. Security: what must you never open?

  • Never expose RPC to the internet. The Bitcoin Core documentation is blunt: RPC controls the node and its wallet, its credentials travel in clear text, and it is not built to take internet traffic. Never forward port 8332 on your router, and never write rpcallowip=0.0.0.0/0.
  • The Stratum port stays on your local network. Docker publishes ports on all of the PC’s interfaces by default (Docker Desktop documentation): that is what lets the Bitaxe reach the pool, but do not forward port 3333 on your router.
  • A strong, unique RPC password, used nowhere else. The Bitcoin Core documentation actually prefers the .cookie file it creates by itself; fixed credentials are a last resort, handy here because ckpool runs in a container.
  • A PC that is yours alone, not a shared computer: anyone in control of the machine is in control of the node.
  • Update Bitcoin Core and ckpool when a new version comes out, verifying the download each time.

8. Bitcoin Core or Bitcoin Knots?

Both run a full node, and both work for solo mining: ckpool talks to them with the same RPC calls.

Bitcoin Core is the network’s reference software (bitcoincore.org, version 31.1). Bitcoin Knots is a derivative, with Luke Dashjr as lead maintainer: its README explains that development mostly happens in Bitcoin Core and is merged into Knots for each release. On 28 October 2026, bitcoinknots.org offers version 29.4.3.knots20260508.

The 2025 debate is about data (OP_RETURN). Bitcoin Core 30.0, released on 10 October 2025, raised the default -datacarriersize limit to 100,000 bytes, which in effect lifts it, and allows several OP_RETURN outputs per transaction; you can go back to the old limit with -datacarriersize=83 (30.0 release notes). The change was debated. Knots keeps the 83-byte limit by default (Knots 29.x policy.h).

What it changes for a solo miner. These are relay rules, not consensus rules: both programs accept the same valid blocks. But your node fills your block template, and these rules apply to mining too: with Knots, or with Core set to 83, your block will leave out transactions whose OP_RETURN data exceeds 83 bytes. One caution if you pick Knots: its site explains that an old version can expire, and reminds you that obsolete versions are no longer maintained. For a mining node that runs unattended, update it in time.


9. Easier with Umbrel, zero upkeep with FindMyBlock

Umbrel does the same job with no files to write: you install Bitcoin Node, then Public Pool, from its app store, and Public Pool configures itself for your node. The full walkthrough is in Install Umbrel on Windows to mine solo.

FindMyBlock, at the other end, needs no node and no PC left on. Disclosure: it is my pool. It charges a 0% fee and is non-custodial Said of a service that never holds your bitcoin: the reward goes straight to your address., the reward goes straight to the miner’s address, and it takes three fields on stratum+tcp://eu.findmyblock.xyz:3335 (the settings). You then rely on my server instead of yours: the very opposite of this guide, and your choice to make. The other solo pools, with their fees, are in the solo pool comparison.

And if one day your machine finds a block, on your node or elsewhere: what to do next. A setup question? Discord is there.


Frequently asked questions

Does a Bitcoin node earn money?

No. A node checks blocks and transactions, but it is paid nothing for that work. Only a block found by your machine pays, and your odds are the same on your own node as on any solo pool.

Can you solo mine with a pruned node?

The ckpool README does not say. Its calls to the node do not need old blocks, so it should work, but its documentation does not guarantee it: keep a full node if you have the room. Pruning saves disk, not the initial download.

Bitcoin Core or Knots for solo mining?

Both work with ckpool. The difference lies in relay rules, notably the OP_RETURN limit, which Bitcoin Core 30.0 lifted by default in October 2025 and Knots keeps at 83 bytes: they decide which transactions your node puts in your block.

Do you have to wait for the sync to finish before connecting the Bitaxe?

You can install everything during the sync, but the pool will only give the Bitaxe work once the node is up to date. Meanwhile, leave the Bitaxe on another solo pool.

Is a Raspberry Pi enough for a Bitcoin node?

For the node, yes: umbrelOS installs on a Raspberry Pi 5, ideally booted from an NVMe or USB SSD rather than a microSD card, according to Umbrel. Plan for a 1 to 2 TB SSD.


Sources

A question about this guide? Ask it on the Discord, several of us answer there.

Share X WhatsApp Telegram


Other guides

See all 34 guides

@pixel_pow All of this is on video too. Join the channel's 3.3K subscribers.
Subscribe

Back to the ticket

Back of the ticket: legal notice, privacy, terms