前言

搭建一个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 模块

image.png

如上为已启用。

创建 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查看是否成功

在原本设置的端口号上访问对应路径即可。通常会弹出认证即之前设置的用户名密码。

结果如下:

image.png

Obsidian设置同步

image.png

如下存储成功

image.png