关于我
~一个热爱火影的业余小提琴玩家~
Joynaruto
私人网盘搭建--NextCloud部署

前言

接着上篇的webdav服务器搭建,这次记一下搭建NextCloud网盘的搭建。基于我大天朝几大网盘的尿性,空间够大然而没会员支持就只能”上易下难”;又或是花了n天时间通过小水管上传的资料无端被和谐了 :cry:  :cry:  :cry:
所以有了这次的主角NextCloud小盆友 :mrgreen:

先贴下NextCloud的基本介绍:
NextCloud开源网盘简介 NextCloud是一款开源网络硬盘系统。 任何人都可以自由的获取NextCloud程序,在家庭或公司构建私有且免费的网络硬盘。 它是完全由你用户控制的私有、安全且功能完整的文件同步与共享解决方案。对,他是完全开源的哦 :idea:

安装

环境部署

因为我已经在vps上部署了wordpress,所以Apachemysql以及php都已经安装好了,并且ssl也已经配置完成~
具体的安装参见

下载主程序并解压

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.1.zip
unzip nextcloud-18.0.1.zip

移动文件夹并修改权限

cp -rf nextcloud /var/www
chown -R www-data:www-data /var/www

修改Apache配置文件

我这里已经配置好https,所以直接在/etc/apache2/sites-available/default-ssl.conf中加入如下代码:

	<VirtualHost _default_:443>   //自己的端口
		ServerAdmin webmaster@localhost
		ServerName xxx.com   //自己的域名
		DocumentRoot /var/www/html/nextcloud    //NextCloud的路径地址

		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined

		SSLEngine on
		SSLCertificateFile	/etc/apache2/ssl/主证书
		SSLCertificateKeyFile /etc/apache2/ssl/密钥证书
		SSLCertificateChainFile /etc/apache2/ssl/中间证书
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>

别忘了在/etc/apache2/ports.conf中也加入相应的端口,最后防火墙记得放行~

