Nextcloud 集成
这个应用程序允许用户借助ONLYOFFICE 文档在Nextcloud中编辑办公文档。
最新的已签名连接器版本可在Nextcloud应用商店获取。
功能特性
- 目前,使用该应用程序可打开并编辑以下文档格式:DOCM、DOCX、DOTM、DOTX、PDF、POTM、POTX、PPSM、PPSX、PPTM、PPTX、XLSB、XLSM、XLSX、XLTM、XLTX。
- 仅支持查看的文档格式为:CSV、DJVU、DOC、DOT、DPS、DPT、EPUB、ET、ETT、FB2、FODP、FODS、FODT、HTM、HTML、HWP、HWPX、KEY、MD、MHT、MHTML、NUMBERS、ODG、ODP、ODS、ODT、OTP、OTS、OTT、OXPS、PAGES、POT、PPS、PPT、RTF、STW、SXC、SXI、SXW、TSV、TXT、VSDM、VSDX、VSSM、VSSX、VSTM、VSTX、WPS、WPT、XLS、XLT、XML、XPS。
- 以下格式可转换为OOXML格式:DOC、DOCM、DOT、DOTX、EPUB、HTM、HTML、ODP、ODT、POT、POTM、POTX、PPS、PPSM、PPSX、PPT、PPTM、RTF、XLS、XLSM、XLT、XLTM、XLTX。
- 该应用程序会在新建(+)菜单中创建用于创建文档、电子表格、演示文稿、PDF的选项。它还会在文档库中为Office文档创建一个新的在ONLYOFFICE中打开菜单项。这使得多个用户能够实时协作,并将更改保存回Nextcloud。连接到同一文档服务器的多个联合Nextcloud实例之间也支持协同编辑。
安装ONLYOFFICE 文档
您需要一个ONLYOFFICE 文档(文档服务器)实例,该实例必须能从Nextcloud和任何终端客户端解析并连接。如果无法满足此条件,请使用官方的ONLYOFFICE 文档安装指南。ONLYOFFICE 文档还必须能够直接向Nextcloud发送POST请求。
ONLYOFFICE 文档和Nextcloud可以安装在不同的计算机上,也可以安装在同一台机器上。如果选择后者,您需要为文档服务器设置一个自定义端口,因为默认情况下ONLYOFFICE 文档和Nextcloud都使用80端口。或者您可以在代理服务器后使用ONLYOFFICE 文档,有关配置方法,请参考这篇文章。
使用Docker是启动ONLYOFFICE 文档实例的最简单方法。
您也可以使用我们的Docker安装方式,通过几条命令就能完成ONLYOFFICE 文档和Nextcloud的安装与配置。
安装Nextcloud ONLYOFFICE集成应用程序
Nextcloud管理员可以从内置应用市场安装集成应用程序。为此,点击用户名并选择应用。然后,在可用应用列表中找到ONLYOFFICE并进行安装。
如果安装Nextcloud的服务器没有互联网访问权限,或者由于其他原因需要手动安装,管理员可以按以下步骤手动安装该应用程序。要在Nextcloud中使用ONLYOFFICE 文档,必须执行以下步骤:
-
进入Nextcloud服务器的*apps/*目录(或用于连接应用程序的其他目录):
cd apps/ -
获取Nextcloud ONLYOFFICE集成应用程序。有以下几种方法:
git clone https://github.com/ONLYOFFICE/onlyoffice-nextcloud.git onlyofficecd onlyofficegit submodule update --init --recursive -
运行构建(仅当您在上一步选择了克隆方式时):
npm installnpm run build -
安装Composer依赖(仅当您在第2步选择了克隆方式时):
composer installcomposer scope-dependenciesrm -rf vendor/firebasecomposer dump-autoload -
修改所有者,以便可以从Nextcloud Web界面更新应用程序:
chown -R www-data:www-data onlyoffice -
在Nextcloud中,管理员打开包含未启用应用的*~/settings/apps/disabled*页面,并为ONLYOFFICE应用点击启用。
配置Nextcloud ONLYOFFICE集成应用程序
在Nextcloud中,打开包含ONLYOFFICE部分管理设置的*~/settings/admin/onlyoffice*页面。输入以下地址来连接ONLYOFFICE 文档:
https://<文档服务器地址>/
其中,文档服务器地址是安装了ONLYOFFICE 文档的服务器名称。该地址必须能被用户浏览器和Nextcloud服务器访问。Nextcloud服务器地址也必须能被ONLYOFFICE 文档访问,以确保正常工作。您可以注册一个免费的 ONLYOFFICE 云,并使用其公共 IP 地址或公共 DNS,这些地址或 DNS 可以在云控制台的实例部分找到。

有时,网络配置可能会导致已安装的Nextcloud和ONLYOFFICE 文档之间无法通过公共地址进行请求。**高级服务器设置”**允许设置Nextcloud服务器内部请求的ONLYOFFICE 文档地址,以及ONLYOFFICE 文档内部请求的返回Nextcloud地址。您需要在相应字段中输入这些地址。

从7.2版本开始,JWT默认启用,并且会自动生成密钥,用于限制对ONLYOFFICE 文档的访问,保障安全性和数据完整性。在Nextcloud管理配置中指定您自己的密钥。在ONLYOFFICE 文档配置文件中,指定相同的密钥并启用验证。
启用或禁用在同一标签页中打开文件设置。
在ONLYOFFICE中打开操作将添加到文件上下文菜单中。您可以将此操作设置为默认操作,这样在点击选定文件类型的文件名时,就会使用该操作。
ONLYOFFICE Nextcloud连接器:配置参数
以下是ONLYOFFICE Nextcloud集成应用程序的所有可用配置参数,分为以下三个表格:
- 基本配置:可通过Nextcloud管理界面或
occ命令配置的参数。 - 水印设置:同样可通过界面或
occ配置,但存储在files应用下,而非onlyoffice。 - 高级配置:可通过
config/config.php文件配置的参数。
部分参数(例如DocumentServerUrl、jwt_secret、jwt_header、verify_peer_off)两种方式均可设置,因此它们会同时出现在基本配置和高级配置表格中。对于这些参数,仅当未通过界面或occ命令设置值时,连接器才会从config/config.php中读取。
基本配置(UI / occ)
这些设置可通过Nextcloud管理界面或occ命令进行配置。
| 参数 | 描述 |
|---|---|
DocumentServerUrl | ONLYOFFICE 文档服务器的公共地址。 |
verify_peer_off | 如果为true,禁用SSL证书验证。默认值:false。 |
jwt_secret | 用于签名和验证JWT令牌的密钥。 |
Advanced server settings | 对授权标头和内部服务器URL设置进行分组。仅可通过UI配置。 |
jwt_header | 用于发送JWT的HTTP头名称。必须与ONLYOFFICE Docs中配置的头名称一致。默认值:Authorization;启用内置演示服务器时为AuthorizationJWT。 |
DocumentServerInternalUrl | ONLYOFFICE 文档用于服务器到服务器通信的内部地址。 |
StorageUrl | ONLYOFFICE 文档使用的Nextcloud服务器内部地址。 |
demo | 连接到内置的演示版ONLYOFFICE 文档服务器。仅可通过UI配置。 |
groups | 允许特定用户组访问编辑器。示例:["admin", "editors"]。 |
restrictExternalStorage | 限制从外部存储访问ONLYOFFICE的文件。默认值:false。 |
preview | 启用文档预览生成。 |
sameTab | 在同一标签页中打开文件。默认值:true。 |
enableSharing | 启用文件共享。若通过occ强制启用,即使sameTab为true,编辑器也会在新标签页中打开。默认值:false。 |
advanced | 启用高级文档权限。默认值:false。 |
versionHistory | 保存每个文档版本的元数据。默认值:true。 |
cronChecker | 启用对编辑器的后台连接检查。默认值:true。 |
emailNotifications | 启用电子邮件通知。默认值:true。 |
unknownAuthor | 未知作者的显示名称。示例:Guest User。 |
defFormats | 点击文件名时以在ONLYOFFICE中打开作为默认操作的格式。JSON对象,将格式名称映射为布尔值。示例:{"docx":true,"xlsx":true}。 |
editFormats | 以编辑模式而非查看模式打开的格式。JSON对象,将格式名称映射为布尔值。示例:{"csv":true,"txt":true}。 |
customizationForcesave | 编辑时保存中间版本(强制保存)。默认值:false。 |
liveViewOnShare | 通过公共链接访问文件时启用实时查看模式。默认值:false。 |
customizationChat | 启用或禁用聊天面板。 |
customizationCompactHeader | 启用紧凑标题模式。 |
customizationFeedback | 启用反馈和支持链接。 |
customizationHelp | 启用帮助链接。 |
customizationReviewDisplay | 查看时的审阅模式。可选值:original、markup、final。默认值:original。 |
customizationTheme | 设置编辑器颜色主题。可选值:theme-system、default-light、default-dark。默认值:theme-system。 |
customization_plugins | 启用插件。默认值:true。 |
customization_macros | 启用文档宏。默认值:true。 |
protection | 控制谁可以保护文档。可选值:owner、all。默认值:owner。 |
您也可以使用occ命令行界面来获取/设置这些参数:
php occ config:app:set onlyoffice customizationChat --value=false
水印设置
水印设置(watermark_*键)存储在files应用下,而非onlyoffice。使用files作为应用ID通过occ进行设置:
php occ config:app:set files {watermark_setting_key} --value={setting_value}
这些开关的可选值为yes或no。
| 参数 | 描述 | 默认值 |
|---|---|---|
watermark_enabled | 启用水印功能。 | no |
watermark_text | 水印文本。支持的标签:{userId}、{userDisplayName}、{email}、{date}、{themingName}。 | {userId}, {date} |
watermark_allGroups | 为watermark_allGroupsList中所列用户组的成员显示水印。 | no |
watermark_allGroupsList | 以逗号分隔的显示水印的用户组列表。示例:admin,editors。 | 空 |
watermark_allTags | 为带有watermark_allTagsList中所列标签的文件显示水印。 | no |
watermark_allTagsList | 以逗号分隔的显示水印的文件系统标签ID列表。示例:3,7。 | 空 |
watermark_linkAll | 为所有链接共享显示水印。 | no |
watermark_shareAll | 为从其他用户接收的所有共享显示水印。 | no |
watermark_shareRead | 在只读共享中显示水印。 | no |
watermark_linkSecure | 在禁止下载的链接共享中显示水印。 | no |
watermark_linkRead | 在只读链接共享中显示水印。 | no |
watermark_linkTags | 在带有watermark_linkTagsList中所列系统标签的链接共享中显示水印。 | no |
watermark_linkTagsList | 以逗号分隔的系统标签ID列表,其链接共享将显示水印。示例:3,7。 | 空 |
高级配置(config/config.php)
您可以在config/config.php文件中定义以下参数来自定义ONLYOFFICE连接器的行为:
| 参数 | 描述 |
|---|---|
DocumentServerUrl | ONLYOFFICE 文档服务器的公共地址。 |
DocumentServerInternalUrl | ONLYOFFICE 文档用于服务器到服务器通信的内部地址。 |
StorageUrl | ONLYOFFICE 文档使用的Nextcloud服务器内部地址。 |
jwt_secret | 用于签名和验证JWT令牌的密钥。 |
jwt_header | 用于发送JWT的HTTP头名称。必须与ONLYOFFICE Docs中配置的头名称一致。默认值:Authorization;启用内置演示服务器时为AuthorizationJWT。 |
jwt_leeway | 验证JWT令牌时用于处理时钟偏差的容差时间(秒)。 |
jwt_expiration | JWT令牌过期时间(秒)。 |
verify_peer_off | 如果为true,禁用SSL证书验证。默认值:false。 |
limit_thumb_size | 生成缩略图的最大文件大小(字节)。 |
disable_download | 如果为true,禁用文件下载功能。 |
editors_check_interval | 使用cron检查ONLYOFFICE 文档可用性的时间间隔(秒)。默认值:86400。 |
permissions_modifyFilter | 全局应用电子表格筛选(true,影响所有用户)或仅本地应用(false)。默认值:true。 |
customization_customer | 显示在编辑器"关于"部分的客户信息。 |
customization_logo | 编辑器标题栏中显示的徽标。 |
customization_loaderLogo | 编辑器加载页面中显示的徽标。 |
customization_loaderName | 编辑器加载页面中显示的文本。 |
customization_zoom | 文档默认缩放级别(百分比)。默认值:100。 |
customization_autosave | 启用编辑时自动保存。默认值:true。 |
以下参数必须手动添加到Nextcloud安装目录中的config/config.php文件:
<?php
'onlyoffice' => array (
'jwt_secret' => 'your_secret_key',
'jwt_header' => 'Authorization',
)
?>
检查连接
您可以使用以下occ命令检查与ONLYOFFICE 文档的连接:
occ onlyoffice:documentserver --check
您将看到一段文本,内容要么是连接成功的信息,要么是错误原因。
高级文档权限
高级标签页允许您仅向共享标签页中指定的用户授予额外的访问权限,而不允许他们重新共享文件。根据所选的自定义权限选项和文件类型(docx、pptx、xlsx),您可以授予不同的额外权限。
- 如果DOCX文件在共享标签页中以自定义权限(启用编辑,禁用共享)方式共享,您可以在高级标签页中将权限设置为仅审阅(仅审阅)或仅评论(仅评论)。
- 如果XLSX文件在共享标签页中以自定义权限(启用编辑,禁用共享)方式共享,您可以在高级标签页中将权限设置为仅评论(仅评论)或为所有人应用筛选(全局筛选,默认启用)。
- 如果PPTX文件在共享标签页中以自定义权限(启用编辑,禁用共享)方式共享,您可以在高级标签页中将权限设置为仅评论(仅评论)。
- 如果PDF文件在共享标签页中以自定义权限(启用编辑,禁用共享)方式共享,您可以在高级标签页中将权限设置为仅填写(表单填写)。
工作原理
ONLYOFFICE集成遵循此处记录的API规范:此处。
-
创建新文件时,用户在Nextcloud中导航到文档文件夹,然后点击新建(+)菜单中的文档、电子表格或演示文稿选项。
-
浏览器调用*/lib/Controller/editorController.php控制器中的create方法。此方法会将assets*文件夹中的文件副本添加到用户当前所在的文件夹中。
-
打开现有文件时,用户在Nextcloud中找到该文件,并选择在ONLYOFFICE中打开菜单项。
-
会打开一个新的浏览器标签页,并调用*/lib/Controller/editorController.php控制器中的index*方法。
-
应用程序准备一个包含以下属性的JSON对象:
- url - ONLYOFFICE 文档用于下载文档的URL;
- callbackUrl - ONLYOFFICE 文档用于通知文档编辑状态的URL;
- documentServerUrl - 客户端需要响应给ONLYOFFICE 文档的URL(可在管理设置页面中设置);
- key - 由UUID+修改时间戳组成,用于指示ONLYOFFICE 文档是否需要重新下载文档。
-
Nextcloud获取该对象,并从templates/editor.php模板构建一个页面,填充所有这些值,以便客户端浏览器可以加载编辑器。
-
客户端浏览器向ONLYOFFICE 文档的JavaScript库发出请求,并将包含上述属性的DocEditor配置发送给ONLYOFFICE 文档。
-
然后,ONLYOFFICE 文档从Nextcloud下载文档,用户开始编辑。
-
ONLYOFFICE 文档向callbackUrl发送POST请求,通知Nextcloud有用户正在编辑文档。
-
当所有用户和客户端浏览器完成编辑后,他们关闭编辑窗口。
-
在10秒无操作后,ONLYOFFICE 文档向callbackUrl发送POST请求,告知Nextcloud客户端已完成文档编辑并关闭了它。
-
Nextcloud下载文档的新版本,替换旧版本。
已知问题
-
连接外部存储:在某些情况下,使用外部存储应用添加存储时,协同编辑会出现问题。如果使用相同的授权密钥进行连接(选择用户名和密码或全局凭证身份验证类型),则用户可以进行协同编辑。如果使用不同的授权密钥(登录凭据,保存到数据库或用户输入,存储到数据库身份验证选项),则无法进行协同编辑。当使用登录凭据,保存到会话身份验证类型时,文件无法在编辑器中打开。
-
证书验证:如果文档服务器使用自签名证书,Nextcloud将不会验证此类证书,并且不允许与ONLYOFFICE 文档进行连接。这个问题可以通过两种方式解决:
- 在Nextcloud的ONLYOFFICE管理页面服务器设置部分,勾选**禁用证书验证(不安全)**复选框。
- 手动更改Nextcloud配置文件。找到Nextcloud配置文件(/Nextcloud/config/config.php)并打开它。在其中插入以下部分:
<?php'onlyoffice' => array ('verify_peer_off' => true)?>这将禁用证书验证,允许Nextcloud与ONLYOFFICE 文档建立连接。
备注请记住,这是一个临时的不安全解决方案,我们强烈建议您更换为由某些证书颁发机构颁发的证书。完成更换后,不要忘记取消勾选相应的设置框或从Nextcloud配置文件中删除上述部分内容。
-
后台任务:如果编辑器在正常运行一段时间后无法打开或保存文档,原因可能是网络设置更改、相关服务被禁用或SSL证书存在问题。
为了解决这个问题,我们添加了一个在服务器上运行的异步后台任务,用于检查编辑器的可用性。它可以测试您的Nextcloud实例和ONLYOFFICE 文档之间的连接,即检查服务器地址的可用性和JWT密钥的有效性。
如果检测到任何问题,ONLYOFFICE集成连接器(以及创建和打开文件的功能)将被禁用。作为Nextcloud管理员,您将收到相应的通知。
此选项可帮助您避免因服务器设置不正确而需要更改设置时出现的问题。
默认情况下,此后台任务每天运行一次(86400秒)。如有必要,您可以更改运行频率。为此,打开Nextcloud配置文件(_/Nextcloud/config/config.php_)。插入以下部分并输入所需的秒数。例如,若要每小时检查一次:
<?php
"onlyoffice" => array (
"editors_check_interval" => 3600
)
?>
要禁用此检查,请输入值0。
-
联合云共享:如果使用联合云共享应用共享文档,连接到不同ONLYOFFICE服务器的Nextcloud实例之间将无法进行协同编辑。来自同一文档服务器的用户可以在协同编辑模式下编辑文档,但来自两个(或更多)不同文档服务器的用户将无法实时协作处理同一文档。
-
文件转换:ONLYOFFICE 文档在打开和编辑文件时以Office Open XML格式为基础。如果文件格式与OOXML不同,为了使ONLYOFFICE 文档能够正常工作并提高性能,文件仍将转换为相应的OOXML格式。之后您可以编辑文件,对基础OOXML格式进行任何更改,并将文件保存为该基础OOXML格式。
如果原始Nextcloud文件格式与基础格式不同,而您仍想将其保存为原始格式,文件将从OOXML转换回该格式。由于这些格式在根本上存在差异,一些数据(如图表、表格、自选图形或图像)和格式可能会丢失,这是因为一些格式(csv,txt等)不支持这些内容,或者对它们的处理方式与OOXML标准不同。这就是为什么默认情况下所有非OOXML文件仅支持查看,尽管在上下文菜单中有转换文件的选项。如果您了解转换后可能会丢失数据/格式,但仍想打开非OOXML文件进行编辑,可以在设置列表中勾选这些文件。默认情况下,csv和txt文件支持编辑。
-
当用户访问没有下载权限的文档时,文件打印和使用系统剪贴板的功能不可用。不过,可以通过编辑器工具栏和上下文菜单中的按钮在编辑器内进行复制和粘贴操作。
-
当文件在ONLYOFFICE中打开编辑的同时,也在其他工具中被编辑时,更改可能会被覆盖或丢失。为避免冲突并确保顺畅协作,我们建议使用临时文件锁定应用程序:https://apps.nextcloud.com/apps/files_lock。这有助于防止并行编辑并保护您的工作。
在此处下载Nextcloud ONLYOFFICE集成应用程序:此处。