问题一,Collabora Online还是Only Office

个人建议使用OnlyOffice,它的性能表现要远好于Collabora,打开文档的时候加载速度极快,滚动表格时,不会有重绘动作。相比之下,在这块Collabora的体验相当糟糕,滚动条拉走,再拉回原位置的时候,居然也要重新绘制,并且这个过程十分耗时。

另外,不要使用内置的Community Document Server (onlyoffice built-in):

问题二,NextCloud 19.0.0的文档使用OnlyOffice在线编辑过后,无法更新文件状态,导致客户端同步失败,这是一个巨坑

症状是:OnlyOffice编辑完一个表格,并关闭网页,在10秒延时后,向服务器发起请求,通知文件变更,并由NextCloud下载新的文件。

问题就出在这儿,从服务器可以看到通知能正常发出,但是服务器处理的时候,却只能更新文档,无法刷新包括修改时间、文件大小在内的文档属性。客户端无从得知文件被修改过,即使知道文件被修改过,也无法拿到文件大小,一直卡在“同步中”。

这个BUG应该由NextCloud和OnlyOffice各担一半责任:

  1. 使用Collabora Online不会出现这个问题,可能在更新文件以后,Collabora还会主动更新文件属性(猜测,未验证);
  2. OnlyOffice确实通知到了NextCloud服务器,NextCloud由于自身原因无法更新文档属性。

最后的修复办法:更新19.0.0到19.0.1,这个毛病不药而愈。当然,升级的过程也非常坎坷。

问题三,升级问题

或者说,这个不是单纯的升级问题,归根结底,它是一个网络问题。在国内访问nextcloud服务器的时候,速度非常感人,下载速度论K来计。而网络问题的典型症状是:

  1. 应用中心页面打不开,或者能打开但页面一片空白,如果幸运的话,在超时时间到之前,可以勉强打开,状况更糟的时候,应用设置页面都无法打开(因为无法联系应用服务器验证应用);
  2. 在线安装应用失败;
  3. 在线升级无法下载升级包,无法联系服务器验证应用信息。

问题1的解决方案

没有什么好的解决办法,好在应用设置页面打不开的情况不会很多,所以不会影响到应用的管理。

而如果需要安装应用,可以使用离线的方式来解决,流程是:

  1. https://apps.nextcloud.com 搜索应用 => 
  2. 下载自己NextCloud版本所对应的Release => 
  3. 上传到自己的NextCloud服务器 =>
  4. 解压到NextCloud安装目录的apps目录=>
  5. 回到网页的管理后台/settings/apps页面,启用相应的应用。

问题2的解决方案

升级

问题3的解决方案

升级过程分两大步:

  • 从“设置”页面,点击“更新器”进入更新页面,这一步属于文件准备阶段,包括验证本地文件、备份、下载、权限检查、解压覆盖等操作;
  • 完成第一步后,打开首页自动进入升级执行阶段,包括数据库更新、应用兼容性检查等操作。

升级过程会有两处地方会因为网络问题卡住导致失败:第一步的下载新版安装包动作、第二步中的应用验证。

第一步的失败在于网页响应具有超时时间,但网络不足以在超时前下完升级包,这时候后台其实还在跑任务,所以,可以在网页提示超时后,继续等待;也可以手工下载新版文件上传到服务器的data/update-xxx/downloads目录,并修改 data/update-xxx/.step文件,把当前步骤由4改为5,并把状态由start改为stop。在升级页面继续点击即可跳过下载步骤,继续升级。

第二步我每次尝试都会报错,最后根据页面提示,在服务器上运行了occ upgrade命令进行更新,这时候就可以正常跑完应用检查。回过头来再看第一步,其实也可以直接用命令行来升级程序,因为是命令行环境,所以也不用担心页面超时的问题,速度再慢也能正常跑完流程,时间长短的区别而已。


#update of code(第一步,文件准备)
sudo -u www-data php /path/to/nextcloud/updater/updater.phar

#upgrade(第二步,应用升级)
sudo -u www-data php occ upgrade

不算问题的问题,字体问题

OnlyOffice在编辑页面会加载所有字体,一个字体文件小则数百K,大则10几兆,字体稍微多放两个,页面打开就需要下载上百兆的内容。网上很多不负责任的教程只会教人无脑加字体,却从不考虑页面加载的问题。

如果希望在OnlyOffice中支持多种多样的字体,就会面临这个两难的问题:字体多了,网页加载会慢得让人无法忍受,字体少了,又会影响到线下编辑文档的样式。所以就需要做一个折衷的选择:

  • 只放必要的字体,能不加就不加;
  • 如果一个文档在线下编辑过,里面有很多字体、样式,那就避免在网页上改动它;
  • 使用OnlyOffice兼容的字体,这样可以在线下线上任意修改而不用担心样式变形。

谨以此图献给耽误我这么多时间的大坑