Lightweight WebDAV server for Zotero file syncing - self-host your research library with Docker
10K+
A Docker image providing WebDAV access for Zotero, built on the official Nginx Alpine Linux image.
Important: Replace
myuserandmysecretpasswordin the examples below with your own credentials.
docker run -d \
--name zotero-webdav \
-p 8080:80 \
-e ZOTERO_USER=myuser \
-e ZOTERO_PASS=mysecretpassword \
-v zotero-data:/var/lib/dav/data \
gzurowski/zotero-dav
Create a docker-compose.yml:
services:
zotero:
image: gzurowski/zotero-dav
ports:
- "8080:80"
environment:
- ZOTERO_USER=myuser
- ZOTERO_PASS=mysecretpassword
volumes:
- zotero-data:/var/lib/dav/data
volumes:
zotero-data:
Then run:
docker compose up -d
| Environment Variable | Default | Description |
|---|---|---|
ZOTERO_USER | zotero | WebDAV username |
ZOTERO_PASS | zotero | WebDAV password |
UID | 101 | User ID for file ownership |
GID | 101 | Group ID for file ownership |
http://my-server:8080/zotero/myuser)
Clone this repository:
git clone https://github.com/gzurowski/zotero-dav.git
docker compose build
docker compose run --build
The server will be available at http://localhost:8888 with default credentials zotero:zotero.
# Health check
curl http://localhost:8888/health
# List directory
curl -u zotero:zotero -X PROPFIND http://localhost:8888/zotero/
# Upload a test file
echo "Hello Zotero!" > test.txt
curl -u zotero:zotero -T test.txt http://localhost:8888/zotero/test.txt
# Download the file
curl -u zotero:zotero http://localhost:8888/zotero/test.txt
# Delete the file
curl -u zotero:zotero -X DELETE http://localhost:8888/zotero/test.txt
Uploaded files are stored in the ./data directory.
If you encounter any problems or have suggestions, please open an issue.
Content type
Image
Digest
sha256:1ec49d1c9…
Size
25.5 MB
Last updated
6 months ago
docker pull gzurowski/zotero-dav