赞
踩
OnlyOffice Document Server是一个免费的开源办公套件,支持在线查看和编辑Office文档。要部署OnlyOffice Document Server,可以通过多种方式进行,包括使用Docker、手动安装在Linux服务器上,或者直接安装在Windows服务器上。
以下是使用Docker在Linux环境下部署OnlyOffice Document Server的步骤,这也是最简单和最快速的部署方法之一:
确保你的服务器满足以下要求:
拉取OnlyOffice Document Server Docker镜像
打开终端或者SSH客户端连接到你的服务器,然后执行以下命令来从Docker Hub拉取OnlyOffice Document Server的最新Docker镜像:
docker pull onlyoffice/documentserver
启动OnlyOffice Document Server容器
用以下命令启动OnlyOffice Document Server的Docker容器:
docker run -i -t -d -p 80:80 --restart=always onlyoffice/documentserver
这里的参数解释如下:
-i
开启交互模式。-t
分配一个虚拟终端。-d
在后台运行容器。-p 80:80
将容器的80端口映射到主机的80端口。--restart=always
使容器在重启后自动启动。验证是否部署成功
在浏览器中输入服务器的IP地址或域名,如果看到OnlyOffice的欢迎页面,说明部署成功。
部署并启动OnlyOffice Document后,你可能还需要进行一些额外的配置和定制:
设置反向代理
如果你有一个WEB服务器(如Nginx或Apache)在运行,并希望通过它来访问OnlyOffice Document Server,则需要对WEB服务器进行配置,设置一个反向代理。
配置SSL
为了提高安全性,强烈建议配置SSL证书来启用HTTPS连接。如果你使用的是Nginx反向代理,可以通过Let’s Encrypt获得免费的SSL证书并配置。
集成到Web应用
如果你想在自己的Web应用中集成OnlyOffice文档编辑功能,需要阅读OnlyOffice API文档,了解如何与Document Server交互。
请注意,部署过程可能会根据不同的服务器配置和需求略有不同,特别是在网络安全策略、端口映射和SSL配置等方面。更详细的配置步骤和选项可以在OnlyOffice官方文档中找到。
要在Web应用中集成OnlyOffice文档编辑功能,需要通过OnlyOffice Document Server提供的API与Web应用进行交互。以下是一个简化的示例,说明如何在你的Web应用中实现这一功能。
确保你已经按照上一问的指南部署了OnlyOffice Document Server,并且它可以通过浏览器访问。
在你的Web服务器上,你需要一个机制来存储文档,并允许OnlyOffice Document Server访问它们。这可能意味着将文件存储在特定的文件夹中,并通过URL使其可访问。
在你的Web页面上,你需要添加OnlyOffice Document Editor的容器(例如,一个div)以及加载OnlyOffice编辑器js库的代码。
HTML 示例:
<!DOCTYPE html> <html> <head> <title>OnlyOffice Integration Example</title> </head> <body> <div id="onlyoffice-editor"></div> <script src="https://your-document-server/web-apps/apps/api/documents/api.js"></script> <script> var docEditor; var config = { // 定义 Document Server 的服务地址 document: { fileType: 'docx', key: 'Khirz6zTPdfd7', title: 'Example Document Title.docx', url: 'https://your-webapp.com/path-to-your-document/example.docx', // 提供文档信息,比如创建者、创建时间等 // 也可以定义回调 URL 在文档被编辑时 OnlyOffice Server 将发送更新 }, editorConfig: { mode: 'edit', // 或者 'view' callbackUrl: 'https://your-webapp.com/onlyoffice-callback-url', lang: 'en', // 设置语言 user: { // 定义当前用户信息 id: 'userid', name: 'John Smith', }, }, type: 'desktop', // 或 'mobile' 根据设备类型 height: '600px', width: '100%' }; docEditor = new DocsAPI.DocEditor("onlyoffice-editor", config); </script> </body> </html>
此代码段为你的Web页面创建一个 div
元素,作为OnlyOffice编辑器的容器,并加载OnlyOffice Document Server的API脚本。然后,使用这个API初始化文档编辑器,并传递必要的配置参数,如文档URL、文档类型和键值等。
当文档状态更改(例如,保存或关闭文档)时,OnlyOffice Document Server会向定义在 callbackUrl
中的地址发送包含状态信息的POST请求。
你的Web服务器需要处理这些回调,实现可能像这样:
# 假设使用Flask和Python来处理回调 from flask import Flask, request app = Flask(__name__) @app.route('/onlyoffice-callback-url', methods=['POST']) def onlyoffice_callback(): data = request.get_json() status = data.get('status') if status == 2: # 文档准备好被保存 # 实现保存文档的逻辑 elif status == 6: # 文档编辑会话关闭 # 清理和后处理 # 返回空的200响应表示成功接收 return ('', 200) if __name__ == '__main__': app.run(debug=True)
以上代码段演示如何使用Flask Web框架来监听由OnlyOffice Document Server发送的回调并对其进行处理。
document.key
是一个唯一标识符,用于文档协同工作。每个文档都应该有一个唯一的key。callbackUrl
用于OnlyOffice Document Server通知你的应用文档的变化。OnlyOffice Document Server是一个在线办公套件,它允许用户在web浏览器中创建、查看和编辑文档、电子表格和演示文稿。为了整合OnlyOffice Document Server到第三方系统中,通常需要使用其回调机制来处理各种事件,比如文档状态变更、保存变更等。
当在OnlyOffice Document Server中打开或编辑文档时,Document Server将通过HTTP请求向预先配置的回调URL发送信息。第三方服务需要提供这个URL以接收来自Document Server的通知,并根据所接收的信息对自己的应用进行相应的操作。
回调请求是以POST方法的HTTP请求形式发送的,通常包含以下信息:
例如,当用户关闭文档编辑器时,OnlyOffice可能会像这样进行回调:
{
"status": 2,
"url": "https://documentserver/downloads/documents/example.docx",
"users": ["John_Doe"],
"actions": [
{
"type": 0,
"userid": "John_Doe"
}
],
"key": "document_key_here"
}
在这个JSON例子中:
status
值为2标识文档已被关闭。url
是包含最终更新版文档的下载链接。users
列出了参与编辑文档的用户数组。actions
数组包含了相关的用户动作,例如type 0可能表示文档被关闭。key
是文档的唯一标识符。此回调允许你的服务了解文档的状态变更,并且可以下载新版本的文档以便更新你服务中的副本。
为了正确设置和响应这些回调,你的服务端应当能够处理POST请求,并能够解析JSON数据。在处理这些请求时,你应当返回特定的响应码来通知OnlyOffice你的服务已经成功接收了回调,通常情况下返回200 OK HTTP状态码即可。
确保你的文档服务器已经正确配置回调URL,并且你的服务端安全地处理OnlyOffice回调。只有当你完全控制了回调URL和处理逻辑时,才启用这些功能,以此来防止潜在的安全风险。
在OnlyOffice Document Server中,安全令牌(token)用于保护文档传输和API调用的安全。当你在客户端看到这样的错误信息时,这通常意味着你需要确保有有效的令牌被生成并正确地传递给OnlyOffice Document Server。
为了生成一个安全令牌,你需要在OnlyOffice Document Server上配置JWT(JSON Web Tokens)密钥,并使用这个密钥来签署数据。以下是一些步骤,你可以按照这些步骤生成并验证安全令牌:
启用JWT支持:
在OnlyOffice Document Server的配置文件中启用JWT支持。对于Linux系统,你可能需要编辑local.json
配置文件,该文件通常位于/etc/onlyoffice/documentserver/
目录下。
在services.CoAuthoring.token.enable.browser
和services.CoAuthoring.token.enable.request.inbox
下设置为true
来启用JWT。
设置密钥:
在相同的配置文件中,找到services.CoAuthoring.secret
节点,并设置你的JWT秘钥(secret)。确保这个密钥是复杂且随机的。
重启服务:
修改配置文件后,你需要重启OnlyOffice Document Server以应用更改。
生成JWT:
使用设置的JWT密钥生成一个令牌。你可以使用各种库来生成JWT,例如,在Node.js中你可以使用jsonwebtoken
库。以下是使用此库生成令牌的简单示例:
const jwt = require('jsonwebtoken');
const secret = 'your-secret-key'; // 这应该与你的配置文件中的密钥相同。
const payload = {
// 载荷数据将取决于你尝试执行的特定操作
};
const token = jwt.sign(payload, secret);
console.log("The generated token is: " + token);
传递令牌:
当与OnlyOffice Document Server API进行交互时,你需要确保在HTTP请求中包含JWT令牌。例如,当加载文档编辑器时,你需要将生成的令牌作为初始化配置的一部分传递。
ONLYOFFICE 编辑器使用 Json Web Token (JWT),保护文档免遭未经授权的访问。在文档编辑器被初始化、以及在内部 ONLYOFFICE 文档服务之间交换命令时,这个令牌会被添加到配置中。会通过密钥对JWT进行签名,并根据向 ONLYOFFICE 文档发出的请求来验证该令牌。
自 ONLYOFFICE 文档 v.7.2 起,默认启用 JWT,并自动生成密钥。您可以随时按需更改相关参数。
为保护您的文档,您需要启用令牌验证并在 ONLYOFFICE 文档配置文件中指定您自己的密钥,然后在连接器设置中指定相同的密钥。
针对 Linux/ Windows:配置 ONLYOFFICE 文档
通过任意可用的文本编辑器打开 local.json 文件。
针对 Linux - /etc/onlyoffice/documentserver/local.json
针对 Windows - %ProgramFiles%\ONLYOFFICE\DocumentServer\config\local.json
通过将三个部分中的 false 值更改为 true 来启用令牌验证:
services.CoAuthoring.token.enable.browser
services.CoAuthoring.token.enable.request.inbox
services.CoAuthoring.token.enable.request.outbox
通过将三部分中的密钥值替换为您自己的文本字符串,来指定您自己的密钥。密钥必须是相同的。
services.CoAuthoring.secret.inbox.string
services.CoAuthoring.secret.outbox.string
services.CoAuthoring.secret.session.string
{复制代码 "services": { "CoAuthoring": { "token": { "enable": { "request": { "inbox": true, "outbox": true }, "browser": true } }, "secret": { "inbox": { "string": "yoursecret" }, "outbox": { "string": "yoursecret" }, "session": { "string": "yoursecret" } } } } }
保存更改。
重启服务,以使配置更改生效。
systemctl restart ds-converter ds-docservice ds-example ds-metrics
针对 Docker:使用环境变量
如果您在 /etc/onlyoffice/documentserver/local.json 中更改自动生成的密钥或手动禁用 JWT,JWT 会被再次启用,服务器重启时也会重新生成密钥。
为了避免此问题,请在 docker run 命令中使用环境变量。
如要更改密钥,请在 -e JWT_SECRET=my_jwt_secret 中指定您自己的密钥值。
如要禁用 JWT,请使用 -e JWT_ENABLED=false。
链接:https://juejin.cn/post/7249958720292470840
Onlyoffice 二次开发指南 https://zhuanlan.zhihu.com/p/558565903
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。