前言
接着上篇的webdav服务器搭建,这次记一下搭建NextCloud
网盘的搭建。基于我大天朝几大网盘的尿性,空间够大然而没会员支持就只能”上易下难”;又或是花了n天时间通过小水管上传的资料无端被和谐了
所以有了这次的主角NextCloud
小盆友
先贴下NextCloud
的基本介绍:
NextCloud
开源网盘简介 NextCloud
是一款开源网络硬盘系统。 任何人都可以自由的获取NextCloud
程序,在家庭或公司构建私有且免费的网络硬盘。 它是完全由你用户控制的私有、安全且功能完整的文件同步与共享解决方案。对,他是完全开源的哦
安装
环境部署
因为我已经在vps上部署了wordpress
,所以Apache
、mysql
以及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
中也加入相应的端口,最后防火墙记得放行~
安装主程序
- 在
phpMyadmin
中新建数据库给NextCloud
,然后在浏览器中输入http(s)://域名:端口号
即可到主程序安装界面。 - 设定一个管理员账号和密码
- 填入
NextCloud
的数据库位置(这里面包括日后具体文件的存放位置,可以自定义到其他位置 - 连接上面在
phpMyadmin
中建立的数据库 - 回车等待安装完成(等待时间大概1分钟不到)
配置邮箱服务
邮箱服务的配置很简单,在基本设置--电子邮件服务器
这里,填入如下图所示即可
之后如果忘记密码或者想要开放给朋友注册的话,就可以通过邮箱验证啦!
显示视频与PDF缩略图(2020.5.17更新缩略图显示方法)
默认安装完后只显示图片的缩略图,视频和PDF都不显示缩略图,需要通过FFmpeg
和ghostscript
来让其显示。
#安装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
的安装方法:
- 在docker注册表中搜索
onlyoffice
,选中第一个onlyoffice/documentserver
,版本一定要选择5.4.26
,因为这是移动端能够在线编辑的最后一个版本。从5.5
版本后官方就把移动端编辑的功能移除了开源版,移动端只能以只读方式打开文档,要付费入正才能解锁移动端编辑功能。 - 设置两个本地路径映射到
docker
中的两个卷#证书存储路径 /docker/onlyoffice/crt ==> /var/www/onlyoffice/Data #日志存储路径 /docker/onlyoffice/log ==> /var/log/onlyoffice
- 给
docker
做端口映射#映射80即可,443自动即可 本地端口7000 ==> 容器端口80
- 运行容器,局域网中通过
http://域名:端口
即可访问onlyoffice
的欢迎界面 - 由于nextcloud的
onlyoffice
插件强制要求https校验,所以还需配置onlyoffice
的https - 在
NextCloud
的应用选项卡中,下载并启用onlyoffice
插件 - 在
onlyoffice
设置中填入刚才的https://域名:新端口
,点击保存后下方会出现大量可用文件选项,按需勾选 - 至此
NextCloud+onlyoffice
已经配置完成,网页端的加号中已经比原来多了几个office
文档选项,配合NextCloud
的webdav
编辑文档,完美!
onlyoffice
在使用移动端编辑最终效果,要知道群晖的Drive
在移动端可是只能看不能编辑的蛤
硬盘挂载部分参考这里
后续一些问题
其实到这一步,已经可以正常使用了,但当点击设置概览的时候,他会检测出程序的一些环境问题。开始排雷= =。。。
问题1
您的数据目录和文件可以从互联网直接访问。.htaccess 文件不起作用。强烈建议您配置 Web 服务器,以便数据目录不再可访问,或者您可以将数据目录移动到 Web 服务器文档根目录。
解法:在/etc/apache2/apache2.conf
中修改成如下即可
问题2
PHP内存限制低于建议值512MB
解法:在/etc/php/7.2/apache2/php.ini
中,修改memory_limit = 128M
为memory_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
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。
解法:
- 通过
apt install php-apcu
安装php-apcu
- 重启
Apache
服务 - 修改
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
解法:安装intl
和imagick
两个模块即可,代码如下:
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个问题是我在手动安装时候遇到的,全部解决后就能看到下图(啥都不说了,这个绿√真不容易啊
2020年2月22日更新下使用体会
经过两天的使用和测试,我觉得NextCloud
还是相当好用的,首先成熟的web端配合其附带的webdav
协议挂载很方便,外加我测试了下他的自动上传功能也很棒,设定好后可以当在wifi环境下且手机处于充电🔋状态时自动备份相片和视频,传输速度也都跑满了家里的网速,另外文件也都存在自己的vps上,安全隐私和速度都有了保障
还有一点就是NextCloud
的插件商店着实丰富:通过News
可以订阅所有我喜欢的RSS源
;而Deck
和Tasks
则可以把自己的日程安排的妥妥的;配合External storage support
我甚至可以在上面挂载其他的webdav
协议的网盘、本地盘或者一些其他传输协议的存储盘;最后通过Registration
和其自带的邮件服务可以实现小伙伴们通过邮箱自己注册来实现多人共同协作!
综上!棒!
发表回复