Zotero is a great open source application for managing research litterature. It's powerful and available on all devices. With the recent version, it even looks good.
However, in order sync between devices, you need cloud storage, but the free tier is only usable for syncing metadata, and the paid tiers have a very steep cost.
However, being open source, Zotero has an option that few commercial software packages have. You can change the syncing server, and use any Webdav compliant server for syncing. Luckily, I do have just such a thing.
How to set up Zotero sync with Webdav
Using bytemark/docker-webdav's Docker image, we can get a Webdav server using Docker.
You can deploy this docker compose raw, or you can take advantage of Coolify's management. We need to edit the configuration slightly to fit with Coolify's expectations.
version: '3'
services:
webdav:
image: bytemark/webdav
restart: always
ports:
- 8001:80
environment:
AUTH_TYPE: Basic
USERNAME: '${SERVICE_USER_WEBDAV:-lux}'
PASSWORD: '${SERVICE_PASSWORD_WEBDAV}'
volumes:
-
type: bind
source: ./srv/dav
target: /var/lib/dav
is_directory: true
The is_directory
is for Coolify so it will add the persistent storage correctly. port
is to expose a dedicated port as I don't want to open it to the internet, or edit my hostnames (which is not possible on mobile). I only want it to be accessible behind the tailscale
vpn. The environment variables are automatically populated and accessible through the UI. You can read more on Coolify's documentaiton. We use Basic
authentication to be consistent with what Zotero expects.
To add the application to Coolify, I add an resource, select the empty docker compose application template, and paste the above into it. Then I can access the service at http://hostname:8001
.
Then in Zotero, we set the syncing to WebDav and enter the details. (use http
, the actual traffic is protected by Tailscale).
If you have Tailscale and Zotero on your mobile devices, you can set up syncing using the same technique. Just make sure you're connected to the Tailscale network otherwise the server will be unreachable.
And that's it. Now you don't need to pay the truly steep price for sync storage.