-
v1.22.0
StableAll checks were successfulRelease / Docker Multi-Arch (push) Successful in 19m58sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m41sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m38sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m23sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m14sRelease / Linux AppImage (aarch64) (push) Successful in 10m36sRelease / Linux AppImage (x86_64) (push) Successful in 9m28sCI / Rust clippy (push) Successful in 1m35sCI / Rust fmt (push) Successful in 1m6sCI / Rust test (push) Successful in 5m7sCI / UI (SvelteKit) (push) Successful in 1m5sCI / Security Audit (push) Successful in 1m13sdocs / build (push) Successful in 32sRelease / Cosign sign artifacts (push) Successful in 20sRelease / Forgejo Release (push) Successful in 30sreleased this
2026-07-21 11:23:53 +00:00 | 40 commits to main since this releaseCertificates that renew themselves, and a donation card that asks properly.
Added
- Stratum TLS certificates are reloaded without a restart. The daemon read
cert and key exactly once at startup, so after an ACME renewal it kept
serving the old certificate until someone restarted it — and once that one
expired, TLS broke for every miner on the TLS port. Cert and key are now
watched and re-read when their mtime changes. Existing connections keep the
certificate they negotiated, new handshakes get the fresh one, and nobody
reconnects.[stratum] tls_reload_secscontrols the check interval
(default 300 s,0restores the previous read-once behaviour). A failed
reload — a half-written file mid-renewal — leaves the previous certificate
in service and retries on the next tick instead of taking the listener down.
Only V1 TLS is affected; Stratum V2 uses Noise NX with its own authority key
and has no X.509 material.
Changed
- Donation card copy, rewritten in all eight languages. It used to open
with an imperative and ask before the reader had agreed to anything; it now
leads with a question and then gives the reason — the pool charges 0% fee,
so donations are what covers the server. Four locales had been calling the
donation a tip in the service-staff sense (propina,pourboire,
mancia,打赏), inherited from the English wording; Chinese in particular
disagreed with its own admin UI, which already said捐赠. Each language
was written on its own terms rather than translated, so register and
percent typography now follow each locale's existing convention.
Fixed
scripts/verify-reproducible.shresolved release tags and assets against the
suspended GitHub account, so third-party reproducibility checks could not run
at all. Ported to the Forgejo API, with aWARPPOOL_FORGEoverride.- The doc comment on
[stratum] sv2_listensuggested:3334as an example —
the port the TLS V1 listener uses. Corrected to:34254.
dvb-WarpPool v1.22.0 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.22.0(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
1 download
- Stratum TLS certificates are reloaded without a restart. The daemon read
-
v1.21.0
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m42sCI / Rust fmt (push) Successful in 1m14sCI / Rust test (push) Successful in 5m29sCI / UI (SvelteKit) (push) Successful in 1m13sCI / Security Audit (push) Successful in 1m19sdocs / build (push) Successful in 36sRelease / Docker Multi-Arch (push) Successful in 20m24sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m47sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m55sRelease / Linux .deb + .rpm (amd64) (push) Successful in 11m1sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m37sRelease / Linux AppImage (aarch64) (push) Successful in 10m48sRelease / Linux AppImage (x86_64) (push) Successful in 9m47sRelease / Cosign sign artifacts (push) Successful in 26sRelease / Forgejo Release (push) Successful in 36sreleased this
2026-07-20 15:16:33 +00:00 | 48 commits to main since this releaseAn operator-authored announcement banner for the pool page.
Added
-
Marquee announcement banner. Operators can now put a scrolling notice at
the top of the pool page — a maintenance window, planned downtime, or anything
else miners should see — from the new Admin → Banner page. The
announcement runs for a chosen time (minutes, hours or days) and disappears on
its own when that time is up; a Stop button ends it early.It is stored as text plus an RFC3339 expiry in
pool_settings, so it needs no
scheduler and survives a restart. Everyone is served the announcement through
the public/api/overview(the field is omitted once expired), and the page
hides it locally at the expiry moment instead of waiting for the next
30-second poll, so it goes away on time.Announcements are rendered as plain text, never as HTML. The API rejects
control characters, caps the text at 200 characters, and clamps the runtime to
between one minute and 90 days.Scrolling pauses on hover and on keyboard focus so long notices can be read to
the end, and visitors who ask for reduced motion get the text static instead
of moving.New endpoints:
GET/POST/DELETE /api/admin/banner.
dvb-WarpPool v1.21.0 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.21.0(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
-
v1.20.1
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m34sCI / Rust fmt (push) Successful in 1m3sCI / Rust test (push) Successful in 5m14sCI / UI (SvelteKit) (push) Successful in 1m1sCI / Security Audit (push) Successful in 1m11sdocs / build (push) Successful in 27sRelease / Docker Multi-Arch (push) Successful in 19m51sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m42sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 10m1sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m28sRelease / Linux .deb + .rpm (arm64) (push) Successful in 13m49sRelease / Linux AppImage (aarch64) (push) Successful in 10m21sRelease / Linux AppImage (x86_64) (push) Successful in 9m32sRelease / Cosign sign artifacts (push) Successful in 21sRelease / Forgejo Release (push) Successful in 28sreleased this
2026-07-17 07:29:17 +00:00 | 57 commits to main since this releaseA Stratum V2 fix for direct ASIC miners that open Standard mining channels.
Fixed
- Stratum V2 Standard-channel miners now get per-miner variable difficulty.
Direct Sv2 miners that open a Standard mining channel (Bitaxe and similar)
were pinned to a fixed difficulty derived once from their advertised hashrate
and never adapted — so several identical units all sat at the same frozen
difficulty at the same time, while the very same miners on Stratum V1 diverged
normally. Only Extended channels (NerdQAxe and co.) were getting VarDiff.
Standard channels now seed VarDiff with the same MinerClass tuning as Extended
channels, so each miner adapts on its own share stream and reconnects restore
the converged difficulty. Thanks to John11 for the detailed report that
pinned it down (SV1 fine, Bitaxes affected, Qaxe++ not).
dvb-WarpPool v1.20.1 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.20.1(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
1 download
- Stratum V2 Standard-channel miners now get per-miner variable difficulty.
-
v1.20.0
StableAll checks were successfulCI / Rust clippy (push) Successful in 3m28sCI / Rust fmt (push) Successful in 1m6sCI / Rust test (push) Successful in 5m9sCI / UI (SvelteKit) (push) Successful in 1m2sCI / Security Audit (push) Successful in 1m18sdocs / build (push) Successful in 28sRelease / Docker Multi-Arch (push) Successful in 19m46sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m52sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m44sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m42sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m33sRelease / Linux AppImage (aarch64) (push) Successful in 10m27sRelease / Linux AppImage (x86_64) (push) Successful in 9m39sRelease / Cosign sign artifacts (push) Successful in 17sRelease / Forgejo Release (push) Successful in 26sreleased this
2026-07-16 15:02:37 +00:00 | 60 commits to main since this releaseRecovery codes for two-factor auth, plus fixes surfaced by the first public
mainnet run.Added
- 2FA recovery codes. Enabling two-factor auth now issues 10 one-time
recovery codes (shown once) so a lost authenticator no longer locks you out
of the admin area. Enter a code in place of the TOTP at login; each works
once. The admin 2FA page shows how many remain, warns when few are left, and
can regenerate a fresh set (requires the current app code). Only Argon2
hashes are stored — the plaintext is shown once and never persisted, and the
codes are excluded from backups. Login accepts a recovery code only after the
correct password, so it adds no brute-force surface.
Fixed
- Address ownership verification could get stuck. A failed signature check
(wrong wallet or a malformed paste) used to consume the challenge, so every
retry against the message still shown in the UI failed forever. A failed
attempt now keeps the challenge; only a successful verify (or expiry)
consumes it, and the one-shot guarantee holds under concurrency. - Admin visibility toggle mislabelled. The switch labelled "Miners tab"
actually controls the Devices tab (the/minersroute is the Devices
nav entry); the label and its hint now match the navigation. - Owner area up front names the wallets that can sign a proof-of-ownership
message (Electrum/Sparrow, incl. hardware wallets via those), so operators
pick a working wallet before trying.
Security
- Recovery codes are drawn with rejection sampling (no modulo bias) and each
login attempt that reaches the recovery path consumes at most one code
atomically. 2FA enable is rejected on an already-active account so codes are
never rotated silently — rotation goes through the confirmed regenerate flow.
dvb-WarpPool v1.20.0 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.20.0(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- 2FA recovery codes. Enabling two-factor auth now issues 10 one-time
-
v1.19.1
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m30sCI / Rust fmt (push) Successful in 1m3sCI / Rust test (push) Successful in 4m51sCI / UI (SvelteKit) (push) Successful in 1m1sCI / Security Audit (push) Successful in 1m12sdocs / build (push) Successful in 26sRelease / Docker Multi-Arch (push) Successful in 20m0sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 11m9sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 10m3sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m58sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m41sRelease / Linux AppImage (aarch64) (push) Successful in 10m44sRelease / Linux AppImage (x86_64) (push) Successful in 10m8sRelease / Cosign sign artifacts (push) Successful in 16sRelease / Forgejo Release (push) Successful in 25sreleased this
2026-07-16 11:00:18 +00:00 | 66 commits to main since this releaseHardening patch after the first public-mainnet run (pool.warppool.org). The
headline is a privacy fix: three read endpoints ignored the[privacy]
toggles, so the switches hid the nav tabs while the data stayed one request
away — most importantly/api/workers, which served every miner's full payout
address to anyone. All three are now gated; the operator (authenticated) still
sees everything.Security / Privacy
/api/workers,/api/hardware,/api/minersnow honour the privacy
toggles. Previouslyhardware_tab_public/miners_tab_public/
wallet_directory_publiconly hid the nav link./api/hardwareleaked the
exact OS, kernel patch level and hardware to anyone;/api/minersthe
operator's LAN devices;/api/workersevery full payout address + rig. Now
anonymous callers get a 403 (hardware), an empty list (miners), or masked
addresses (workers). Tests assert the gap is closed.- Web-push broadcasts only block-found events. The subscribe endpoint is
unauthenticated by design (friends can subscribe without an account), so node
health and update-available events — operator ops state — no longer go out
over it. They still reach the operator via the configured server-side sinks.
Fixed
- Leaderboard / workers masking keeps the rig label (
bc1qsx…dvng.bitaxe).
Dropping it bought no privacy (a rig name carries no address) while making the
board useless — you couldn't tell which of your machines earned a share. - Stratum V2 miners now show their hardware. The pool synthesised a
user-agent from the SetupConnection fields and used it to classify the miner,
but the Sv2 authorization callback had no field to carry it, so it was
dropped — Sv2 miners appeared with no hardware while V1 miners had it. - Clearer first-run bootstrap error. A read-only
/configmount made admin
setup fail with a generic "could not persist secrets"; it now names the cause
(not writable) and the path, and points at the packaging docs. - Docs: device-class count corrected (7 real classes, not 8 — the 8th is the
Unknownfallback); Windows.msimarked paused (not built since the forge
move); Cosign verification uses--bundle(the old--signatureexample
couldn't work); UI strings say "release"/"issue" instead of "GitHub".
Added
- IPC/GBT badge in the header. Shows which template source is live — the
RPC-ready badge can't, since RPC is required in both modes. - Wallet address search on the Workers page — jump straight to your own
/users/<address>page to prove ownership and switch on privacy, even when
the browsable directory is hidden. The tab is now always reachable. - Translator
--v2-connectaccepts a hostname, not justIP:port— it's
resolved via DNS at startup.
dvb-WarpPool v1.19.1 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.19.1(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
v1.19.0
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m32sCI / Rust fmt (push) Successful in 1m4sCI / Rust test (push) Successful in 4m51sCI / UI (SvelteKit) (push) Successful in 1m6sCI / Security Audit (push) Successful in 1m11sdocs / build (push) Successful in 28sRelease / Docker Multi-Arch (push) Successful in 20m30sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 12m5sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m42sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m51sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m36sRelease / Linux AppImage (aarch64) (push) Successful in 10m24sRelease / Linux AppImage (x86_64) (push) Successful in 9m35sRelease / Cosign sign artifacts (push) Successful in 18sRelease / Forgejo Release (push) Successful in 26sreleased this
2026-07-14 12:02:45 +00:00 | 68 commits to main since this releaseDonations for public 0% pools, plus a friendlier setup wizard. A per-worker
pool takes 0% of every reward, so its only funding path is a voluntary tip —
now built into the dashboard. Fully backward-compatible: the donation UI only
appears in per-worker mode, and private solo pools are unchanged.Added
- Voluntary donation addresses for public pools.
- Admin → Donations — a new admin page (nav entry shown only when
payout_mode = "per_worker") to set an optional on-chain Bitcoin address
and/or a Lightning address (LN address / LNURL / BOLT12). The on-chain
value is validated as a Bitcoin address on save; either may be left blank
to hide that option. - "Support this pool" card — when at least one address is set, the public
dashboard shows a donation card with copy buttons and QR codes (the
on-chain QR is abitcoin:URI wallets can open directly). - Addresses are stored as pool settings (no restart, no
config.tomledit)
and are pure operator metadata — they never touch coinbase construction, so
the fail-closedper_workerinvariant (no fee/donation skims the reward) is
unaffected. New endpoints:POST /api/admin/donations(admin) and
GET /api/donation-qr/{onchain,lightning}(public SVG).per_workeris now
surfaced in/api/overviewso the UI can gate public-pool-only features.
- Admin → Donations — a new admin page (nav entry shown only when
- Setup wizard: pool-type choice. The Mining card now offers Private solo
pool vs Public 0% pool. Choosing the public option writes
payout_mode = "per_worker", hides the (unused) pool-wide payout address, and
forces the fee to 0 — no hand-editing ofconfig.tomlneeded. Translated
across all 8 wizard languages.
Rust suite: 1149.
dvb-WarpPool v1.19.0 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.19.0(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Voluntary donation addresses for public pools.
-
v1.18.0
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m29sCI / Rust fmt (push) Successful in 1m3sCI / Rust test (push) Successful in 4m37sCI / UI (SvelteKit) (push) Successful in 1m2sCI / Security Audit (push) Successful in 1m11sdocs / build (push) Successful in 26sRelease / Docker Multi-Arch (push) Successful in 19m7sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m23sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m26sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m16sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m7sRelease / Linux AppImage (aarch64) (push) Successful in 10m16sRelease / Linux AppImage (x86_64) (push) Successful in 9m19sRelease / Cosign sign artifacts (push) Successful in 17sRelease / Forgejo Release (push) Successful in 27sreleased this
2026-07-13 16:49:28 +00:00 | 69 commits to main since this releaseOptional public-directory privacy for public pools — bring the default UI
exposure in line with established solo pools. Fully backward-compatible: both
new toggles default to the current open behaviour.Added
[privacy]config section.wallet_directory_public(defaulttrue) — setfalseto hide the
browsable Workers/wallet directory (/api/walletsand its nav link) from
anonymous visitors, likesolo.ckpool.org. Each per-address page
/users/<address>stays reachable by direct link; the authenticated
operator still sees the full directory (so keep admin auth enabled).leaderboard_addresses_public(defaulttrue) — setfalseto mask
the Bitcoin address in the public best-shares leaderboard server-side
(bc1qsx…dvng, rig suffix dropped), like AtlasPool. The operator still sees
full addresses.- Both are orthogonal to the existing per-miner opt-in privacy flag (the
signature-gated Owner Area) and affect neither payouts nor block
construction. Documented in the Configuration Reference and the public-pool
setup guide. Rust suite: 1145.
dvb-WarpPool v1.18.0 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.18.0(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
v1.17.2
StableSome checks failedCI / Rust fmt (push) Has been cancelledCI / Rust test (push) Has been cancelledCI / UI (SvelteKit) (push) Has been cancelledCI / Security Audit (push) Has been cancelledCI / Rust clippy (push) Has been cancelleddocs / build (push) Successful in 22sRelease / Docker Multi-Arch (push) Successful in 18m46sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m23sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m34sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m31sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m21sRelease / Linux AppImage (aarch64) (push) Successful in 10m30sRelease / Linux AppImage (x86_64) (push) Successful in 9m16sRelease / Cosign sign artifacts (push) Successful in 17sRelease / Forgejo Release (push) Successful in 26sreleased this
2026-07-13 11:17:39 +00:00 | 71 commits to main since this releasePatch: fix a
/api/users500 on whole-number best shares, and complete the
end-user manuals with the public wallet page.Fixed
- The public per-wallet page (
/users/<address>) returned HTTP 500 when a
rig's best share (or an empty hashrate window) decoded to a whole number.
SQLite hands backSUM(CASE … ELSE 0 END)over an empty time window — and
MAX/SUMof whole-number values — with INTEGER storage class, which sqlx
refuses to decode intof64. The three address-scoped queries
(best_ever_for_address,hashrate_windows_for_address,
list_hashrate_5min_for_address) nowCAST(… AS REAL). Regression test added
(Rust suite: 1142).
Documentation
- End-user manuals now cover the public wallet page. Both the Umbrel and the
general installation manual gain a new chapter 8, "Your public wallet page
(/users)" — the shareable per-address dashboard, the ckpool-compatible JSON
endpoint, and the signature-gated Owner Area (privacy toggle + notifications) —
plus a per-worker payout note in the "Connecting your first miner" chapter.
dvb-WarpPool v1.17.2 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.17.2(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- The public per-wallet page (
-
v1.17.1
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m33sCI / Rust fmt (push) Successful in 1m6sCI / Rust test (push) Successful in 4m56sCI / UI (SvelteKit) (push) Successful in 1m3sCI / Security Audit (push) Successful in 1m11sdocs / build (push) Successful in 25sRelease / Docker Multi-Arch (push) Successful in 20m23sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 11m6sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 10m0sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m42sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m29sRelease / Linux AppImage (aarch64) (push) Successful in 10m54sRelease / Linux AppImage (x86_64) (push) Successful in 9m28sRelease / Cosign sign artifacts (push) Successful in 18sRelease / Forgejo Release (push) Successful in 26sreleased this
2026-07-13 08:19:35 +00:00 | 72 commits to main since this releasePatch: fix the static-UI SPA fallback so shareable client routes load on direct
access.Fixed
- Direct-loading a client route (
/users/<address>,/wallets,/admin, …)
returned 404 instead of the app. The daemon's static UI serving relied on
ServeDir::not_found_service, which does not fire whenServeDiris an axum
fallback_service(tower-http 0.7) — so any non-index path that wasn't a real
file 404'd, breaking the shareable per-wallet/users/<address>page (and
bookmarks / firmware hitting it directly). Replaced with an explicit
file-or-index fallback handler. Regression test added (Rust suite: 1141).
dvb-WarpPool v1.17.1 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.17.1(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Direct-loading a client route (
-
v1.17.0
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m39sCI / Rust fmt (push) Successful in 1m3sCI / Rust test (push) Successful in 4m34sCI / UI (SvelteKit) (push) Successful in 1m4sCI / Security Audit (push) Successful in 1m13sdocs / build (push) Successful in 24sRelease / Docker Multi-Arch (push) Successful in 18m58sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m20sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 9m17sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m10sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m1sRelease / Linux AppImage (aarch64) (push) Successful in 10m7sRelease / Linux AppImage (x86_64) (push) Successful in 9m8sRelease / Cosign sign artifacts (push) Successful in 17sRelease / Forgejo Release (push) Successful in 28sreleased this
2026-07-12 23:52:40 +00:00 | 73 commits to main since this releasePer-worker payout mode — WarpPool can now run as a public, non-custodial,
0%-fee solo pool where every miner mines to their own address. Fully
backward-compatible:singlemode is the default and byte-for-byte unchanged.
Rust suite grows to 1140 + 4 ignored (new real-Core regtest consensus E2E).Added
- Per-worker coinbase (
[mining] payout_mode = "per_worker"). Each miner
supplies its own BTC address as the Stratum username; the coinbase is built
per connection (V1) / per channel (Sv2) to pay that address the full block
reward — one output, no pool fee. An invalid or wrong-network login address
is rejected (no fallback to an operator address). The pool holds no funds.
Config is fail-closed:per_workerwith any fee/donation refuses to start. - Public per-wallet dashboard at
/users/<address>— a ckpool-compatible
JSON endpoint (firmware / ckstats parse it) plus a SvelteKit page: network
panel, five hashrate windows, best-ever share, honest estimated-time-to-block,
hashrate chart, and a per-rig table with detected mining software. Wallet rows
on/walletslink straight to it. - Wallet ownership verification (BIP-137) — a miner proves control of an
address by signing a pool-issued one-shot challenge (no funds moved). Once
verified, an owner-only panel unlocks a privacy toggle (hide the wallet
from the public list/pages) and per-wallet notifications (ntfy topic or
webhook) for block-found and rig-offline events. All 22 owner-panel strings
are translated in all 8 languages. - Public-pool deployment guide (
docs/book/src/public-pool-setup.md) with a
ready-to-paste hardening profile (per-IP caps, auto-ban, reject-ratio ban,
IP-gate, TLS, reverse-proxy) and a deployment checklist.
Security
- Shared SSRF guard for all outbound, user-supplied targets (web-push and
per-wallet notify). Private/loopback/link-local/CGNAT/0.0.0.0-8hosts are
refused, hostnames are re-checked against DNS-rebinding, and HTTP redirect
following is disabled so a3xxcannot smuggle a request onto an internal
host. Single source of truth, reused by both paths. - The per-wallet hashrate time-series (
/api/users/<addr>/hashrateand
/api/hashrate?worker=) now honour the privacy flag — a private wallet's
series is hidden from anyone who is not its verified owner (or an
authenticated operator).
Changed
- Coinbase construction refactored around a shared, address-independent
JobTemplate;singlemode delegates to it and is proven byte-identical to
the previous builder. Merkle branches and the witness commitment stay shared;
only the payout output varies per address.
Tests
- Real-Core regtest consensus E2E (
--ignored, opt-in): builds per-worker
blocks for multiple distinct addresses, submits them to a live bitcoind
regtest, and asserts each block is accepted, pays the correct address with a
single value output, carries a correct witness commitment (incl. a non-empty
tx set), and thatsinglemode still produces a valid block.
dvb-WarpPool v1.17.0 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.17.0(multi-arch amd64+arm64, ohne v-Präfix)Native packages
- Linux .deb: amd64 + arm64 →
apt install ./dvb-warppool_*.deb - Linux .rpm: amd64 + arm64 →
dnf install ./dvb-warppool-*.rpm - Linux AppImage: x86_64 + aarch64 portable
- Linux tarballs: x86_64 + aarch64 for manual installs
- macOS .dmg: added shortly after publish (built separately) — or build from source
- Windows .msi: paused since the forge migration (no Windows runner yet)
Signatures
SHA256SUMS+ cosign bundle (SHA256SUMS.bundle, project key)- SBOM (SPDX) for all dependencies
Verify (project public key
cosign.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Per-worker coinbase (