Getting Started
Three paths to a running pool:
- Docker — multi-arch image, runs on Umbrel-Box, NAS, or any Linux/macOS host
- Native Binary —
.deb/.rpm/.dmg/.msi/.AppImagefor bare-metal hosts and Raspberry Pi 5 - 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) — ifstratum_tls_listen+ cert/key are set in config.toml - V2 NOISE (
:34254) — ifsv2_listen+sv2_static_priv_key_hexare 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
- Configure your miner with
stratum+tcp://<pool-host>:3333as the pool - Use your BTC receive address as the worker name (e.g.
bc1q...) - Open the pool UI at
http://<pool-host>:18334 - The pool hashrate chart shows shares live; the
/blockstab 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
- Configuration Reference — all config.toml fields
- Notifications — set up notifier sinks
- Observability — Prometheus endpoint + Grafana
- Troubleshooting — when something isn't working