ZoDAV: self-hosted WebDAV for Zotero file sync, plus a checker for any WebDAV setup
Hi all,
I have been syncing my Zotero attachments through my own WebDAV server for a while, and I have packaged the setup as an open-source project called ZoDAV:
https://github.com/ali-rajabpour/ZoDAV
What it does:
- Runs a small Apache WebDAV server set up only for Zotero file sync, started with Docker Compose.
- Is reachable only over your own Tailscale or Headscale network, so nothing is exposed to the internet and no TLS certificates are needed.
- Checks every stored file once a day (the .zip opens, the .prop hash matches) and sends an alert by email, Telegram, ntfy, Slack or Discord if something is wrong, for example when a large share of files disappears at once.
- Can back up the files with restic, encrypted, to any restic target.
The part that may be useful even if you use another WebDAV provider: the checker, zodav-audit, works against any WebDAV server. Its conformance test sends the same requests as Zotero's "Verify Server", then a few more, and tells you which step failed and what to change. It can also scan an existing store for broken .zip/.prop pairs and rebuild the .prop files that can be rebuilt (it only reports unless you pass --apply). It is a single Python file with no dependencies:
python3 zodav_audit.py conformance https://dav.example.com/ --user alice
ZoDAV is not affiliated with the Zotero project, and it is not meant to replace Zotero Storage, which is the easiest option and supports Zotero's development. It is for people who already prefer WebDAV.
The license is AGPL-3.0, the same as Zotero. I would be glad of feedback, especially from anyone who has run into WebDAV behaviour I have not covered.
Ali
I have been syncing my Zotero attachments through my own WebDAV server for a while, and I have packaged the setup as an open-source project called ZoDAV:
https://github.com/ali-rajabpour/ZoDAV
What it does:
- Runs a small Apache WebDAV server set up only for Zotero file sync, started with Docker Compose.
- Is reachable only over your own Tailscale or Headscale network, so nothing is exposed to the internet and no TLS certificates are needed.
- Checks every stored file once a day (the .zip opens, the .prop hash matches) and sends an alert by email, Telegram, ntfy, Slack or Discord if something is wrong, for example when a large share of files disappears at once.
- Can back up the files with restic, encrypted, to any restic target.
The part that may be useful even if you use another WebDAV provider: the checker, zodav-audit, works against any WebDAV server. Its conformance test sends the same requests as Zotero's "Verify Server", then a few more, and tells you which step failed and what to change. It can also scan an existing store for broken .zip/.prop pairs and rebuild the .prop files that can be rebuilt (it only reports unless you pass --apply). It is a single Python file with no dependencies:
python3 zodav_audit.py conformance https://dav.example.com/ --user alice
ZoDAV is not affiliated with the Zotero project, and it is not meant to replace Zotero Storage, which is the easiest option and supports Zotero's development. It is for people who already prefer WebDAV.
The license is AGPL-3.0, the same as Zotero. I would be glad of feedback, especially from anyone who has run into WebDAV behaviour I have not covered.
Ali
Upgrade Storage