NzbDav is a WebDAV server that allows you to mount and browse NZB documents as a virtual file system without downloading. It's designed to integrate with other media management tools, like Sonarr and Radarr, by providing a SABnzbd-compatible API. With it, you can build an infinite Plex or Jellyfin media library that streams directly from your usenet provider at maxed-out speeds, without using any storage space on your own server.
Check the video below for a demo:
Screen.Recording.2025-07-31.172515.mp4
- π WebDAV Server - Host your virtual file system over HTTP(S)
- βοΈ Mount NZB Documents - Mount and browse NZB documents without downloading.
- π½οΈ Full Streaming and Seeking Abilities - Jump ahead to any point in your video streams.
- ποΈ Automatic Unrar - View, stream, and seek content within RAR archives
- π§© SABnzbd-Compatible API - Integrate with Sonarr/Radarr and other tools using a compatible API.
- π« Improved Queue/History UI - Real-time queue with download progress. And support for manual queue/history actions (e.g. removals)
- π« Automatic Repairs of Broken Nzbs - Periodic checks of Nzb health, triggering automatic *arr replacements when necessary
- π« Multiple/Backup Usenet Providers - Fallback to other usenet providers in cases of missing articles
- π« 7z Support - Support streaming from uncompressed 7z archives
The easiest way to get started is by using the official Docker image.
To try it out, run the following command to pull and run the image with port 3000
exposed:
docker run --rm -it -p 3000:3000 ghcr.io/nzbdav-dev/nzbdav:pre-alpha
And if you would like to persist saved settings, attach a volume at /config
mkdir -p $(pwd)/nzbdav && \
docker run --rm -it \
-v $(pwd)/nzbdav:/config \
-e PUID=1000 \
-e PGID=1000 \
-p 3000:3000 \
ghcr.io/nzbdav-dev/nzbdav:pre-alpha
After starting the container, be sure to navigate to the Settings page on the UI to finish setting up your usenet connection settings.
You'll also want to set up a username and password for logging in to the webdav server
In order to integrate with Plex, Radarr, and Sonarr, you'll need to mount the webdav server onto your filesystem.
[nzb-dav]
type = webdav
url = // your endpoint
vendor = other
user = // your webdav user
pass = // your rclone-obscured password https://rclone.org/commands/rclone_obscure
Below are the RClone settings I use.
This setup disables Rclone's caching and streams directly, since the end-client (Plex/VLC/Chrome/etc) will already buffer-ahead anyway
--vfs-cache-mode=off
--buffer-size=1024
--dir-cache-time=1s
--links
--use-cookies
--allow-other
-
The
--links
setting in RClone is important. It allows *.rclonelink files within the webdav to be translated to symlinks when mounted onto your filesystem.NOTE: Be sure to use an updated version of rclone that supports the
--links
argument.- Version
v1.70.3
has been known to support it. - Version
v1.60.1-DEV
has been known not to support it.
- Version
-
The
--use-cookies
setting in RClone is also important. Without it, RClone is forced to re-authenticate on every single webdav request, slowing it down considerably. -
The
--allow-other
setting is not required, but it should help if you find that your containers are not able to see the mount contents due to permission issues.
Once you have the webdav mounted onto your filesystem (e.g. accessible at /mnt/nzbdav
), you can configure NZB-Dav as your download-client within Radarr and Sonarr, using the SABnzbd-compatible api.
- Radar will send an *.nzb to NZB-Dav to "download"
- NZB-Dav will mount the nzb onto the webdav without actually downloading it.
- RClone will make the nzb contents available to your filesystem by streaming, without using any storage space on your server.
- NZB-Dav will tell Radarr that the "download" has completed within the
/mnt/nzbdav/completed-symlinks
folder. - Radarr will grab the symlinks from
/mnt/nzbdav/completed-symlinks
and will move them to wherever you have your media library. - The symlinks always point to the
/mnt/nzbdav/content
folder which contain the streamable content. - Plex accesses one of the symlinks from your media library, it will automatically fetch and stream it from the mounted webdav.