··

Zotero满了?试试WebDAV!

Tip

本文适合有NAS/有公网服务器又用Zotero阅读论文的读者。事实上,使用ZotFile+iCloud应该也能实现同步功能,但是我感觉没有那么原生就没继续研究。如果没有NAS与公网服务器,可以衡量下开销,毕竟Zotero的20刀一年3G应该也够很多人用了,服务器和NAS一般来说还是比这个服务贵的。

开始之前

先说说下文要用到的技术栈以及文章内容:

  • 云服务器+域名解析:读者自行完成,本文只做推荐不做解释;
  • 服务器配置:本文提供一个通用的Guide;
  • Apache2与WebDAV配置:本文提供粘贴可用的模板;
  • HTTPS配置:本文提供通过CertBot进行验证的方式,也是一键配置;
  • Zotero配置:本文提供Guide;

总的来说,本文基本就是一个WebDAV配置的walkthrough guide。不过也可以使用坚果云提供的WebDAV服务,直接配置Zotero,就不需要折腾了。

PS:避雷阿里云盘的“WebDAV服务”,它不能上传,只能下载。

云服务器、域名解析与服务器配置

首先我们要完成的是云服务器+域名解析,其中域名不解析,有公网IP也够用。对于云服务器租赁,我使用的是阿里云+学生优惠,1年2核1G+30G SSD一共108元。

在完成云服务器租赁后,我们启动服务器,就可以进行服务器的配置了。我们先配置服务器环境:

Terminal window
$ sudo apt upgdate && sudo apt upgrade

然后就可以了。

Apache2与WebDAV配置

Note

WebDAV是一个网络协议,所以不是一个专用的“软件”,而是会集成在各种服务中。

我们先安装Apache2:

Terminal window
$ sudo apt-get install -y apache2

然后再启动它的WebDAV服务:

Terminal window
$ cd ~
$ sudo a2enmod dav
$ sudo a2enmod dav_fs
$ sudo systemctl restart apache2

接下来就是创建WebDAV所使用的目录路径(可自行更改)并修改权限:

Terminal window
$ sudo mkdir -p /var/www/webdav
$ sudo chown -R www-data:www-data /var/www/webdav

然后我们为Zotero在WebDAV中创建一个账户(在此处账户名zotero)并设定密码,然后修改权限:

Terminal window
$ sudo htpasswd -c /etc/apache2/webdav.password zotero
$ sudo chown root:www-data /etc/apache2/webdav.password
$ sudo chmod 640 /etc/apache2/webdav.password

最后我们将以下内容写入/etc/apache2/sites-available/your.domain.com.conf 即可:

/etc/apache2/sites-available/your.domain.com.conf
Alias /webdav /var/www/webdav
<Location /webdav>
Options Indexes
DAV On
AuthType Basic
AuthName "webdav"
AuthUserFile /etc/apache2/webdav.password
Require valid-user
</Location>

然后重启Apache2:sudo systemctl restart apache2

在这之后,我们访问http://your-ip:80/webdav就能访问WebDAV服务了。

(可选,苹果用户必选)配置HTTPS

但是,如果你想用苹果移动设备(iPad、iPhone)上的zotero还是不能连接到这个WebDAV,因为他们只支持HTTPS访问。

那么我们继续。首先我们先安装CertBot以及它的Apache扩展:

Terminal window
$ sudo apt install certbot
$ sudo apt install python3-certbot-apache

然后我们将上一节最后的/etc/apache2/sites-available/your.domain.com.conf修改为如下所示:

/etc/apache2/sites-available/your.domain.com.conf
<VirtualHost *:80>
ServerName your.domain.com
# 可选:如果你只想做验证,可以设置 DocumentRoot 为任何可访问路径
DocumentRoot /var/www/html
# 可选:也可以把所有请求重定向到 HTTPS
# RewriteEngine On
# RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</VirtualHost>

然后添加HTTPS相关配置在/etc/apache2/sites-available/your.domain.com-le-ssl.conf中(高亮部分记得修改):

/etc/apache2/sites-available/000-default.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName your.domain.com
Alias /webdav /var/www/webdav
<Location /webdav>
Options Indexes
DAV On
AuthType Basic
AuthName "webdav"
AuthUserFile /etc/apache2/webdav.password
Require valid-user
</Location>
SSLEngine on
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/your.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your.domain.com/privkey.pem
# 可选:强制 HTTP 重定向到 HTTPS
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
</IfModule>

这之后,启用有关Apache模块并重启:

Terminal window
$ sudo a2enmod ssl
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

最后,我们使用CertBot进行HTTPS证书生成以及配置:

Terminal window
$ sudo certbot --apache -d your.domain.com

在Zotero中配置WebDAV

打开设置>同步>文件同步,将同步方式从Zotero更改成WebDAV,然后按需输入相关配置:

202507101717228

配置好后点击右上角的同步即可通过WebDAV进行同步。

202507101719977

至此我们完成了全部配置。