ChatGPT-Next-Web 开发得粗糙且混乱。但是看在更新及时的份上,也就还在用……嗯,若有更好的解决方案,烦请推荐!

但是,如前文所述,WebDAV 无法同步的问题实在令人烦扰。我已经多次在清理浏览器缓存时丢失聊天记录和配置了。此外,若能在多设备间同步设置和历史记录,也会方便许多。

直到今天我看到这里,终于有了一个好的解决方案。

那么,完整的过程大致如下:

搭建 WebDAV 服务器

编辑 Nginx 配置文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
location /webdav {
    alias /var/www/webdav;  # 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;  # 使用 htpasswd 生成
}

创建目录和文件

进入 /var/www/webdav,创建目录及文件 chatgpt-next-web/backup.json

注意可能的权限问题。

面板设置

进入面板设置中的“配置云同步”页面,勾选“启用代理”。“代理地址”无效,可不填。

WebDAV 地址填写上述 Nginx 服务器的地址或域名,需要带上 /webdav 或你设置的其他路径。

用户名及密码填写执行 htpasswd 命令时设置的值。

ChatGPT-Next-Web 环境变量

添加环境变量:

1
- WHITE_WEBDAV_ENDPOINTS=https://your-domain/webdav/

这样就完成了。

此时“检查可用性”仍然失败,但是“同步”应该已经可以成功。

本文编辑时,ChatGPT-Next-Web 版本为 v2.15.8

Common Typo: WebDev → WebDAV

Alternative to htpasswd

1
openssl passwd -apr1

Then manually edit /etc/nginx/webdav.passwd:

1
username:$hash

仍存在的问题

1
dav_ext_methods PROPFIND OPTIONS;  # 允许的扩展方法

对于通过 aptdnf 安装的 Nginx,此模块可能未被编译,从而导致该指令报错。