NextCloud 集成 Collabora Online 在线办公

我的 NextCloud 本来集成的是 Onlyoffice 在线办公的,可能由于升级了 NextCloud22.2.3 或升级了 Onlyoffice6.4.2 之后,Onlyoffice 在线办公出了一些致命的 Bug 导致不得不放弃 Onlyoffice。

Onlyoffice 致命的 Bug

这个 bug 要把他描述清楚都是一件非常困难的事情

举例说明:

现在是 9点15分,使用 PC 端 MSoffice 的 Excel 或 Word(其他文档未测试)新建文档,名称为:test.docx 或 test.xlsx ,内容为:1234567,保存文件后 NextCloud 同步到云端。

5分钟后(即9点20分),我们再次使用 PC 端或手机端 MSoffice 的 Excel 或 Word 编辑该文档,修改内容为:1234567abc ,然后再次保存。

  • 此时 NextCloud 会自动创建一个 5 分钟前的版本文件(即 9点15分 保存的内容:1234567)。

10分钟后(即9点30分),无论是手机端打开该文档或 PC 端打开该文档,都能正常的显示最终修改后的内容(内容为:1234567abc),一切完美正常。

  • 此时使用在线 OnlyOffice 打开该文件,也能正常显示最终修改后的完整内容(即 9点30分 保存的内容为:1234567abc)。

特别注意!现在时间是 9点30分,OnlyOffice 此时打开浏览文件内容,没有编辑文件。

5分钟后(即 9点35分),我们再次使用 PC 端或手机端 MSoffice 的 Excel 或 Word 编辑该文档,修改内容为:1234567abcEFGH,然后再次保存。

  • 此时 NextCloud 会自动再次创建一个 5分钟前 的版本文件(即 9点30分 保存的内容:1234567abc)。
    • 现在如果再次使用在线 OnlyOffice 打开该文档,问题就出现了!
    • OnlyOffice 只能看到在 9点30分 那一刻他打开的内容(内容为:1234567abc)
    • 之后无论是使用 PC 端或手机端的 MSoffice 软件增加或删减内容,OnlyOffice 一直只能看到 9点30分 那一刻的内容(即 9点30分 保存的内容为:1234567abc)
    • 现在无论是使用 PC 端或手机端的 MSoffice 打开该 test 文档,内容一切正常的哟!(即 9点35分 保存的内容为:1234567abcEFGH)

5分钟后(即 9点40分),如果此时我们没有发现这个严重的问题,继续使用在线 OnlyOffice 打开该文档,(即 9点30分 保存的内容:1234567abc)然后编辑增加内容为:12345abcd8899。

  • 此时 NextCloud 会自动再次创建一个 5 分钟前的版本文件(即 9点35分 保存的内容为:1234567abcEFGH)。
  • 此时 test 文档内容为:12345abcd8899
  • 此时无论是 PC 端或手机端 MSoffice 再次打开浏览 test 文档所看到的内容为:12345abcd8899
  • 此时不知情的情况下(即 9点35分 保存的内容为:1234567abcEFGH)丢失得神不知鬼不觉!

我们需要正常的内容为:1234567abcEFGH8899

被 OnlyOffice 这个致命的 bug 造成丢失的 EFGH 内容,到底有多严重,这就可大可小了!!

所以我愤怒的禁用了 OnlyOffice

使用 docker 部署 Collabora Online 服务器

因为使用 docker 部署实在是太舒服了,几个步骤就能完成。

安装 Collabora Online 服务器

注意域名匹配自己的 NextCloud 服务器的域名 cloud\\.sgtfz\\.top ,服务器将监听localhost:9980 ,自定义的字体可以直接映射本地字体到容器 --volume

# 获取Collabora Online docker 镜像
docker pull collabora/code

# 启动 Collabora Online 容器,映射本地字体文件夹到容器里 --volume
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.sgtfz\\.top' --restart always --cap-add MKNOD --volume "/usr/local/share/fonts/truetype/:/opt/collaboraoffice/share/fonts/truetype/local/:ro" collabora/code

配置 Apache 反向代理

Ubuntu 或 Debian 上配置 Apache 反代理的方法

a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http

创建 Apache 配置文件

  • collaboraonline.conf
登录查看完整内容!

升级 Collabora Online docker 容器

下面我们记录如何升级 Collabora Online docker 容器

# 获取新的 docker 镜像
docker pull collabora/code

root@debian:~# docker pull collabora/code
Using default tag: latest
latest: Pulling from collabora/code
2f94e549220a: Pull complete
8c2d3cacc76b: Pull complete
9e459d1a469c: Pull complete
075eed41d5be: Pull complete
960b5a458fb1: Pull complete
Digest: sha256:9ca5c0176c40ecc0eee705653f4ef380e82e69dfc6c61a377a31442797945bd8
Status: Downloaded newer image for collabora/code:latest
docker.io/collabora/code:latest


# 列出 docker 容器
docker ps

root@debian:~# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS          PORTS                      NAMES
1c88224348c8   2aa80bf820c9   "/start-collabora-on…"   6 weeks ago   Up 34 minutes   127.0.0.1:9980->9980/tcp   elegant_galileo


# 停止 Collabora Online 容器
docker stop 1c88224348c8

# 删除 Collabora Online 容器
docker rm 1c88224348c8

# 启动新的 Collabora Online 容器,映射本地字体文件夹到容器里
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.sgtfz\\.top' --restart always --cap-add MKNOD --volume "/usr/local/share/fonts/truetype/:/opt/collaboraoffice/share/fonts/truetype/local/:ro" collabora/code


# 查看已保存的 docker 镜像
docker images

root@debian:~# docker images
REPOSITORY       TAG       IMAGE ID       CREATED        SIZE
collabora/code   latest    a5b0b6370643   5 days ago     1.46GB
collabora/code   <none>    2aa80bf820c9   6 weeks ago    1.46GB
hello-world      latest    feb5d9fea6a5   3 months ago   13.3kB

# 删除旧版本的 docker 镜像
docker rmi 2aa80bf820c9

完美的从 Only office 转到 Collabora office ,实际上 Only office 的界面和操作体检都比较好,可惜 Bug 太致命。截止到今天 2022年1月份,我测试了最新发布的 Onlyoffice 7 依旧没有解决这个致命的 Bug 。我已经对 Onlyoffice 失去了耐心,决定继续一直使用 Collabora office 直到下一个 Onlyoffice 8 再看看吧 …

Collabora Online 存在的问题及解决

Office 相关文件不能正常显示 ico图标

NextCloud 动态页无法显示 office 文档相关的 ico 图标(包括 .xlsx,.docx文件),但有小部分一些又能正常显示 office 相关的 ico 图标。

解决方法:

问题出在 NextCloud 应用程序 Collabora Online 连接器,找到 Collabora Online 应用程序目录的 Office.php 大概如下路径目录

/www/nextcloud/apps/richdocuments/lib/Preview/Office.php

注释以下三行代码,保存即可。

public function isAvailable(\OCP\Files\FileInfo $file) {
    // if (isset($this->capabilitites['collabora']['convert-to']['available'])) {
    //     return (bool)$this->capabilitites['collabora']['convert-to']['available'];
    // }
return false;
}

这样修改,在应用程序更新后会失效,但我没有找到更好的解决方法。如果应用程序更新,那么此问题应该也会得到解决吧,假如没有解决,那么就继续找该文件修改咯。

“NextCloud 集成 Collabora Online 在线办公”的一个回复

发表评论