【Cloudreve】正确地用Webdav服务把网盘挂在Windows上

news2024/12/23 23:16:06

Cloudreve是一款基于Web平台的在线云存储管理系统。它支持各种常见云存储服务(如Google Drive、OneDrive、Dropbox等)的管理和集成,用户可以通过Cloudreve将这些云存储服务连接起来,方便地管理自己的云存储文件。同时,Cloudreve还具有多用户管理和权限控制,支持文件分享、加密和防盗链等功能,可用于个人、企业等多种场景。

简单的来说,电脑上装个Cloudreve就变成一个可以做资源共享(云盘)的网站了,也能简单地直接让别的(局域网或外网)的电脑通过网络盘符映射的方式直接访问到资源。

它的功能很强大,其中一个比较受到大家关注的功能就是让其他局域网的Windows电脑直接访问的功能,Cloudreve是通过WebDAV协议实现的。

相信各位看到这文章,也是因为碰到WebDAV使用不成功的问题。那么,如何排查无法通过WebDAV访问网盘的问题呢?主要的问题有以下几点:

  1. Cloudreve服务器内的设置
    其实这个应该不是大家的最主要碰到的问题。Cloudreve中可以为每个用户组单独设置“是否允许使用WebDAV访问”的开关,但是这玩意儿默认是开启的,所以如果不小心关掉了,请打开它。
    在这里插入图片描述

  2. 确保需要连接的电脑可以被正确地访问到
    这点其实也比较好排查,主要是防火墙的问题,在Cloudreve运行的电脑上检查下端口是否被防火墙隔了,或者是直接建立一个简单的共享文件夹,看看是否可以从局域网其他电脑通过samba协议看到共享的文件即可,或者ping一下。一般来说也不会存在问题。

  3. Windows的资源管理器HTTPS协议及SSL证书问题
    这是最可能发生问题的点。下面详细展开讲。


解决由于证书和HTTPS协议导致的Cloudreve无法通过WebDAV协议问题


由于Windows系统内置的文件浏览器(也就是平时我们用来看文件那个)内置的WebDAV协议只支持https,但是Cloudreve是http服务,所以,无法直接添加到 “网盘/dav” 的网络映射。

有解决方案提出,需要在客户机电脑上对windows的注册表进行修改,使得其可以强行运行在http协议下,这种方案我没有测试过,也不是很推荐大家使用。

因为考虑到毕竟是网盘,局域网内还好,真是对外网开放的话,首先cloudreve不可能直接http裸奔,二来直接http传文件还是不够安全;所以,要做就做全了,而且通过nginx夹一层https也不是什么很复杂的事情。

下面就是windows系统下用nginx夹一层转发,使得其他windows电脑可以通过nginx开放的https接口链接到cloudreve服务器
在这里插入图片描述
步骤大致分这几个:

  1. 准备https协议所需要的证书
  2. 配置Nginx

以下操作均在服务器上操作完成。

在一切开始进行之前,请确保您的 Cloudreve服务 可以在网页浏览器上正常地通过http协议访问。

制作自己的证书

证书这里自然是要用自己建立的证书了,如果是买的证书,那么需要注意一个很重要的点:

Windows网盘上添加网络位置必须要与证书上声明的地址一致才可以。
这也是大部分无法WebDAV无法访问的另一个重要原因

如果你没有购买证书/不知道啥是证书,那么太棒了,请跟着以下步骤做,WebDAV肯定可以跑起来……

选一个好的位置,比如 D:\Certificates\文件夹,在菜单栏中执行“cmd”命令。
在这里插入图片描述
输入以下命令:

openssl req -x509 -newkey rsa:4096 -nodes -keyout my_root.pem -days 9999 -out my_root.crt

如果你提示 openssl 是一个未知命令…… 那么就去下载一个openssl并安装吧!

之后你将要输入一大堆东西,你可以输入一些奇怪的内容,但是这些内容将会存下来给其他任何访问你网盘的人看到,所以也别太奇怪了,下图中会有一些翻译来说明它们本应该是要填什么内容,但是既然是自建的证书嘛,这都无所谓啦。

在这里插入图片描述
这个命令将会创建一个2个文件,my_root.pemmy_root.crt。很好,别弄丢它们,一会儿要用到。

接下来,你需要输入另外两条命令,第一条是:

openssl genrsa -out server.pem 4096

这个会生成一个叫做server.pem的文件。然后在输入第二条命令:

openssl req -new -key server.pem -out server.csr

你又会被问到一堆问题,这次稍微会有一些不一样,它最后会问你输入一个“挑战性的密码”,这里,你可以完全不要挑战,两次回车,留空即可。

