Architecture¶
NzbDAV sits between download clients / search and Usenet providers, exposing a virtual filesystem and SAB-compatible API.
flowchart TB
subgraph clients [Clients]
Arr[Sonarr_Radarr]
Browser[Admin_UI]
Player[Plex_Jellyfin_rclone]
Stremio[Stremio_AIOStreams]
end
subgraph nzbdav [NzbDAV]
SAB[SAB_API]
Queue[Queue_processor]
WebDAV[WebDAV_store]
UI[Frontend_proxy]
end
subgraph usenet [Usenet]
NNTP[NNTP_providers]
end
Arr -->|addfile_addurl| SAB
SAB --> Queue
Queue --> WebDAV
Browser --> UI
UI --> SAB
UI --> WebDAV
Player -->|HTTP_range| WebDAV
WebDAV --> NNTP
Stremio -->|API_WebDAV| UI
Two common flows¶
Automation (*Arr + media server)¶
- Radarr/Sonarr sends an NZB to NzbDAV as a SABnzbd download client.
- NzbDAV mounts the release on WebDAV without downloading the full file.
- Import artifact:
- Symlinks — entries under
completed-symlinks; rclone turns them into filesystem links into.ids. - STRM — small
.strmfiles with authenticated streaming URLs. - *Arr imports into the library; the media server reads through the link/URL → NzbDAV → Usenet.
On-demand (Stremio)¶
- AIOStreams finds a release via Newznab.
- NZB is mounted through NzbDAV's API.
- Playback URL (often proxied by AIOStreams) streams from WebDAV.
Processes and ports¶
| Process | Default | Role |
|---|---|---|
| Frontend | :3000 |
Admin UI, auth, proxy for WebDAV + /api + /ws |
| Backend | :8080 (internal) |
WebDAV, queue, SAB API, SQLite under CONFIG_PATH |
Persistent state lives under /config (DB, settings, blobs, backups).
Related¶
Import strategies · Features overview · Environment variables