Nextcloud
基于nextcloud搭建个人网盘
docker
使用docker搭建较为方便
docker run -d -p 80:80 --name nc nextcloud
然后就可以在浏览器访问了
如果希望将文件目录挂载到宿主机,可以加上 -v your-local-dir:/var/www/html/data
但是data目录并非只是文件存储的目录,其内容如下:
也就是说它其实会根据账户创建对应的文件目录,真正的文件是在该用户目录下的files目录下。但由于不确定后续会创建多少用户,故此处将整个data目录都挂载下来。
WebDAV
nextcloud支持WebDAV协议,该协议的一个好处就是可以将网盘像本地硬盘一样挂载到文件系统
先进入nextcloud的设置,找到WebDAV的url
在文件管理器中,鼠标右键点击此电脑——>映射网络驱动器
输入刚才复制的url,点击完成,稍等一会会弹出账号密码输入框,登录即可
然后就能看到该网盘,可以像在本地操作一样对其进行操作
注意事项
注1:需开启 webclient
服务才能使用WebDAV协议,否则无法连接网盘
开启方法:
使用管理员权限打开命令提示符窗口,输入:net start webclient
注2:windows10默认不支持http协议的WebDAV,否则也会出现无法连接的情况。修改注册表即可
然后重启一下webclient,再次尝试连接即可
文件大小限制
使用webdav复制文件出现如下错误
解决方案:
修改注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
其默认值为:50000000
第三方客户端
在windows下,使用webdav传输文件是没有进度条的,而且每次重启系统它还不会自动登录,也不会记住账户名和密码,总之就是有很多问题,但第三方客户端可以解决,推荐使用 raidrive
反向代理获取真实ip
如果使用反向代理的话nextcloud就会一直认为是网关那台机器在操作,从nextcloud的反向代理文档来看,它支持de facto标准,即会自动识别X-Forwarded-For
请求头(注:但是很奇怪,好像我测试好像只有X-Real-IP头才会识别)。所以解决方法就是在反向代理转发流量的时候把这个头带上并指向真实的ip。在Caddy中的配置如下:
xxx.woyou.cool { reverse_proxy { to http://nextcloud:80 header_up X-Real-IP {http.request.remote.host} # 关键:让nextcloud获取到实际的客户端ip。nextcloudh能自动获取该请求头以判断是否使用了反向代理 header_up X-Forwarded-For {http.request.header.X-Forwarded-For} header_up X-Forwarded-Port {http.request.port} header_up X-Forwarded-Proto {http.request.scheme} } # https://docs.nextcloud.com/server/28/admin_manual/configuration_server/reverse_proxy_configuration.html redir /.well-known/carddav /remote.php/dav 301 redir /.well-known/caldav /remote.php/dav 301}
关于Caddy的反向代理配置:https://caddyserver.com/docs/caddyfile/directives/reverse_proxy