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.
152 lines
3.5 KiB
YAML
152 lines
3.5 KiB
YAML
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"]
|