在这里插入图片描述
好了,你还剩2个步骤就可以结束这一切痛苦了。加油!

然后,用打开记事本,填入以下内容:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=IP:127.0.0.1,IP:123.222.211.198,DNS:localhost,DNS:www.goodweb.xyz

上述内容中,最后的 subjectAltName 一行需要根据具体部署的情况来进行更改。比如IP具体是多少,域名具体是什么,比如域名是 www.a123b.net,那就要改成

subjectAltName=IP:127.0.0.1,IP:123.222.211.198,DNS:localhost,DNS:www.a123b.net

而且这一行中可以不填写IP,也可以不填写DNS(域名),也可以只填写一个域名/IP。

假设你的域名是 www.abc.net , 服务器地址是 147.23.22.218
那么使用下面一行生成的证书只可以通过 https://www.abc.net/ 来访问(https://147.23.22.218/ 访问时则会提示证书问题,因为访问的方式和证书里声明的方式不一样)

subjectAltName=DNS:localhost

同样的,下面一行生成的证书则只认证通过https://147.23.22.218/的访问

subjectAltName=IP:147.23.22.218

可自由组合多个需要从其他电脑访问的方式,IP/DNS按照上述格式填写即可,用英文逗号分隔

记事本保存上述内容至当前的操作目录,起名字可以很随意,一般来说扩展名为 .ext。本例中就存了D:\Certificates\server.ext,这个文件名字一会儿用得到。

生成证书的最后一步,输入命令:

openssl x509 -req -CA my_root.crt -CAkey my_root.pem -in server.csr -days 9999 -extfile server.ext -out server.crt

其中 -extfile 参数后接的就是上一步记事本保存的ext文件。

最终,生成了我们在 Nginx 里需要用到的文件:server.crt

让我们在进行 Nginx 设置之前,回顾一下我们在这个证书步骤中干了什么,最终得到了什么:

  1. 通过一个命令,一次性生成了两个文件 my_root.pemmy_root.crt
  2. 通过另一个命令,生成了 server.pem
  3. 通过另一个命令,生成了 server.csr(用到了步骤2的文件)
  4. 打开记事本,输入了一堆内容,保存成为了 server.ext
  5. 通过一个命令,生成了 server.crt (用到了1、3、4里的文件)

最终,我们在 Nginx 中需要的是 server.pem (步骤2)和 server.crt(步骤5)。

配置Nginx

首先,需要安装一个Nginx。下面给出CSDN的 INSCODE AI 对于“如何在Windows系统下安装一个Nginx”这个问题的回答,感觉还蛮靠谱的:

以下是在 Windows 系统下安装 Nginx 的步骤:

  1. 下载 Nginx for Windows 程序包,可以从官方网站(http://nginx.org/en/download.html)或者其他安全可靠的网站下载。
  2. 解压缩下载的程序包到合适的目录中,比如 C:\nginx。
  3. 打开 C:\nginx 目录,运行 nginx.exe。Nginx 将会在后台运行。
  4. 打开浏览器,输入 http://localhost,可以看到 Nginx 的欢迎页面。
  5. 如果想要修改 Nginx 的配置文件,可以在 C:\nginx\conf 目录下修改 nginx.conf 文件。在修改后,需要重新启动 Nginx 服务,可以在 C:\nginx 目录下运行 nginx.exe -s reload 命令重启 Nginx。

如果在启动 Nginx 时遇到问题,可以在 C:\nginx 目录下运行 nginx.exe -t 命令,检查 Nginx 配置文件是否存在语法错误。
需要注意的是,在 Windows 系统下使用 Nginx 后,如果想要将其作为服务启动,需要安装 nssm 工具,具体操作可以参考:https://nginx.org/en/docs/windows.html#running-as-a-service-under-windows

打开 Nginx 的配置文件,一般都在nginx的可执行文件目录下的 conf文件夹下可以找到nginx.conf,也就是上述AI回答里的 第5条 中说明的配置文件。

建议将这个默认的配置文件在其他地方做个备份,免得出问题… 因为接下来你将会把里面的东西都删了,改换成我提供的内容:

worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    # HTTPS server
    server {
       listen       5213 ssl;
       server_name  ns-server;

       ssl_certificate      server.crt;
       ssl_certificate_key  server.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://127.0.0.1:5212;
            client_max_body_size 20000m;
       }
    }
}

