本文适合有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元。
在完成云服务器租赁后,我们启动服务器,就可以进行服务器的配置了。我们先配置服务器环境:
$ sudo apt upgdate && sudo apt upgrade
然后就可以了。
Apache2与WebDAV配置
WebDAV是一个网络协议,所以不是一个专用的“软件”,而是会集成在各种服务中。
我们先安装Apache2:
$ sudo apt-get install -y apache2
然后再启动它的WebDAV服务:
$ cd ~$ sudo a2enmod dav$ sudo a2enmod dav_fs$ sudo systemctl restart apache2
接下来就是创建WebDAV所使用的目录路径(可自行更改)并修改权限:
$ sudo mkdir -p /var/www/webdav$ sudo chown -R www-data:www-data /var/www/webdav
然后我们为Zotero在WebDAV中创建一个账户(在此处账户名zotero)并设定密码,然后修改权限:
$ 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
即可:
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扩展:
$ sudo apt install certbot$ sudo apt install python3-certbot-apache
然后我们将上一节最后的/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
中(高亮部分记得修改):
<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模块并重启:
$ sudo a2enmod ssl$ sudo a2enmod rewrite$ sudo systemctl restart apache2
最后,我们使用CertBot进行HTTPS证书生成以及配置:
$ sudo certbot --apache -d your.domain.com
在Zotero中配置WebDAV
打开设置>同步>文件同步
,将同步方式从Zotero
更改成WebDAV
,然后按需输入相关配置:
配置好后点击右上角的同步即可通过WebDAV进行同步。
至此我们完成了全部配置。