安装主程序

  1. phpMyadmin中新建数据库给NextCloud,然后在浏览器中输入http(s)://域名:端口号即可到主程序安装界面。
  2. 设定一个管理员账号和密码
  3. 填入NextCloud的数据库位置(这里面包括日后具体文件的存放位置,可以自定义到其他位置
  4. 连接上面在phpMyadmin中建立的数据库
  5. 回车等待安装完成(等待时间大概1分钟不到)

配置邮箱服务

邮箱服务的配置很简单,在基本设置--电子邮件服务器这里,填入如下图所示即可

之后如果忘记密码或者想要开放给朋友注册的话,就可以通过邮箱验证啦!

显示视频与PDF缩略图(2020.5.17更新缩略图显示方法)

默认安装完后只显示图片的缩略图,视频和PDF都不显示缩略图,需要通过FFmpegghostscript来让其显示。

#安装ffmpeg和ghostscript
apt install ffmpeg ghostscript
#编辑"/etc/ImageMagick-6/policy.xml"把默认阻止PDF显示缩略图的命令标记掉(靠近最后位置)
<!--  <policy domain="coder" rights="none" pattern="PDF" /> -->
#编辑"/var/www/html/nextcloud/config/config.php",在最后加入显示缩略图命令
  'enabledPreviewProviders' =>
   array (
     0 => 'OC\\Preview\\PNG',
     1 => 'OC\\Preview\\JPEG',
     2 => 'OC\\Preview\\GIF',
     3 => 'OC\\Preview\\HEIC',
     4 => 'OC\\Preview\\BMP',
     5 => 'OC\\Preview\\XBitmap',
     6 => 'OC\\Preview\\MP3',
     7 => 'OC\\Preview\\TXT',
     8 => 'OC\\Preview\\MarkDown',
     9 => 'OC\\Preview\\Movie',
    10 => 'OC\\Preview\\PDF'
   ),
#重启Apache2
service apache2 restart


效果如上

在线编辑office(2020.5.23更新)

这里我使用在线编辑office软件是onlyoffice,原因是他在完全兼容微软office格式文件,并同时强化了多人协同,被称为开源的office 365。我曾经是2年的office 365会员,在使用了几天onlyoffice后,我觉得他线上体验比office 365强很多,另外他在移动端的布局以及编辑,真的有惊艳到我!这边我采用的是群晖docker的安装方法:

  1. 在docker注册表中搜索onlyoffice,选中第一个onlyoffice/documentserver,版本一定要选择5.4.26,因为这是移动端能够在线编辑的最后一个版本。从5.5版本后官方就把移动端编辑的功能移除了开源版,移动端只能以只读方式打开文档,要付费入正才能解锁移动端编辑功能。
  2. 设置两个本地路径映射到docker中的两个卷
    #证书存储路径
    /docker/onlyoffice/crt ==>  /var/www/onlyoffice/Data
    #日志存储路径
    /docker/onlyoffice/log ==>  /var/log/onlyoffice
  3. docker做端口映射
    #映射80即可,443自动即可
    本地端口7000 ==>  容器端口80
  4. 运行容器,局域网中通过http://域名:端口即可访问onlyoffice的欢迎界面
  5. 由于nextcloud的onlyoffice插件强制要求https校验,所以还需配置onlyoffice的https
    • 在群晖的应用门户设置–反向代理中,添加一条新纪录如下图
    • 路由转发相应端口
    • 浏览器中输入https://域名:新端口,若出现小绿锁则表示https配置成功
  6. NextCloud的应用选项卡中,下载并启用onlyoffice插件
  7. onlyoffice设置中填入刚才的https://域名:新端口,点击保存后下方会出现大量可用文件选项,按需勾选
  8. 至此NextCloud+onlyoffice已经配置完成,网页端的加号中已经比原来多了几个office文档选项,配合NextCloudwebdav编辑文档,完美!


onlyoffice在PC端最终效果


onlyoffice在使用移动端编辑最终效果,要知道群晖的Drive在移动端可是只能看不能编辑的蛤 :oops:

硬盘挂载部分参考这里

后续一些问题

其实到这一步,已经可以正产使用了,但当点击设置概览的时候,他会检测出程序的一些环境问题。开始排雷= =。。。

问题1

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

解法:在/etc/apache2/apache2.conf中修改成如下即可

问题2

PHP内存限制低于建议值512MB

解法:/etc/php/7.2/apache2/php.ini中,修改memory_limit = 128Mmemory_limit = 512M即可

问题3

HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。为了提高安全性,建议参照security tips ↗中的说明启用HSTS。

解法:在/etc/apache2/apache2.conf中添加以下代码即可

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>

问题4

内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。

解法:

  1. 通过apt install php-apcu安装php-apcu
  2. 重启Apache服务
  3. 修改NextCloud/var/www/html/nextcloud/config/config.php,在配置文件最后加上'memcache.local'=>'\OC\Memcache\APCu',即可解决 !

问题5

  • 数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。您可以在 Nextcloud 运行时通过命令行手动执行 “occ db:add-missing-indices” 命令修复丢失的索引。索引修复后会大大提高相应表的查询速度。
    • 在数据表 “oc_calendarobjects_props” 中无法找到索引 “calendarobject_calid_index”。
    • 在数据表 “oc_schedulingobjects” 中无法找到索引 “schedulobj_principuri_index”。

解法:进入到NextCloud的网站目录,使用修复命令sudo -u www-data php occ db:add-missing-indices即可解决!

问题6

  • 该实例缺失了一些推荐的 PHP 模块。为提高性能和兼容性,我们强烈建议安装它们。
    •  intl
    • imagick

解法:安装intlimagick两个模块即可,代码如下:

apt install php-imagick
apt install php-intl

问题7

  • 数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改。该操作需要当整个实例变为离线状态后执行。查阅相关文档以获得更多详情。
    • mounts.storage_id
    • mounts.root_id
    • mounts.mount_id

解法:进入到NextCloud的网站目录,使用修复命令sudo -u www-data php occ db:convert-filecache-bigint,照提示输入”y”后即可解决!

问题8(2020.5.15在树莓派4b上安装碰到该问题)

  • 您的网页服务器未正确设置以解析“/.well-known/caldav”。更多信息请参见文档。
    您的网页服务器未正确设置以解析“/.well-known/carddav”。更多信息请参见文档。

解法:首先启用”sudo a2enmod rewrite”模块,然后在/etc/apache2/site-available/000-default.conf中加入以下即可

RewriteEngine On
RewriteRule ^/.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^/.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
RewriteRule ^/.well-known/webfinger /public.php?service=webfinger [QSA,L]
RewriteRule ^/.well-known/carddav /remote.php/dav/ [R=301,L]
RewriteRule ^/.well-known/caldav /remote.php/dav/ [R=301,L]

问题9 (2020.5.27更新)

在安装了Samba Server后我便现在局域网中通过smb来给NextCloud传文件,然而发现通过smb传输的文件在NextCloud中并不会显示,原因是因为NextCloud的数据路径都是保存在数据库中,而我直接通过smb传输的文件并没有记录在数据库中。

解法1——手动刷新:

#进入NextCloud目录
cd /var/www/html/nextcloud
#手动扫描所有变动文件
sudo -u www-data php occ files:scan --all
#扫描用户列表
sudo -u www-data php occ user:list
#扫描指定用户
sudo -u www-data php occ files:scan 用户名
#扫描指定目录
sudo -u www-data php occ files:scan --path="/joy/files/book"   //扫描用户joy下的book目录

解法2–自动刷新(推荐):

#编辑NextCloud配置文件
nano /vatr/www/html/nextcloud/config/config.php
#在末尾加上自动搜索命令
'filesystem_check_changes' => 1

上述7个问题9个问题是我在手动安装时候遇到的,全部解决后就能看到下图(啥都不说了,这个绿√真不容易啊 :oops:


2020年2月22日更新下使用体会

经过两天的使用和测试,我觉得NextCloud还是相当好用的,首先成熟的web端配合其附带的webdav协议挂载很方便,外加我测试了下他的自动上传功能也很棒,设定好后可以当在wifi环境下且手机处于充电🔋状态时自动备份相片和视频,传输速度也都跑满了家里的网速,另外文件也都存在自己的vps上,安全隐私和速度都有了保障 8-)

还有一点就是NextCloud的插件商店着实丰富:通过News可以订阅所有我喜欢的RSS源;而DeckTasks则可以把自己的日程安排的妥妥的;配合External storage support我甚至可以在上面挂载其他的webdav协议的网盘、本地盘或者一些其他传输协议的存储盘;最后通过Registration和其自带的邮件服务可以实现小伙伴们通过邮箱自己注册来实现多人共同协作!

综上!棒!

发表评论

textsms
account_circle
email

  • NextCloud的网站目录在那个路径下?

    2月前 回复
    • Joynaruto博主

      @都: 这个可以自定义,我放在/var/www/html/nextcloud中,然后在Apache2中修改路径即可

      2月前 回复

Joynaruto

私人网盘搭建--NextCloud部署
前言 接着上篇的webdav服务器搭建,这次记一下搭建NextCloud网盘的搭建。基于我大天朝几大网盘的尿性,空间够大然而没会员支持就只能"上易下难";又或是花了n天时间通过小水管上传的资料…
扫描二维码继续阅读
2020-02-20