其中,仔细观察 HTTPS server 注释行后面的内容。要依照具体情况改一些配置:

  1. listen 后的数字为端口号,也就是接受HTTPS请求的端口。ssl 这个单词别给删了。
    由于 Cloudreve 的默认端口是5212,如果你没有改过这个端口,那么我建议就直接使用5213端口做HTTPS的端口好了。也可以改成你自己喜欢的端口号,别与其他软件存在可能的冲突就好了。
  2. ssl_certificatessl_certificate_key 后的文件名就是刚刚证书生成的时候最终的结果里的两个文件,一个是 key(私钥),一个是 certificate(证书)。最后还要把刚刚生成的两个文件拷贝到这个ngnix.conf配置文件同一文件夹里。(我会在后面再提示你一遍的)
  3. location / 后的大括号内的内容:
    proxy_pass 表明是转发请求,后面是你本地部署的 Cloudreve 的访问地址,由于是本地,所以可以是 http://127.0.0.1:5212,也可以是 http://localhost:5212
    如果你更改过 Cloudreve 的运行端口,那么此处请对应更改端口号。
    此处为http,不是https,请注意检查。

改完 nginx.conf 文件之后,保存它,然后 server.pemserver.crt 两个文件拷贝到这个conf文件同文件夹下 (否则启动时会提示找不到证书文件)。

最后,在nginx可执行文件的目录下运行

nginx.exe -s reload

来重新加载配置文件。

让我们打开浏览器,访问:https://localhost:5213 (此时提示不受信任证书是正常现象,点接受风险并继续访问即可)

如果可以正常访问到 Cloudreve,那么恭喜你,已经要成功了。

接下来我们的工作就要转到想要用WebDAV连接到 Cloudreve 服务器的另外的电脑上面了。
在把屁股从椅子上挪开之前,还有一件事情,请 my_root.crt文件通过任何你喜欢的方式传到其他需要访问 Cloudreve 的电脑上,因为在这些电脑上还需要这个文件。

信任证书,并成功使用 WebDAV 连接到 Cloudreve !

下面的操作都将要在想要通过 WebDAV 连接至 Cloudreve 的电脑上进行(Windows系统)。

