nginx webdav

个人平常使用Zotero来阅读整理文献,这个软件默认提供了300M大小的同步空间,空间较小而且同步速度略慢。除了这个官方的网盘外,Zotero还开放了WebDav同步的接口,可以借助第三方网盘来同步数据。我搜索了一下,官方支持的第三方网盘有这些,这些基本服务器都在国外访问速度不佳,国内支持WebDav的网盘基本只有坚果云,我没有用过也不想为此再单独注册一个网盘。不过好在WebDav搭建很简单,所以我就服务器上自建了私人的WebDav网盘。下面是细节的配置过程。

安装依赖

个人服务器之前一直在使用nginx做端口转发,所以我就直接继续使用了。但基础的nginx并没有包含webdav相关的模块,所以还需要完整版:

1
sudo apt install nginx-full

nginx服务器配置

首先创建一个目录用来存放文件(使用www-data用户组)。

1
chown -R www-data:www-data /media/ExtHDD/zotero/
然后对nginx配置文件进行修改,默认的配置文件在/etc/nginx/sites-available/default,修改这个default文件,在server自己加入这么一部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
       location /zotero/ {  
               alias /media/ExtHDD/zotero/$remote_user/;
               dav_methods PUT DELETE MKCOL COPY MOVE;
               dav_ext_methods PROPFIND OPTIONS;
               dav_access user:rw group:rw all:rw;

               client_max_body_size 0;
               create_full_put_path on;
               client_body_temp_path /tmp/;

               auth_pam "Restricted";
               auth_pam_service_name "common-auth";
       }
这里我为了方便多人使用,直接通过服务器系统的用户名以及密码进行身份验证(没有另外生成用户名密码文件),所以需要把www-data加入shadow用户组:
1
sudo usermod -aG shadow www-data
接下来测试一下nginx服务器:
1
sudo nginx -t
如果没有问题重启一下nginx服务:
1
sudo systemctl restart nginx.service
理论上到这里webdav服务已经搭建成功了,在Zotero中输入自己的域名或者ip验证一下,发现没有问题可以正常使用。

如果有条件的话还是加个ssl证书提高一下安全性比较好,但我的服务器只有ip没有域名,所以也就没有配置ssl证书,只使用了http协议没有升级成https,这部分细节就不写了。

正在加载今日诗词....