前言
搭建一个WebDav用于存储Obsidian文件,借助 remotely save 插件来做到多端同步。
安装步骤
安装Nginx
sudo apt update
sudo apt install nginx -y
sudo apt install nginx-extras -y
分别是更新 apt 下载器,以及下载 nginx ,参数 -y 代表直接确认安装(正常会再询问一遍)
判断 WebDAV 是否已编译(可跳过)
nginx -V 2>&1 | grep --color=auto http_dav_module
检查是否已经编译并启用了 http_dav_module
模块
如上为已启用。
创建 WebDAV 目录
sudo mkdir -p /var/www/webdav
sudo chown -R www-data:www-data /var/www/webdav
sudo chmod -R 755 /var/www/webdav
- 语句一创建了目录在
/var/www/webdav
位置,作为 WebDAV 服务器的存储位置。 - 语句二修改目录的所有者,让 Nginx 进程(通常以
www-data
用户运行)拥有对/var/www/webdav
目录的完全控制权限,否则 WebDAV 可能无法正确读取/写入文件。 - 语句三让 所有者(www-data) 具备完全的访问权限(读、写、执行)
配置 Nginx WebDAV
sudo nano /etc/nginx/sites-available/webdav
对以上路径的文件进行配置
server {
listen 8080;
server_name localhost;
location /webdav {
root /var/www;
client_max_body_size 0;
autoindex on;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw all:r;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/webdav.passwd;
}
}
以上的参数解释如下:
- 监听
8080
端口,意味着 WebDAV 服务器将在http://localhost:8080
运行。可以自行修改。 root /var/www
:设置 WebDAV 的根目录为/var/www
,即 WebDAV 文件存储目录。(正是我们之前创建的目录)client_max_body_size 0
:限制上传最大限制,0为无限制,设置格式例如10M
autoindex on;
:启用目录列表功能,在访问/webdav
时,如果没有index.html
,则会列出该目录下的所有文件和文件夹。
WebDAV 相关配置
dav_methods PUT DELETE MKCOL COPY MOVE;
- 启用 WebDAV 的基本方法:
PUT
:上传文件DELETE
:删除文件MKCOL
:创建目录COPY
:复制文件/目录MOVE
:移动文件/目录
dav_ext_methods PROPFIND OPTIONS;
- 启用 WebDAV 的扩展方法:
PROPFIND
:获取资源属性(如文件大小、创建时间等)OPTIONS
:查询服务器支持的 HTTP 方法
create_full_put_path on;
- 允许
PUT
方法创建完整的文件路径,如果目标路径的父目录不存在,则会自动创建。
dav_access user:rw group:rw all:r;
- 定义 WebDAV 访问权限:
user:rw
:用户可以读写group:rw
:组用户可以读写all:r
:所有人(包括匿名用户)只能读取
身份认证
auth_basic "Restricted";
- 启用基本 HTTP 认证,并设置提示信息为
"Restricted"
。
auth_basic_user_file /etc/nginx/webdav.passwd;
- 指定存储用户名和密码的文件路径,该文件由
htpasswd
工具生成,下一步就会进行
配置用户认证
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/nginx/webdav.passwd 用户名
htpasswd 工具需要安装 apache2-utils
,用于生成用户名和密码,其路径在上面的配置文件中设置了,自定修改上述指令中的用户名
启用站点并重启 Nginx
sudo ln -s /etc/nginx/sites-available/webdav /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
将 /etc/nginx/sites-available/webdav
文件链接到 /etc/nginx/sites-enabled/
目录,使 WebDAV 配置文件生效。而后重启服务即可。
访问WebDAV查看是否成功
在原本设置的端口号上访问对应路径即可。通常会弹出认证即之前设置的用户名密码。
结果如下:
Obsidian设置同步
如下存储成功