首先,相信你在这个电脑上已经有刚刚在证书创建过程中获得的 my_root.crt 文件了。(请注意,不是server.crt

双击这个文件,这时会弹出一个证书导入向导,里面可以看到你刚刚在证书创建过程中输入的一些文字,还说这个证书不受信任blablabla… 完全不用担心,这个证书是我们刚刚自己创建的,电脑还不咋认识它,现在我们要做的就是要让电脑相信这个我们自己创建的玩意儿。

点击“安装证书”,并将这个证书安装到“受信任的根证书”位置:
在这里插入图片描述
安装完成即可。

此时再打开浏览器去通过https访问 Cloudreve 服务器,浏览器应该不会再提示“不受信任的证书”的错误了。

最后就是按照 Cloudreve 的官方教程,打开“此电脑“,映射网络驱动器,添加位置为 https://www.abcde.net:5213/dav 即可!

恭喜你,你已经成功了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis7实战加面试题-高阶篇(Redlock算法和底层源码分析)

当前代码为8.0版接上一步 当前文档源码,接上一篇博客 Redis7实战加面试题-高阶篇(手写Redis分布式锁) 逐步深入,引入Redlock 自研一把分布式锁,面试中回答的主要考点 1.按照UC里面java.util.concurrent.locks.Lock接口规范编写…

【Linux】程序内获取文件系统挂载信息

Linux shell可通过查看/etc/mtab或者/proc/mounts文件来获取当前文件系统挂载信息,示例: 程序内读取/etc/mtab或者/proc/mounts,解析字符串较为繁琐,可以使用mntent提供的方便函数: FILE *setmntent(const char *file…

Linux下socketpair系统API调用使用说明

目录 1.socketpair函数说明 2.socketpair使用举例 在阅读nginx源码时,发现其调用socketpair来实现master和worker进程之间进行数据交互。其代码如下: 思考:master和worker进程是父子关系,有亲属关系的进程通过pipe/pipe2&#x…

Genio 500核心板,MT8385安卓核心板定制方案

Genio 500(MT8385)核心板搭载Arm Neon引擎的四核Arm Cortex-A73和Cortex-A53,提供必要的处理能力,可以通过2D/3D图形加速器进行增强,然后在高分辨率触摸屏显示器上进行可视化。为了提供先进的多媒体应用和服务&#xf…

电商后台管理项目vue3+express

目录 源码 1.系统功能设计 技术栈:采用前后端分离的开发模式前端:Vue3、Vue-router、Element-Plus、Axios、Echarts后端:Node.js、Express、Jwt、Mysql、Sequelize 2.项目初始化 打开cmd,输入vue ui(vue-cli版本要…

Java程序设计入门教程--日期类Date

java.util.Date类是一个简单的日期处理类,它包含了一些关于时间和日期的操作方法,精确到毫秒。它的常用方法如表所示: 方法 说明 public Date() 构造方法,分配 Date 对象并用当前时间初始化此对象,以表示分配它的时…

2023年6月DAMA-CDGA/CDGP数据治理认证你考了吗?

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

NUC980编译错误,arm-linux-gcc: Command not found

报错问题: make: arm-linux-gcc: Command not found /bin/sh: 1: arm-linux-gcc: not found dirname: missing operand 昨天编译的时候,还小甜甜,今天就牛夫人了。啥也没干啊! -----------------------------------------------…

亚马逊云科技与涂鸦智能持续赋能开发者,推动全行业的数智化创新

近几年,智能产品已渗透至人们生活的方方面面,IoT技术市场规模也随之获得较快增长,据IoT Analytics的数据,2023年IoT市场规模将增长19%,或成为经济波动周期的一大黑马赛道,但下游应用场景与需求的高度碎片化…

从零开始Vue3+Element Plus后台管理系统(17)——一键换肤的N种方案

暗黑模式 基于Element Plus和Tailwind CSS灵活的设计,我们很容易在项目中实现暗黑模式,具体可以参考之前的文章《从零开始写一个Vue3Element Plus的后台管理系统(二)——Layout页面布局的实现》 换肤方案 如果需要给用户提供更多主题,更丰…

【Android项目开发】聊天功能-主界面设计(对标企业需求)

文章目录 一、引言二、详细设计1、解决需求(1)图形问题(2)文本长度问题(3)时间转换问题 2、UI设计(1)主界面(2)适配器 3、Adapter适配器4、测试参数 三、附录…

龙芯2K1000实战开发-USB/PCIe/HDMI外设开发

文章目录 概要整体架构流程技术名词解释技术细节小结概要 提示:这里可以添加技术概要 本文主要针对2k1000的PCIE和USB外设的国产化设计 整体架构流程 提示:这里可以添加技术整体架构 使用2k1000自带的以太网pcie控制器,USB控制器。 考虑到龙芯没有HDMI接口,选用龙讯半…

从小白走向进阶:如何系统的学习it技术

无论是初学者还是有经验的专业人士,在学习一门新的IT技术时,都需要采取一种系统性的学习方法。那么作为一名技术er,你是如何系统的学习it技术的呢。 一、it技术介绍 1. Spring、SpringMVC、MyBatis、MyBatis-Plus、tkMapper,Spri…

分享一组真实的按钮

先看效果图&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>发光的按钮</title><style>* {border: 0;box-sizing: border-box;margin: 0;padding: 0;…

VMware ESXi 8.0U1a macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 8.0 Update 1a macOS Unlocker & OEM BIOS (标准版和厂商定制版) ESXi 8.0U1 标准版&#xff0c;Dell HPE 联想 浪潮 定制版 请访问原文链接&#xff1a; https://sysin.org/blog/vmware-esxi-8-u1-oem/&#xff0c;查看最新版。原创作品&#xff0c;转载请保…

pytorch实战 -- 初窥张量

张量的创建 张量&#xff08;Tensors&#xff09;类似于NumPy的ndarrays&#xff0c;但张量可以在GPU上进行计算。 所以从本质上来说&#xff0c;PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。 下面分别展示了0维张量到n位张量&#xff1a; im…

SVN客户端的下载和安装(图文超详细)

目录 0.准备工作 1.SVN客户端安装包安装 2.安装语言包 0.准备工作 博主安装环境&#xff1a;windows x86 SVN客户端下载地址&#xff1a;下载 SVN (tortoisesvn.net) 【下载地址中需下载符合电脑版本的安装包&#xff0c;以及语言包】 注&#xff1a;下载两个包后&#…

Linux操作系统相关介绍

目录 一、认识Linux 二、Linux特点总结 三、Linux版本 &#xff08;1&#xff09;Linux内核版 &#xff08;2&#xff09;Linux发行版 一、认识Linux • 1991年&#xff0c;芬兰的一名大学生Linus Torvalds开发了linux内核 • Linux是一种开放源代码的、自由的、免费的类…

Zookeeper面试这一篇就够了

谈下你对 Zookeeper 的认识&#xff1f; ZooKeeper 是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。 ZooKeeper 的目标就是封装好…

面试官:“你知道什么情况下 HTTPS 不安全么”

面试官&#xff1a;“HTTPS的加密过程你知道么&#xff1f;” 我&#xff1a;“那肯定知道啊。” 面试官&#xff1a;“那你知道什么情况下 HTTPS 不安全么” 我&#xff1a;“这....” 越面觉得自己越菜&#xff0c;继续努力学习&#xff01;&#xff01;&#xff01; 什麽是中…