WebDAV¶
WebDAV authentication and streaming/connection behavior for playback mounts.
Headless ENV
Map config keys below to NZBDAV_CONFIG__... with the
naming algorithm
(webdav.pass → NZBDAV_CONFIG__WEBDAV__PASS).
| Control | Config key | Default | Effect |
|---|---|---|---|
| WebDAV User | webdav.user |
admin / WEBDAV_USER |
Alphanumeric + _ - |
| WebDAV Password | webdav.pass |
env WEBDAV_PASSWORD |
Required for rclone/clients |
| Queue Download Connections | usenet.max-queue-connections |
blank = all | Cap queue NNTP use |
| Queue connection preset since 0.9.1 | usenet.max-queue-connections-preset |
blank = all | low/medium/high/max = 25/50/75/100% of the pooled total, so one value fits any provider count. Ignored when the absolute setting above is set |
| Concurrent Queue Downloads since 0.9.0 | queue.worker-count |
1 |
Concurrent NZB imports (1–4); the oldest item is preferred while other workers share the connection budget |
| Enable Segment Cache | usenet.segment-cache.enabled |
off | Disk cache; restart required |
| Cache path | usenet.segment-cache.path |
/config/segment-cache |
|
| Maximum size (GB) | usenet.segment-cache.max-gb |
10 |
|
| Max Download Connections | usenet.max-download-connections |
0 (auto = pool) |
Streaming budget |
| Apply limit per stream | usenet.max-download-connections-per-stream |
off | Per-stream budget |
| Per-stream performance | usenet.max-download-connections-per-stream-preset |
high |
low/medium/high/max |
| Streaming Priority (vs Queue) since 0.9.0 | usenet.streaming-priority |
80 |
High vs Low admission odds at each saturated provider connection pool (playback High, queue/health Low). Spare capacity is never held idle for High |
| Streaming Segment Timeout | usenet.streaming-segment-timeout-seconds |
8 |
2–40s |
| Streaming Read Timeout since 0.9.0 | usenet.streaming-read-timeout-seconds |
30 |
5–120s initial backend wait to open a GET/range (semaphore + pool + first segment). Cleared once body bytes flow; mid-stream stalls use the per-segment timeout. Unstarted responses return 503 with Retry-After — rclone/FUSE may still show client-side errors |
| Streaming Segment Retries | usenet.streaming-segment-retries |
3 |
0–5 |
| Article Buffer Size | usenet.article-buffer-size |
40 |
Articles buffered ahead per stream (count bound) |
| In-flight article budget (MiB) since 0.8.2 | usenet.in-flight-article-budget-mb |
auto (≈25% of container memory, max 512) | Host-wide cap on decoded article bytes in RAM (64–8192); empty = derived; distinct from per-stream article buffer count |
| Idle connection timeout | usenet.idle-connection-timeout-seconds |
60 |
15–300; pool rebuild/restart |
| Pipelined article downloads | usenet.pipelined-body-requests |
on | WebDAV BODY batches |
| Container-aware gap fill since 0.10.0 | usenet.container-aware-fill |
off | Experimental; MPEG-TS null packets instead of zeros for confirmed missing articles |
| Enforce Read-Only | webdav.enforce-readonly |
on | /content readonly |
| Show hidden files | webdav.show-hidden-files |
off | Dot-prefixed names in Explore |
| Preview par2 files | webdav.preview-par2-files |
off | Render as text |
| Sanitize paths for Windows | webdav.windows-safe-paths |
on | New mounts only |
Speed tuning
Raise Max Download Connections until throughput plateaus without pegging CPU. Baseline with a host speed test, then time a /view download from inside the container against the backend.
Article Buffer Size and adaptive prefetch since 0.9.0¶
usenet.article-buffer-size bounds how many decoded articles a stream may keep ahead of the consumer — and therefore per-stream memory — not how many provider connections playback may use.
When Pipelined article downloads is on, WebDAV BODY requests start in batches of up to four articles on one connection. If playback starves waiting for the next segment, InfiniDysk automatically narrows that batch width (4 → 2 → 1) so more connections can work in parallel at the same buffer depth. When the consumer stays ahead, batch width recovers gradually. Connection and host-wide byte budgets still apply.
Experimental container-aware gap fill since 0.10.0¶
When a confirmed-missing or persistently corrupt article cannot be recovered from any provider or fallback Message-ID, InfiniDysk normally emits the same number of zero bytes to keep every later file offset correct. Enable Container-aware gap fill to emit format-native discard markers instead for supported direct files:
- MPEG-TS (
.ts,.m2ts,.mts): packet-aligned null packets when exact segment offsets are available.
This may help compatible players resynchronize sooner, but it cannot restore the missing audio or video data. Matroska, MP4/MOV, and archive-backed files retain zero-fill because arbitrary article boundaries do not provide safe container-element boundaries.
The setting is experimental and defaults to off. It does not affect transient transport failures: after their retries are exhausted, the current HTTP response fails so the player can request the range again.
Capturing a buffering support pack¶
Playback stalls are only diagnosable if the evidence is still in the log buffer when you collect the pack:
- Set
LOG_LEVEL=INFO. AtDEBUG, routine background activity can fill the whole buffer within hours and evict the streaming events.logs/warnings.login the pack keeps the last 500 warnings and errors regardless, so check it first. - Enable Developer stream tracing on Settings → Support for 15–60 minutes and pick a capacity that covers the whole reproduction (default 100,000 events; or set
STREAM_TRACE_EVENTS=100000and restart). After downloading the pack, checkmanifest.json → streamTraces.overflowed— if true, increase capacity and reproduce again. - Reproduce the stall — play the file from Explore so the read goes straight to
/view, skipping rclone and your media server. - Download the pack from Settings → Support immediately afterwards, while tracing is still on. The buffer is in-memory and is cleared on restart.
See Logs and crash dumps.