文章

解决Nextweb无法使用webdav同步功能

ChatGPT-next-web用了很久,虽然有点落伍,但是胜在简洁流畅,使用起来没什么难度,但是自从同步功能出现跨域漏洞以后,webdav功能基本是个摆设了,开发者提供的另一个Upstash同步,用着不怎么顺畅。刚好有白嫖的乌龟壳,顺手自己搭建一个webdav,问题就解决了,具体步骤如下:

搭建WebDAV服务器

编辑nginx配置文件:

1
2
3
4
5
6
7
8
9
10
11
    location /webdav {
        alias /var/www/webdav; # 目录位置可自定义
        dav_methods PUT DELETE MKCOL COPY MOVE; # 允许的方法
        dav_ext_methods PROPFIND OPTIONS; # 允许的扩展方法
        create_full_put_path on; # 允许自动创建文件路径
        dav_access group:rw all:r; # 权限设置
        autoindex on; # 开启目录列表

        auth_basic "WebDAV Access";
        auth_basic_user_file /etc/nginx/webdav.passwd;
    }

绑定域名开启 SSL 证书此处不多讲,随便一搜索就能找到很多教程,或者让chatGPT写个。

如域名是oksk.eu.org, webdav地址是:https://oksk.eu.org/webdav

生成用户名及密码

使用htppasswd生成:

1
sudo htpasswd -c /etc/nginx/webdav.passwd admin #admin就是用户名,可自随意算定。

按提示输入2次自己想要的密码完成设定。

创建目录和设置权限

进入 /var/www/, 创建目录及文件webdav。 此处目录可自定义,但同时要修改nginx配置上面的路径。

如果提示同步成功文件夹却没有文件,就是没有权限,运行以下命令之后,再同步即可解决。

1
2
sudo chown -R www-data:www-data /var/www/webdav  # 假设 Nginx 用户是 www-data
sudo chmod -R 775 /var/www/webdav  # 给予写入权限

ChatGPT-Next-Web 环境变量

在各种平台搭建的next-web,添加上环境变量后重部署后,才能使用webdav地址, 具体可以参考官方

添加环境变量:

1
WHITE_WEBDAV_ENDPOINTS=https://oksk.eu.org/webdav

面板设置

进入面板设置中,配置云同步页面里,勾选启用代理代理地址无效,可不填,保持空白

WebDAV地址填写上述nginx服务器的地址或域名,例如:https://oksk.eu.org/webdav

用户名及密码填写htpasswd命令时输入的用户名及密码。

填好以后检查还是不可用,不用管,直接同步就会成功。

Tips:常见错误及解决方法

1.sudo: htpasswd: command not found

这个错误信息表明你的系统中没有安装 htpasswd 命令。htpasswd 是 Apache HTTP 服务器的工具,用于创建和管理用于 HTTP 基本身份验证的用户密码文件。

解决步骤:安装 apache2-utils 包:

htpasswd 命令通常包含在 apache2-utils 包中。你需要安装这个包。

Debian/Ubuntu 系统:

1
2
sudo apt update
sudo apt install apache2-utils

CentOS/RHEL 系统:

1
sudo yum install httpd-tools

2.nginx: [emerg] unknown directive “dav_ext_methods”

原因是apt直接安装的nginx版本默认没有安装webdav模块,解决方法:

2-1.检查 Nginx 版本:

使用以下命令查看你的 Nginx 版本:

1
nginx -v

如果你的 Nginx 版本低于 1.13.10,那么你很可能没有 dav_ext_methods 指令。

2-2.升级 Nginx:

如果你的 Nginx 版本太旧,最好的办法是升级到最新版本。升级方法取决于你的操作系统和安装方式。

Debian/Ubuntu:

1
2
sudo apt update
sudo apt upgrade nginx

CentOS/RHEL:

1
sudo yum update nginx

其他系统: 请参考你所使用系统的 Nginx 升级文档。

2-3.安装nginx WEBDAV模块

Debian/Ubuntu:

1
sudo apt install nginx-extras

CentOS/RHEL:

1
sudo yum install nginx-module-dav

安装后,重新启动 Nginx。

本文由作者按照 CC BY 4.0 进行授权