New 'tls' union config (disabled by default) spins up an
stunnel4 process inside the container that terminates TLS on
a configurable port (3334 by default) and forwards decrypted
stratum traffic to 127.0.0.1:${STRATUM_PORT}.
Cert is self-signed, generated once on first start with a
10-year validity and persisted at /root/.kamado/tls/ so the
fingerprint stays stable across restarts. SHA-256 fingerprint
is printed to container logs on each startup so users can
pin it on their miners. Miners must connect with
verification disabled (no CA trust chain for a private pool).
Runtime image grows by ~3MB for stunnel4 + openssl. The
supervisor loop now waits on three PIDs and tears all of them
down together if any one exits.
2.8 KiB
Kamado Pool
Kamado is a solo Bitcoin mining pool built on a patched fork of CKPool-solo, with a Go middleware API and a real-time Svelte dashboard. When a miner connected to your Kamado instance solves a block, the full block reward goes to the payout address you configured — no pool fees, no splits, no share accounting.
Setup
- Install Bitcoin Core (mainnet) or Bitcoin Core (testnet4). Kamado supports either as a dependency; pick one in the Kamado config under Bitcoin Core > Type.
- In the Kamado config, set Payout Address to the Bitcoin address that should receive solved block rewards.
- Optionally adjust the Coinbase Tag (default
/Kamado/) and the vardiff parameters. - Start Kamado. Open the web UI from the Services page to watch live hashrate, miners, best shares, and solved blocks.
Connecting miners
Kamado's plaintext stratum server listens on TCP port 3333 inside the container (configurable). If you enable Stratum TLS in the config, an stunnel sidecar also terminates TLS on port 3334 (configurable) and forwards the decrypted traffic to the plaintext stratum locally. The TLS certificate is generated once on first start and persisted at /root/.kamado/tls/stratum.crt — the SHA-256 fingerprint is printed to the container logs so you can pin it on your miners.
Because the cert is self-signed, miners must connect with certificate verification disabled (stratum+ssl://, plus whatever skip-verify / insecure flag your firmware exposes).
StartOS 0.3.x does not forward raw TCP ports on the LAN interface, so you have two options to reach stratum — plaintext or TLS — from miners on your local network:
- Router port-forward: Forward an external port on your router directly to your StartOS server's LAN IP on port 3333 and point miners at that.
- simpleproxy on a second host: Run
simpleproxy -L 3333 -R <startos-lan-ip>:3333on any always-on LAN host and point miners at that host.
Once forwarding is in place, miners connect to stratum+tcp://<forward-host>:3333 with the username set to any label you like (it becomes the worker name in the dashboard) and any password.
Troubleshooting
- No miners appear after connecting: confirm the forward actually reaches the StartOS container —
telnet <forward-host> 3333should connect. Check the Kamado logs in the Services page. - Bitcoin Core RPC errors: make sure Bitcoin Core is fully synced and the RPC dependency was auto-configured (Kamado enables
rpc.enableduring setup). - Best share resets to 0 after a block is found: upstream CKPool zeroes the "current round" best diff on solve. Kamado ships a patch that also exposes the all-time best, so the dashboard has both columns.
Upstream
CKPool-solo by Con Kolivas: https://bitbucket.org/ckolivas/ckpool Kamado source: https://github.com/Relaxo143/KamadoPool