51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【好玩的项目】可能是史上最全的基于宝塔面板(海外版aapanel)的Nextcloud网盘搭建教程!

image-20220306112428686

介绍 {#介绍}

Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux 等各种平台,也提供了网页端以及 WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。

今天我们从零开始来搭建一个Nextcloud网盘,搭建其实很简单,所以也会多介绍一些搭建完成之后,安全与设置警告报错信息的解决方法。

优点 {#优点}

  • 功能丰富,社区生态丰富
  • 遇到问题容易在网上找到解决方案
  • 高速(直链下载速度起飞,与服务器带宽有关)
  • 私密(自己全权管理所有文件)
  • 稳定(不存在服务商关闭网盘服务的问题)
  • 实现了PC、iPhone、iPad三端自动同步
  • 可以直接编辑云端的文件(代码文件也直接查看编辑)

缺点 {#缺点}

  • 不够轻量,而且比较吃服务器资源(内存等),服务器的硬盘容量通常不大(多为几十G,不适合做仓库盘)
  • 后续配置比较复杂私有云盘需要自己维护(出现各种问题就很糟心)

之前搭建的网盘:告别百度网盘,安装自己的专属网盘------Cloudreve,不限制下载速度!

  1. 项目展示 {#1-项目展示}

GitHub项目地址:https://github.com/nextcloud

Demo:https://try.nextcloud.com

  1. 搭建环境 {#2-搭建环境}

  • 服务器:腾讯香港轻量应用服务器24元/月VPS一台(最好是选非大陆的服务器)(购买链接
  • 系统:Debian 10(DD脚本 非必需DD用原来的系统也OK)
  • 域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 【非必需】安装好Docker、Docker-compose(相关脚本
  • 安装好宝塔面板海外版本aapanel,并安装好Nginx(安装地址
  • 【非必需】安装好Nginx Proxy Manager(相关教程
  1. 搭建视频 {#3-搭建视频}

YouTube:待补充

哔哩哔哩:待补充(心态发生了问题,自己已经安装好了,演示视频的时候安装一直提示"内部服务器错误",搜索了很多内容,依旧无法解决,玄学 =,=)

  1. 搭建方式 {#4-搭建方式}

参考------新买了一台服务器"必须"要做的6件小事:

apt update -y  # 升级packages
`apt install wget  #如果出现 wget:command not found,可以用这个命令安装
`

Debian宝塔海外版安装命令:

wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh forum

遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。

在选择安装LNMP过程中,可以先去把域名解析到服务器上先~

等待半小时左右,LNMP基本都能安装完成。

Nextcloud官方下载地址:https://nextcloud.com/install/#instructions-server image-20220306124301857

  1. 开始搭建(以宝塔安装为例子) {#5-开始搭建以宝塔安装为例子}

Docker搭建参考:https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/postgres/fpm/docker-compose.yml

不是很推荐用Docker搭建,因为Nextcloud后续配置会 image-20220306163844059

远程下载:https://download.nextcloud.com/server/releases/nextcloud-23.0.2.zip

image-20220306163952402

修改权限:宝塔面板------文件------找到/www/wwwroot路径,将Nextcloud整个网站目录的权限由755修改为775(不设置打开网址会报"内部服务器错误"的问题)

  1. 安全与设置警告排错(重点,适用于宝塔面板) {#6-安全与设置警告排错重点适用于宝塔面板}

6.1 Nextcloud性能优化 {#61-nextcloud性能优化}

6.1.1 使用APCu和Redis内存缓存 {#611-使用apcu和redis内存缓存}

通过使用内存作为数据缓存的话,可以提高Nextcloud的性能,以加快访问速度,并且Nextcloud支持多个内存缓存后端,如APCuRedis,其他的缓存后端配置请参阅:Nextcloud内存缓存优化的官方文档

[1] 安装PHP的APCu+Redis扩展

在宝塔面板的首页处,找到PHP并点开,在安装扩展处安装redisapcu

[2] 配置APCu和Redis

安装完毕后,打开/www/wwwroot/域名/config/config.php,在其尾部添加以下代码:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
	'host' => '127.0.0.1',
	'port' => 6379,
],
'memcache.locking' => '\OC\Memcache\Redis',

6.1.2 开启PHP OPcache {#612-开启php-opcache}

通过安装OPcache扩展,也可以在一定程度上提升PHP的性能。

在宝塔面板的首页处,找到PHP并点开,在安装扩展处安装OPcache

6.1.3 官方推荐的PHP扩展 {#613-官方推荐的php扩展}

官方推荐的其他PHP扩展:fileinfogmpimagick,安装完上述扩展及设置后,重载PHP配置并重启PHP服务。

咕咕在自己的Netcup上出现了gmp扩展模块安装不上的情况,参考了宝塔论坛的教程,

该问题是因为操作系统未安装libgmp3-dev软件包导致,建议宝塔的自动安装脚本修复该问题,自动检测这个软件包的状态和自动安装该软件包。

具体命令是:

apt install libgmp3-dev -y

之后再到php这边点击gmp模块安装,就能安装成功了。

6.1.4 文件扫描 {#614-文件扫描}

有时候,我们直接使用Linux命令,如:wgetcurl等命令直接下载文件到服务器内Nextcloud里的用户目录,但是用户登录Nextcloud却并没有显示,怎么办?
我们可以使用PHP配合Nextcloud命令,来自动扫描文件:

sudo -u www php occ files:scan --all
Copy

其中:

  • 命令使用需要在Nextcloud根目录下
  • 需要使用sudo -u命令提权到www用户(即:Nginx用户)

扫描文件夹

扫描文件夹

6.1.5 后台任务优化 {#615-后台任务优化}

Nextcloud的后台任务,默认是使用Ajax异步方法进行后台任务,即在每次访问Nextcloud任意页面都会通过AJAX的方式发起定时任务的执行请求,这种方式如果没有自己的独立服务器或者VPS的话还是比较方便省心的,但官方推荐使用Cron和Nginx或Apache等WEB服务独立开来,互不影响

后台任务

后台任务

为了使用Cron,我们需要用到Linux的定时任务。
SSH连接服务器后,输入:

crontab -e

创建一个Cron任务,并使用正则表达式:

*/5 * * * * sudo -u www php /PathToNextcloud/cron.php

保存即可。

当然,如果你用宝塔面板,也可以直接使用宝塔自带的控制面板,设置定时任务:
宝塔设置定时任务

宝塔设置定时任务

6.2 安全及设置警告问题排查 {#62-安全及设置警告问题排查}

打开Nextcloud的设置------概览------安全及设置警告,可以看到检测出的一些问题,下面我们将对其逐一排查解决。

[1] PHP 的安装似乎不正确,无法访问系统环境变量。getenv("PATH") 函数测试返回了一个空值。

宝塔面板------首页的PHP------FPM配置文件,在其尾部添加一行:

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin

注:该配置文件的位置为/www/server/php/php版本号/etc/php-fpm.conf

[2] 您的网页服务器未正确设置以解析"/.well-known/caldav"、"/.well-known/carddav、/.well-known/webfinger、/.well-known/nodeinfo"

宝塔面板------网站------设置------配置文件,在server里添加如下两行:

rewrite /.well-known/carddav /remote.php/dav permanent;
rewrite /.well-known/caldav /remote.php/dav permanent;

打开伪静态,加入这段:

location = /.well-known/webfinger {
     return 301 $scheme://$host:$server_port/index.php/.well-known/webfinger;
    }

    location = /.well-known/nodeinfo {
    return 301 $scheme://$host:$server_port/index.php/.well-known/nodeinfo;
    }




之后保存即可。

[3] 数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。

Step1:临时修改一下config.php的权限,然后切换到occ的目录下(即cd /www/wwwroot/域名)

Step2:执行以下命令即可:

sudo -u www php occ db:convert-filecache-bigint

[4] HTTP的请求头 "Strict-Transport-Security" 未设置为至少 "15552000" 秒. 为了提高安全性,建议启用HSTS

宝塔面板------ 网站------文件------找到/www/server/panel/vhost/nginx/yourdomain.conf文件------在末尾的'}'前加入如下代码:

add_header Strict-Transport-Security "max-age=15768000;preload;";

[5] PHP configuration option output_buffering must be disabled

宝塔面板------首页的PHP------配置文件------搜索"output_buffering",在默认配置output_buffering = 4096前加个分号(php的注释)

;output_buffering = 4096

6.3 Nextcloud常见问题 {#63-nextcloud常见问题}

6.3.1 解决大文件上传问题 {#631-解决大文件上传问题}

Step1:修改php.ini上传文件大小限制

宝塔面板------文件------打开/www/server/php/PHP版本号/etc路径------打开php.ini文件,搜索修改以下配置:

max_execution_time = 0     #默认是300秒,改为0,表示没有上传时间限制
post_max_size = 10800M     #设定POST数据所允许的最大大小
upload_max_filesize = 10240M  #表示所上传的文件的最大大小

Step2:修改nginx.conf的文件大小限制

宝塔面板------文件------打开/www/server/nginx/conf/路径------打开nginx.conf,修改的内容如下:

client_max_body_size 10240M;

Step3:修改连接超时时间限制(同步大文件时可能会超过默认的60s连接超时时间,导致连接关闭。报错为:Connection closed)

keepalive_timeout 3600;

Step4:重启php和nginx服务,然后进行测试,大文件可以成功上传了。

6.3.2 解决同步时423错误的问题 {#632-解决同步时423错误的问题}

问题描述:使用Nextcloud同步资料时,意外遇到了423错误,文件被锁定,怎么都传不上去。

解决办法:宝塔面板------文件------打开/www/wwwroot/域名/config路径,找到config.php文件,添加一句'filelocking.enabled' => false,即可。

6.3.3 Nextcloud退出维护模式 {#633-nextcloud退出维护模式}

问题描述:升级NextCloud后一直处于维护状态,无法自动解除。

解决办法:宝塔面板------文件------打开/www/wwwroot/域名/config路径,找到config.php文件,把'maintenance' => true改为 false,或者直接删掉这句即可。

  1. Nextcloud基本使用 {#7-nextcloud基本使用}

7.1 Nextcloud基本设置 {#71-nextcloud基本设置}

Chrome打开https://域名地址,进去之后点击头像下的设置,根据自己的习惯进行配置即可。

Nextcloud用户界面

同步冲突处理:使用Everything搜索conflicted copy文件并删除(Everything可以添加书签)

7.2 Nextcloud客户端 {#72-nextcloud客户端}

全平台客户端下载:Nextcloud官网传送门(如果服务器端太老,可能会用不了新版的客户端,下载适合的版本即可)

客户端的使用和配置

  • Win端:网页端授权登录,安装exe后设置开机自启、文件夹同步。
  • iOS、iPadOS端:App Store直接搜索下载Nextcloud即可(点击下面的"改用旧的登录方式",输入服务器地址、用户名、密码)

7.3 Nextcloud的WebDAV功能 {#73-nextcloud的webdav功能}

NextCloud 支持 WebDAV 协议,用户可以完全通过 WebDAV 来连接并同步文件。虽然官方还是推荐 使用客户端来同步文件,不过如果要临时访问 NextCloud 上的文件,使用 WebDAV 方式还是很便捷的。

打开Nextcloud网页登录后,单击设置,复制WebDAV下的URL地址:

Nextcloud的WebDAV

使用WebDAV连接时的用户名和密码就是登录Nextcloud的用户名和密码。

注:可以用WebDAV功能给一些第三方软件实现全平台同步的功能。

  1. 结尾 {#8-结尾}

祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。

咕咕上期还搭建了一个网盘直链程序,相比Nextcloud,它搭建更加容易(docker一条命令搞定),升级也非常简单,支持的网盘也更多,UI也非常漂亮。

相关代码都在博客里:https://blog.laoda.de/archives/docker-install-alist

参考资料 {#参考资料}

好朋友的Mintimate的博客:https://mintimate.cn/2021/02/20/deployNextcloud/

Nextcloud 21 使用笔记 - 系统要求及警告排除:https://www.cnswiz.com/3376.html

VPS搭建Nextcloud私有云盘 | Eulaの小破站:https://www.eula.club/VPS%E6%90%AD%E5%BB%BANextcloud%E7%A7%81%E6%9C%89%E4%BA%91%E7%9B%98.html

附: {#附}

1、内部错误和警告的解决方法 {#1内部错误和警告的解决方法}

一些常见Nextcloud内部错误解决方法,建议使用浏览器搜索功能进行定位

1)您的安装没有设置默认的电话区域。这对验证配置设定中没有国家代码的电话号码而言是必需的。要允许没有国家代码的电话号码,请添加带区域相应的 ISO 3166-1 code ↗ 的"默认_电话_区域"到你的配置文件中。

在网站配置文件(如:/www/wwwroot/nextcloud.laoda.de/config/config.php)中添加如下代码后保存即可:

'default_phone_region' => 'CN',

image-20220306111019819

2)通过HTTP访问网站不安全。强烈建议您将服务器设置成要求使用HTTPS协议

这个问题最好解决,同时也可能是无法解决问题:
服务器绑定域名,并配置SSL证书,域名解析到服务器即可
但是:
国内服务器需要绑定备案的域名,若无备案域名,则只能使用IP访问Nextcloud,那么该条警告无法去除。

3)一些文件没有通过完整性检查. 了解如何解决该问题请查看我们的文档. (无效的文件列表... / 重新扫描...)

无效文件

无效文件

你的无效的文件列表和我的可能不一样,但是方法是一样的,打开(无效的文件列表... / 重新扫描...)这个链接:
无效文件详情无效文件详情
上面提示的这些文件需要删除,所以打开nextcloud的安装地址,也就是Nginx所代理的网站更目录,删除"提示的无效文件"即可:
删除无效文件删除无效文件
如果你使用宝塔面板,可以进入宝塔面板后台,然后使用宝塔的图形界面删除无效文件。如果你熟悉Linux命令,可以使用rm命令删除:
使用命令删除无效文件使用命令删除无效文件

4)PHP configuration option output_buffering must be disabled

其实这个很好解决,PHP默认是有4096字节缓冲的。但是Nextcloud希望你关闭。如果你是自己安装的PHP,在你安装PHP的路径下,打开PHP配置文件(php.ini),将要

output_buffering = 4096
Copy

改为:

; output_buffering = 4096
Copy

;为PHP的注释符号
如果你是根据上文,使用宝塔安装配置的php,更简单了。在宝塔面板,依次打开:软件商店-已安装-PHP7.3设置-配置文件
查找文本output_buffering,并在前面加上;注释:
加上注释

加上注释

之后,可能需要重载PHP配置或者重启PHP服务才能生效。再次查看Nextcloud概述,就没有这条警告了。

5)您的数据目录和文件可以从互联网直接访问。.htaccess文件不起作用。强烈建议您配置Web 服务器,以便数据目录不再可访问,或者您可以将数据目录移动到 Web服务器文档根目录。

这个其实是Nginx的问题,为了进一步提升安全性,我们打开Nginx网站设置:
宝塔内网站Nginx设置

宝塔内网站Nginx设置

在location内的禁止访问目录内,加入data目录。
加入data目录加入data目录

6)PHP 的安装似乎不正确,无法访问系统环境变量。getenv("PATH") 函数测试返回了一个空值

这个处理方法很简单;如果你是自己安装配置的PHP,一般不会出现这个问题,当时如果是使用宝塔安装,一般都会有这个问题,解决方法很简单:
在宝塔面板,依次打开:软件商店-已安装-PHP7.3设置-FPM配置文件
在文末添加:

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin
Copy

添加配置

添加配置

之后,可能需要重载PHP配置或者重启PHP服务才能生效。

7)您的网页服务器未正确设置以解析。更多信息请参见文档

这个处理方法很简单,简单地说,设置Nginx即可。如果你的Nginx是宝塔安装的,那么打开网站的Nginx:
打开Nginx设置

打开Nginx设置

之后追加以下内容:

rewrite /.well-known/carddav /remote.php/dav permanent;
rewrite /.well-known/caldav /remote.php/dav permanent;
Copy

追加内容

追加内容

打开伪静态,加入这段:

location = /.well-known/webfinger {
     return 301 $scheme://$host:$server_port/index.php/.well-known/webfinger;
    }

    location = /.well-known/nodeinfo {
    return 301 $scheme://$host:$server_port/index.php/.well-known/nodeinfo;
    }




之后保存即可

2、PHP模块问题 {#2php模块问题}

PHP模块问题包括:

  • 未找到PHP的"fileinfo"模块。强烈推荐启用该模块,从而获得更好的MIME类型探测结果。
  • 内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档。
  • PHP的OPcache模块未载入。推荐开启获得更好的性能。

PHP模块问题

PHP模块问题

安装如下模块:
安装的模块-01安装的模块-01
安装的模块-02安装的模块-02

咕咕在自己的Netcup上出现了gmp扩展模块安装不上的情况,参考了宝塔论坛的教程,

该问题是因为操作系统未安装libgmp3-dev软件包导致,建议宝塔的自动安装脚本修复该问题,自动检测这个软件包的状态和自动安装该软件包。

具体命令是:

apt install libgmp3-dev -y

之后再到php这边点击gmp模块安装,就能安装成功了。

同时,因为使用Redis作为缓冲,所以我们需要打开Nextcloud的配置文件,追加以下内容:

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
  'host' => 'localhost',
  'port' => 6379,
  ),

1、数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复

这个因为我之前修复了,所以我的警告和错误列表没有提示。如果你有报这条警告,直接运行:

php occ db:add-missing-indices
Copy

但是注意文件夹所属的用户组,比如:你Terminal上使用的是root或者Ubuntu用户,那么就需要用sudo提权

sudo -u php occ db:add-missing-indices

sudo提权运行

赞(0)
未经允许不得转载:工具盒子 » 【好玩的项目】可能是史上最全的基于宝塔面板(海外版aapanel)的Nextcloud网盘搭建教程!