


经过前面的操作,NextCloud已经可以正常使用了,但是认真使用的小伙伴们肯定发现还有些不尽如人意的地方,比如在NextCloud的设置-概览中还会有警告信息。我们接下来就来处理下这些问题。

几条警告
这个警告处理起来很简单,上面写的已经很明确了,只要在nginx的配置文件上修改下就好了。nextcloud容器里的nginx配置文件中是有这个配置的,只不过注释掉了,我们取消注释即可。
修改文件(对应的是我之前所有操作的路径)/AppData/nextcloud/config/nginx/site-confs/default的第20行左右,取消add_header Strict-Transport-Security "max-age=15768000;这行的注释。
保存后重启容器。
这两条警告的出现原因,主要是因为nginx端口设置的问题。如果你在设置反向代理的时候也是用的80和443端口,那么就不会出现这个问题。
解决这个问题有两个思路:1.直接修改配置文件中关于这两条的解析中的地址;2.修改nextcloud容器、swag容器两个容器里的nginx的端口统一。
很明显,方法1简单粗暴。
修改文件同样是/AppData/nextcloud/config/nginx/site-confs/default
45到59行,这5个地址我们都改下,直接把$server_port修改为我使用的8888端口

修改端口
保存文件,重启容器。

所有检查已通过
到此为止,终于看到了这个可爱的绿色。
上面的这两个问题,是用我这种部署方式最常遇见的警告,如果要是直接在系统搭建服务来部署nextcloud那则会遇到php版本、php模块的各种问题,处理起来就相对复杂些。
所以,用这种docker的方式部署nextcloud应该是目前最简单快捷的方式。
在使用过程中,必定会遇到升级的情况。升级可以采用两种方式:1.在nextcloud设置页面中升级(有新版本会提示);2.升级docker镜像,停止容器,删除容器,拉取最新的镜像,然后以同样的参数部署容器。
我一般是使用方法1进行升级,但升级后如果遇到提示php版本、模块等问题时再采取方法2升级。
在使用方法2升级的时候,可能会遇到登陆后直接报错的情况。遇到这种情况也不要慌,查看log文件(/AppData/nextcloud/data/nextcloud.log),在log中搜索页面上提示的reqId,就能定位到具体的问题。log是json格式,可以使用json格式化工具方便查看(https://www.bejson.com/jsoneditoronline/)。下面就举一个我遇到的例子。
这个问题是在log文件中定位的

HMAC does not match.
在官方论坛中也有人遇到这个问题,也提供了解决方案(https://help.nextcloud.com/t/hmac-does-not-match/56900/3)

解决方案
我们利用Portainer管理工具,直接打开容器界面,进入容器内的终端操作

进入容器终端

以root身份连接
而后就跟我们正常的终端一样了,我们来到/config/www/nextcloud目录下,使用"sudo -u abc php ./occ files:scan-app-data"命令进行修复。

./occ files:scan-app-data
修复完成后,我们就能正常使用了。
有一部分的自定义设置,需要在nextcloud配置文件中完成。配置文件位置/AppData/nextcloud/config/www/nextcloud/config/config.php同目录下也有一个对应的sample文件,里面有详细的说明。config.php中储存了包括了数据库信息以及反向代理的各种重要设置。我们这次主要就说下面这几个比较常用的。
'default_language' => 'zh',
'force_language' => 'zh',
这两个应该一下就能看明白,关于语言的设置,一个是默认语言,一个是强制使用某种语言。采用的是ISO_639-1 language codes(https://www.iso.org/iso-639-language-codes.html)
'default_locale' => 'zh_CN',
'force_locale' => 'zh_CN',
这两个是默认地区和强制地区的设置
'proxy' => '',
这个是代理设置,如果自己的网络环境不好导致无法访问nextcloud商店和下载更新,可以使用这个设置,使nextcloud能顺利访问

大家会发现现在如果全名设置的是中文,那么头像就会变成这种小方块。这主要是因为这里面没有中文字体,我们手动添加一下即可。首先我们先找一个字体,我用思源宋体(大家可以去系统的字体文件夹去复制出来字体文件)SourceHanSerifSC-Bold.otf。至于字体格式大家也可以试试别的。
字体上传到/AppData/nextcloud/config/www/nextcloud/core/fonts/SourceHanSerifSC-Bold.otf
修改文件/AppData/nextcloud/config/www/nextcloud/lib/private/Avatar/Avatar.php
其中152行和187行分别有关于字体的调用,我们修改成我们刚上传的字体名称即可。

重新修改次全名即可生成头像
同样的道理,修改/AppData/nextcloud/config/www/nextcloud/lib/private/Preview/TXT.php文件,修改81行的字体名称为刚刚上传的中文字体。
后续如果有新的问题,将另起文章记录。