解决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。