µD4V lightweight WebDAV container image

February 19, 2026 · View on GitHub

µD4V (pronounced ooh-dove) is a container image targeting to be a lightweight, single-user WebDAV protocol server.

Intended to be used in homelabs, i.e. for Paperless-ngx or Calibre consumption directories frontend.

Features

Core WebDAV support. Backed by golang.org/x/net/webdav and caddy-webdav

Basic authz and serving powered by Caddy

Lightweight: image size ~87 MB, process mem consumption ~12 MB

Usage

docker pull ghcr.io/senz/u4dav:edge

Container env variables:

Var nameDescription
USERNAMEUser login for basic auth
PASSWORDPlaintext user password
CADDY_LOG_OUTPUTWhere to send Caddy runtime logs: stdout, stderr, discard, or a file path. Default: discard
CADDY_LOG_LEVELMinimum log level: INFO, ERROR. Default: INFO
CADDY_REQUEST_BODY_MAX_SIZEMax size for request body (e.g. 1gb, 100mb). Default: 1gb

Mount your data under /home/caddy/caddy-media container folder.

Quick local test: docker run -e USERNAME=ud4v -e PASSWORD=udaff -p 8080:80 -v ./media:/home/caddy/caddy-media ghcr.io/senz/u4dav:edge

Image tags

The image is published to GitHub Container Registry. Available tags:

TagDescriptionExample
edgePush to mainghcr.io/senz/u4dav:edge
majorOn semver tag push v*ghcr.io/senz/u4dav:2
major.minorSameghcr.io/senz/u4dav:2.4
full versionSame (no v prefix)ghcr.io/senz/u4dav:2.4.1

Alternative image (rclone)

An alternative image serves WebDAV via rclone serve webdav instead of Caddy. Same env vars USERNAME, PASSWORD; mount your data under /media. Use the -rclone tag suffix.

Var nameDescription
USERNAMEUser login for basic auth
PASSWORDPlaintext user password
RCLONE_ADDRListen address (default :80), e.g. :8080
RCLONE_LOG_LEVELLog level: DEBUG, INFO, NOTICE, ERROR. Default: INFO

Example:

docker run -e USERNAME=ud4v -e PASSWORD=udaff -p 8080:80 -v ./media:/media ghcr.io/senz/u4dav:edge-rclone