Nextcloud部署配置OnlyOffice

Nextcloud能够通过OnlyOffice对储存的Office文档进行在线创建、编辑。本文简要记录这个部署、配置的过程以作备忘。本文重点讲述解决域名+IPv6的情况下解决相应的配置问题。

前言

最近在公共电脑上需要对Nextcloud上的Office文档作一些处理、更新。于是先从Nextcloud把文档下载下来,用本地的office编辑好以后再把文件上传回去。一番操作后让我这个中度强迫症不免感到繁琐。以前在研究Nextcloud的时候就发现通过插件以及一个叫作OnlyOffice的网络套件可以实现在线编辑Office文档。经过一番折腾终于把服务搭建起来。

OnlyOffice简介

OnlyOffice有一款产品叫Document Server,是一款提供在线编辑office文档的服务套件。通过这个套件以及对应的Nextcloud插件,可以实现在Nextcloud上进行在线编辑Office文档的功能。该套件有相应的Docker镜像,所以部署方面是比较简单的。

设备、系统简介

  • 家里通过一台工控机(i7-7500U)作路由,主系统PVE,除了路由系统外,通过LXC装了Docker。

  • 容器方面与本文相关的主要是Nextcloud(包括它的数据库容器MariaDB)。因为本文不是介绍Nextcloud的部署,所以这方面的部署过程不作讲解。

  • 通过IPv6+动态域名+反向代理的方式Nextcloud实现了外网访问。访问协议方面为HTTPS。由于这些前置配置,在配置OnlyOffice的时候会造成一些问题,这点需要特别注意。

部署及安装插件

  • 创建OnlyOffice容器,容器的部署很简单直接,除了初始化的时间有点长以外没有什么特别之处。
docker run -d --name onlyoffice \
    -p 8080:80 \
    -v /app/onlyoffice/logs:/var/log/onlyoffice \
    -v /app/onlyoffice/data:/var/www/onlyoffice/Data \
    -v /app/onlyoffice/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/db:/var/lib/postgresql \
    --restart=always \
    onlyoffice/documentserver:7.0.1
  • 在Nextcloud中安装OnlyOffice插件。

用管理账号登录Nextcloud -> 点击右上角用户图标 -> 点击Apps -> 左面菜单点击Office & text。这样就能在主页面找到和安装OnlyOffice了。

配置插件

进入配置页面

用管理账号登录Nextcloud -> 点击右上角用户图标 -> 点击Settings -> 左面菜单的Administration底下找到并点击ONLYOFFICE.这样主页面就会跳转到OnlyOffice的配置页面中。

在配置页面下最关键的是配置OnlyOffice的服务地址。这里有若干方面需要注意,下面逐一介绍。

http协议访问

如果Nextcloud是通过http协议(非https)进行访问,那么用http://ip:port的格式对OnlyOffice的服务地址进行配置通常就可以了。譬如,假设我们docker宿主机的IP是192.168.0.10,那么按照前面创建的容器设置,配置则应该是:http://192.168.0.10:8080

通常来说,如果Nextcloud只在内网使用(通过内网ip访问),又或者通过http协议和域名实现外网访问都属于这种情况。

https协议访问

如果Nextcloud是通过https协议进行访问的话,插件也会要求通过https协议访问OnlyOffice的服务。如果使用http开头的地址作为配置,插件会弹出下面提示。

Error when trying to connect (Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required.)

也就是说,我们需要为OnlyOffice配置https。

通常,之所以使用https协议是为了让访问更加安全,https协议通常是配合外网访问使用的,内网访问很少会用到。配置https访问需要用到证书,尽管自建证书也能够实现,但通常情况下这样做的意义不大。更常见的情况是从域名供应商获取相应的域名证书。

为了解决OnlyOffice的https访问问题,我们有两种方式。理论上一种是前面提到的自建证书,在这种情况下,可以通过https://ip:port的格式访问到OnlyOffice的服务。尽管网上看到过一些这方面的介绍,但因为这种配置方式很少用到,也就没有采纳这种方案。

另外一种形式是干脆为OnlyOffice服务注册一个域名(譬如,二级域名)并为其配置https访问。如果Nextcloud本身就使用https协议访问,那么必然了解这套配置流程,这里就不赘述了。在这种情况下OnlyOffice的服务地址将用https://hostname的格式进行配置。这也是我实际选择的方案。

IPv6的问题

在我部署好OnlyOffice并完成的https访问配置后,再在OnlyOffice的插件中填入服务地址,系统跳出下面提示

Error when trying to connect (cURL error 7: (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://(我的域名)/healthcheck)

查了一下cURL error 7,大概是无法访问的意思。然而在浏览器输入https://(我的域名)/healthcheck却能够正常返回true

进入nextcloud的后台ping了一下为OnlyOffice注册的域名发现的确无法访问。经过一番思考,合理猜测是因为IPv6造成的。

前文介绍到,设备是通过动态域名+IPv6的方式实现Nextcloud的外网访问。访问过程需要经历一系列的环节,而只要其中一环不支持IPv6,那么访问就无法成功。尽管不能确定具体是哪个环节造成的,但大概率发生在nextcloud对IPv6的支持或者docker的桥接上。

解决这个问题只要正确解释域名对应的IP即可,可以通过两种办法实现。一个是在nextcloud的host文件中添加OnlyOffice的域名解释。假设我们的域名是office.myhost.com,根据前文的配置,在nextcloud的host文件中添加下面域名解释:

192.168.0.10    office.myhost.com

我采取的另一个方案是,如果路由有相应功能的话,直接在路由解释(劫持)对应的域名即可。该方案能够把局域网内的自定义的域名解释集中管理,相对更方便。

在添加了OnlyOffice的域名解释后,没有再出现前面的错误,但系统又提示了新的错误:

Error when trying to connect (Error occurred in the document service: Error while downloading the document file to be converted.) (version 7.0.1.37)

同样是因为从OnlyOffice无法访问Nextcloud导致的,原因也同样出在域名解释的问题上。类似的在OnlyOffice的host文件中添加相应解释后就能解决,譬如:

192.168.0.10    nextcloud.myhost.com

再一点点域名解释的问题

按理来说,当我们在域名商对OnlyOffice的域名进行配置的时候(或者通过动态域名工具创建、配置对应的域名)并不需要填写真实的公网IP(无论是静态还是动态)。无论是自建证书还是通过域名商获得证书,为的都【只是】为了解决通过https协议访问OnlyOffice服务,之所以从域名商申请证书是因为大多数人对这套流程更为熟悉,仅此而已,而并非真的要从外网访问OnlyOffice。事实上,我们并不希望自己搭建的OnlyOffice被外部访问。

此外,依托域名商的域名解释相当于在访问的时候先跑到DNS上查询到自己的公网IP,然后再回到自己的服务器上进行访问。这一方面多此一举,降低访问速度,二一方面使得本来Nextcloud与OnlyOffice之间纯粹的内网访问过程变成不得不依赖外网进行。

总结

OnlyOffice的部署和配置相对简单,但主要问题在于Nextcloud插件中OnlyOffice的地址配置问题上。如果Nextcloud纯粹是为了内网访问而设,这个问题还是非常简单直接的,只要按照http://ip:port的格式填写地址即可。但如果是通过域名和https协议访问的话,配置方面可能会出现各种问题。总的来说,这些问题集中在域名解释方面。在服务器运维的问题上,各人的情况不尽相同,本文并没有记录详细的部署、配置步骤,更多的是记录配置过程中出现的问题以及解决过程。此外也列举了遇到的一些报错信息,方便有类似问题的朋友找到自己的解决思路。

原文链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容