Getting Started

Three paths to a running pool:

  1. Docker — multi-arch image, runs on Umbrel-Box, NAS, or any Linux/macOS host
  2. Native Binary.deb / .rpm / .dmg / .msi / .AppImage for bare-metal hosts and Raspberry Pi 5
  3. From Source — for development or verification

Prerequisite in every case: a running Bitcoin Core (≥27.0 recommended) with the getblocktemplate RPC and ZMQ block-notify enabled.

Docker

docker run -d \
  --name warppool \
  --restart unless-stopped \
  -p 18334:18334 \
  -p 3333:3333 \
  -v ~/.warppool:/var/lib/warppool \
  ghcr.io/dvb/dvb-warppool:latest

First call of the setup wizard: http://localhost:8331 (auto-detects hardware, suggests a profile, tests the Bitcoin RPC).

Native Binary

Raspberry Pi 5 (aarch64)

# arm64 .deb
wget https://github.com/dvb-projekt/dvb-WarpPool/releases/latest/download/dvb-warppool_arm64.deb
sudo dpkg -i dvb-warppool_arm64.deb
sudo systemctl enable --now dvb-warppool

Storage recommendation: NVMe-HAT > USB-3 SSD > industrial SD. The SQLite WAL plus shares_raw eviction is hard on SD cards under sustained pool load.

macOS / Linux x86_64

Tarball/pkg from the GitHub releases. The macOS .dmg is unsigned (notarization is queued for phase 8b); run xattr -dr com.apple.quarantine /Applications/dvb-WarpPool.app after mounting.

From Source

git clone https://github.com/dvb-projekt/dvb-WarpPool
cd dvb-WarpPool
cargo build --release --workspace
./target/release/dvb-warppool-setup     # First-Run Wizard auf :8333

The cargo target directory lands in ~/.cache/dvb-WarpPool/target (see .cargo/config.toml) so that iCloud sync doesn't trash the build directory.

Stratum V1 vs V2

The pool starts both listeners in parallel by default:

  • V1 plain (:3333) — all existing miner firmwares
  • V1 TLS (:3334) — if stratum_tls_listen + cert/key are set in config.toml
  • V2 NOISE (:34254) — if sv2_listen + sv2_static_priv_key_hex are set in secrets.toml

For V1-miner sidecars (e.g. when the pool should expose only Sv2 externally): the bundled dvb-warppool-translator binary. See Phase History → 7.4.

First Block

  1. Configure your miner with stratum+tcp://<pool-host>:3333 as the pool
  2. Use your BTC receive address as the worker name (e.g. bc1q...)
  3. Open the pool UI at http://<pool-host>:18334
  4. The pool hashrate chart shows shares live; the /blocks tab shows found blocks

When a block lands → BlockFoundEvent runs immediately through bitcoin-rpc::submit_block and the notifier sends ntfy / Telegram / Discord / Slack / Email / browser push.

Next Steps