Initial StartOS 0.3.5.1 packaging scaffold for Kamado Pool

Multi-stage Dockerfile clones KamadoPool at a pinned SHA, builds
ckpool and kamado-api (with embedded Svelte UI), runtime image
supervises both processes via tini + wait -n. Config covers
bitcoind mainnet/testnet4 variant, payout address, coinbase tag,
vardiff knobs, and log level. Web UI interface only — stratum
:3333 requires a router port-forward or simpleproxy workaround
because StartOS 0.3.x does not forward raw TCP on LAN.

TODO before first build: pin KAMADO_REPO + KAMADO_SHA in the
Dockerfile to a pushed commit.
This commit is contained in:
satoshi
2026-04-13 03:51:23 +03:00
commit 4064f9e56a
18 changed files with 689 additions and 0 deletions
+151
View File
@@ -0,0 +1,151 @@
id: kamado-pool
title: "Kamado Pool"
version: 0.1.0
release-notes: |
Initial StartOS 0.3.5.1 packaging for Kamado Pool — a modern solo
Bitcoin mining pool built on a patched fork of CKPool-solo with a
Go middleware API and Svelte real-time dashboard.
license: gpl-3.0
wrapper-repo: "https://github.com/Relaxo143/KamadoPool-StartOS"
upstream-repo: "https://github.com/Relaxo143/KamadoPool"
support-site: "https://github.com/Relaxo143/KamadoPool/issues"
marketing-site: "https://github.com/Relaxo143/KamadoPool"
donation-url: ~
build: ["make"]
description:
short: "Modern solo Bitcoin mining pool with real-time dashboard"
long: |
Kamado Pool is a solo Bitcoin mining pool built on a patched fork
of CKPool-solo. Unlike wrappers that read periodic stats files,
Kamado talks directly to CKPool's Unix socket API to expose real-
time per-client hashrate, difficulty, hardware detection, full
block history, and best-share leaderboards (both current round
and all-time) via a Svelte dashboard with WebSocket push.
Stratum listens on port 3333. Because StartOS 0.3.x does not
forward raw TCP ports on the LAN interface, you must use a
simpleproxy or router port-forward to reach the stratum endpoint
from miners on your local network. See instructions.
assets:
license: LICENSE
icon: icon.png
instructions: instructions.md
docker-images: image.tar
main:
type: docker
image: main
entrypoint: docker_entrypoint.sh
args: []
mounts:
main: /root/.kamado
ckpool: /root/.ckpool
compat: /mnt/assets
gpu-acceleration: false
hardware-requirements:
arch:
- x86_64
- aarch64
health-checks:
web:
name: "Web Dashboard"
success-message: "Kamado dashboard is reachable."
type: script
config:
get:
type: script
set:
type: script
properties:
type: script
volumes:
main:
type: data
ckpool:
type: data
compat:
type: assets
interfaces:
main:
name: Web Dashboard
description: "Real-time Kamado Pool dashboard (hashrate, miners, blocks, best shares)."
tor-config:
port-mapping:
80: "8080"
lan-config:
443:
ssl: true
internal: 8080
ui: true
protocols:
- tcp
- http
dependencies:
bitcoind:
version: ">=24.0.0 <30.0.0"
requirement:
type: "opt-in"
how: "Can alternatively use bitcoind-testnet for testnet4 testing."
description: "Used to submit found blocks and receive new block templates via RPC + ZMQ."
config:
check:
type: script
auto-configure:
type: script
bitcoind-testnet:
version: ">=24.0.0 <30.0.0"
requirement:
type: "opt-in"
how: "Can alternatively use mainnet bitcoind."
description: "Testnet4 variant of bitcoind for testing Kamado without real funds."
config:
check:
type: script
auto-configure:
type: script
backup:
create:
type: docker
image: compat
system: true
entrypoint: compat
args:
- duplicity
- create
- /mnt/backup
- /root/.kamado
mounts:
BACKUP: /mnt/backup
main: /root/.kamado
restore:
type: docker
image: compat
system: true
entrypoint: compat
args:
- duplicity
- restore
- /mnt/backup
- /root/.kamado
mounts:
BACKUP: /mnt/backup
main: /root/.kamado
migrations:
from:
"*":
type: script
args: ["from"]
to:
"*":
type: script
args: ["to"]