Zotero 好用,但免费云不太够用
众所周知,Zotero 作为一款好用、开源的文献管理工具,还能安装各种插件满足自己的个性化需求,可以说是一直广受科研民工人士的喜爱。但是吧,300 MiB 的免费同步空间对于有收集癖博览群文的人来说还是有点不太够用,虽说官方 3 GiB的空间只要 20 USD 每年,但想想自己有那么多的云服务还没用上,这钱花的多少有点不舒服,好在 Zotero 支持使用 WebDAV 协议进行同步,这就有了很大的发挥空间。
自建 or 商业服务
说实话,一般能看到我这博客的人应该都是跳过这个选择,直接看自建教程了,但其实成熟的云盘服务是很省心的,如果在用的网盘支持使用 WebDAV(国内好像只有坚果云,以前 iCloud 也可以现在不行了,dropbox、teracloud、box应该可以),直接使用挺好的。不过不推荐将数据库直接放入 OneDrive/iCloud 云盘等的行为,官方说这样有可能会损坏数据库。如果你和我一样没有在用这些网盘的服务,且具有一定的折腾能力和闲置的云端资源,就进入正片吧。
Web 服务器
其实只需要使用 WebDAV 的话有不少服务端是可以直接使用的,但往往服务器上都有一些其他的网页服务,所以还是需要类似 Apache、Nginx、Caddy 这类 Web Server 的。我用过 Nginx 和 Caddy,现在感觉 Caddy 这个东西配置起来真是比 Nginx 方便太多了,证书不用自己管,各种设置也相对直观一些,但是比较麻烦的地方在于模块,不少时候都要借助于 XCaddy,而 Nginx 的很多模块都可以直接通过包管理器来安装,方便一点,这个选择全看个人偏好。
本文主要记录使用 Caddy 的过程,Nginx 的有空再说()
Caddy的安装非常简单,按照官方给出的命令即可:
1 2 3 4 5 |
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy |
证书
都 4202 年了,别再 HTTP 裸奔了,上 HTTPS 吧!
如果不是在其他地方生成的证书,且用的是 Caddy,跳过直接在配置里面写上 tls 选项就行,非常好用
用 Nginx 的话就得 acme.sh 了,网上也有很多的教程,官方文档也很全,过()。
Caddy 模块配置
Caddy 原生的模块里面是没有 WebDAV 支持的,这里用到了 mholt/caddy-webdav 项目,有两种方式可以安装插件,没有什么冲突的简单插件比如这个 webdav ,就可以使用
1 |
sudo caddy add-package github.com/mholt/caddy-webdav |
来添加,添加之后重启 Caddy 即可:
1 |
sudo systemctl restart caddy |
如果还有其他插件,需要手动使用 XCaddy 编译时,就比较麻烦一点了
GO 安装
这边使用的是 amd64 的架构的,不一样记得换
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash # Get latest version Go from Google wget "https://dl.google.com/go/$(curl https://go.dev/VERSION?m=text).linux-amd64.tar.gz" -O go.linux-amd64.tar.gz tar -xvf go.linux-amd64.tar.gz # Move Go to the system directory sudo mv go /usr/local # Set up Go environment variables echo 'export GOROOT=/usr/local/go' >> ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> ~/.bashrc source ~/.bashrc |
XCaddy 安装
1 |
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest |
编译并替换原版
1 2 3 |
xcaddy build --with github.com/mholt/caddy-webdav sudo mv caddy /usr/local/bin/caddy sudo systemctl restart caddy |
配置 Caddyfile
首先确定 WebDAV 对应的目录,下文都写为 /path/to/dav
,然后确定密码,Caddyfile 中的密码是 hashed,可以通过 caddy hash-password
命令生成,记录生成出的密文。
一个标准的 Caddyfile 类似于这样:
1 2 3 4 5 6 7 |
example.com { tls mail@example.com root * /var/www/wordpress encode gzip php_fastcgi unix//run/php/php-version-fpm.sock file_server } |
我们要添加的是 webdav directive,并且要确保它的优先级在正确的位置。如果是上文这种配置,应该修改成这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
example.com { tls mail@example.com { # ensure webdav is before file_server order webdav before file_server } root * /var/www/wordpress encode gzip php_fastcgi unix//run/php/php-version-fpm.sock rewrite /webpath /webpath/ basic_auth /webpath/* { USERNAME THE_HASHED_PASSWORD } webdav /webpath/* { # webpath is the url you use in real application root /path/to/dav prefix /path/to/dav } file_server } |
保存后直接重启 Caddy ,如果不报错,服务端配置就结束了。
Zotero 验证
同步方式选 WebDAV,网址记得选 https,填上 example.com/webpath
填好用户名密码,验证服务器,通过就结束了,愉快享受同步扩容的结果。