Important
This fork is designed to be a drop in replacement/upgrade from nzbdav-dev/nzbdav v0.6.4.
Early adopters are reporting 2x network throughput capability and a 400% reduction in seek time.
ghcr.io/nzbdav/nzbdav:latest
Mount NZBs as a virtual filesystem and stream directly from Usenet — without downloading full media files first.
NzbDAV is a WebDAV server that mounts NZB documents as a browsable virtual filesystem — without downloading full media files first. Content streams on demand, straight from your Usenet provider.
It also exposes a SABnzbd-compatible API, so Sonarr, Radarr, and similar tools can use it as a drop-in download client. Combined with Plex, Emby, or Jellyfin, this lets you build an effectively infinite media library without storing the full media library on your server.
Please add feature requests and issues over on our Issue Tracker or join our Discord #nzbdav to chat with us!
This project is a maintained fork of nzbdav-dev/nzbdav. We took ownership of the full Usenet streaming stack — nzbdav, UsenetSharp, RapidYencSharp, rapidyenc, and SharpCompress — so playback, connection, and decoding fixes could land in the right layer instead of waiting on a single upstream dependency chain.
Read the full story in the about page.
Special thanks to the forks and contributors whose ideas we absorbed:
-
📁 WebDAV server
- Host your virtual filesystem over HTTP(S)
-
☁️ Mount NZB documents
- Browse NZB contents instantly, no download needed
-
📽️ Full streaming & seeking
- Jump to any point in your video streams
-
🚀 NNTP article pipelining
- Optional pipelined article fetches for higher throughput and faster seeks
-
🗃️ Archive streaming
- View, stream, and seek inside RAR and 7z archives
-
🔓 Password-protected archives
- Stream encrypted content transparently
-
🔀 Multiple Usenet providers
- Automatic failover with per-provider circuit breakers
-
📊 Live operations dashboard
- Throughput, latency, errors, active reads, provider usage, failover saves, and indexer activity
-
🧭 Provider routing and limits
- Cascade priorities, per-provider data caps, usage resets, and connection benchmarking
-
🔎 Built-in indexer search
- Configure Newznab indexers, track API usage, search them manually, and mount results
-
🚫 Search exclude filters
- Manual regex excludes plus auto-synced remote lists (e.g. TRaSH) with refresh status
-
🎛️ Search profiles and adapters
- Expose selected indexers through token-scoped Addon, Newznab, and JSON APIs
-
🐕 Watchdog playback failover
- Verify candidates, retry failed releases, and inspect each playback attempt
-
🛡️ Warden dead-release ledger
- Remember unavailable releases, combine trusted remote ledgers, and import, export, or back up the data
-
📡 Watchtower proactive resolution
- Keep wanted movies and episodes mapped to verified releases before playback
-
📜 Live log viewer
- Filter, follow, and download backend logs from the admin UI
-
🗂️ WebDAV management
- Browse, download, and delete eligible virtual filesystem items from the UI
-
💙 Health checks & optional repairs
- Monitor content health and trigger replacements through Radarr/Sonarr when configured
-
🧩 SABnzbd-compatible API
- Drop-in replacement for SABnzbd
-
🙌 Sonarr/Radarr integration
- Import through Rclone symlinks or lightweight STRM files
NzbDAV ships as a single Docker image. Use the latest tag for the newest release, or lts for a slower, more conservative release cycle that lags one feature release behind latest. To try it out:
docker run --rm -it -p 3000:3000 ghcr.io/nzbdav/nzbdav:latestThis trial command is ephemeral: its settings are discarded when the container exits.
For a persistent setup, use Docker Compose:
services:
nzbdav:
image: ghcr.io/nzbdav/nzbdav:latest
container_name: nzbdav
restart: unless-stopped
ports:
- "3000:3000"
environment:
PUID: "1000"
PGID: "1000"
TZ: Etc/UTC
volumes:
- ./config:/configThen open http://localhost:3000, create your admin account, and head to the Settings page to configure your Usenet provider:
Important
Port 3000 serves plain HTTP. If NzbDAV will be reachable outside your trusted network, put it behind an HTTPS reverse proxy and do not expose the container port directly to the internet. WebDAV uses Basic authentication, so TLS is essential for remote access. When the proxy runs on the Docker host, bind the port to localhost with 127.0.0.1:3000:3000.
You'll also want to set a username and password for the WebDAV server itself.
Full documentation is published at nzbdav.com.
The about page covers project heritage and the managed library ecosystem (UsenetSharp, RapidYencSharp, rapidyenc, SharpCompress).
Start with the getting started guide for a full production deployment:
- Docker Compose — persistent deployment, container health checks, and updates
- Migration — official path from nzbdav-dev v0.6.4 and community forks (Pukabyte, NzbDavEx)
- Import strategies — Rclone symlinks for Plex or STRM files for Emby/Jellyfin
- Performance tuning — benchmarking WebDAV connection limits
- Integrations — automating Radarr/Sonarr queue management and repairs
- Stremio — streaming Usenet on demand via AIOStreams
- Search profiles — token-scoped Newznab, Addon, and JSON adapter setup
- Watchtower — proactive wanted-list resolution in the Watchtower guide
- Configuration — Settings walkthrough and environment variables
- Compare — NzbDAV vs AltMount vs classic download clients
The project consists of a .NET backend (WebDAV, Usenet streaming, SAB API) and a React Router frontend (admin UI). See CONTRIBUTING.md for local development setup and CHANGELOG.md for release history. Source for the published docs lives in docs/.
NzbDAV is released under the MIT License.
Note
NzbDAV is intended for use with legally obtained or public domain content only. The project maintainers do not condone piracy and will not provide support for users suspected of engaging in copyright infringement.