admin管理员组

文章数量:1549887

日常运维部分

启动 / 停止 docker 服务

systemctl start/stop docker

开机自启/取消开机自启 docker 服务

systemctl enable/disable docker

查看容器列表

[root@VM-16-16-centos ~]# 
[root@VM-16-16-centos ~]# docker ps    //查看容器列表
CONTAINER ID   IMAGE                       COMMAND                  CREATED      STATUS          PORTS                                            NAMES
f13438c34321   onlyoffice/documentserver   "/app/ds/run-documen…"   6 days ago   Up 54 minutes   443/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp   brave_haslett
[root@VM-16-16-centos ~]# 

进入到容器里

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
常用参数
-d:分离模式,即在后台运行命令
-i:交互模式
-t:分配一个 tty
-u:指定用户和用户组,格式:<name|uid>[:<group|gid>]

实例
进入正在运行的 test 容器:

docker exec -it f13438c34321   /bin/bash

docker 常用运营命令

docker kill f13438c34321  //快速杀掉容器f13438c34321的进程,常用于无法停止容器的时候

docker logs   f13438c34321  //快速杀掉f13438c34321容器的进程
docker stats  f13438c34321  //查看容器f13438c34321的状态

安全退出容器

root@f11588cc9a21:/etc/onlyoffice/documentserver# 
root@f11588cc9a21:/etc/onlyoffice/documentserver# 
root@f11588cc9a21:/etc/onlyoffice/documentserver# exit
exit
[root@VM-16-16-centos ~]# 

查看容器运行端号

[root@VM-16-16-centos ~]# netstat -tanlp     //查看容器运行端号
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8802            0.0.0.0:*               LISTEN      8132/nginx: worker  
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      29542/redis-server  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8132/nginx: worker  
tcp        0      0 172.21.16.16:2900       0.0.0.0:*               LISTEN      18800/WorkerMan: wo 
tcp        0      0 172.21.16.16:2901       0.0.0.0:*               LISTEN      18801/WorkerMan: wo 
tcp        0      0 0.0.0.0:30197           0.0.0.0:*               LISTEN      4292/python3     

如何查看密钥
1、进入到容器
2、Linux在容器中,查看 /etc/onlyoffice/documentserver/local.json
3、 /etc/onlyoffice/documentserver/local.json 配置自动生成的密钥,服务器重启时也会重新生成密钥。

===================================================
OnlyOffice Document Server是一个免费的开源办公套件,支持在线查看和编辑Office文档。要部署OnlyOffice Document Server,可以通过多种方式进行,包括使用Docker、手动安装在Linux服务器上,或者直接安装在Windows服务器上。

以下是使用Docker在Linux环境下部署OnlyOffice Document Server的步骤,

OnlyOffice 部署

  1. 拉取OnlyOffice Document Server Docker镜像

    打开终端或者SSH客户端连接到你的服务器,然后执行以下命令来从Docker Hub拉取OnlyOffice Document Server的最新Docker镜像:

    docker pull onlyoffice/documentserver
    
  2. 启动OnlyOffice Document Server容器

    用以下命令启动OnlyOffice Document Server的Docker容器:

    docker run -i -t -d -p 8080:80 --restart=always onlyoffice/documentserver
    

    将容器80端品,映射到宿主机的8080端
    外部访问 http://localhost:8080
    这里的参数解释如下:

    • -i 开启交互模式。
    • -t 分配一个虚拟终端。
    • -d 在后台运行容器。
    • -p 8080:80 将容器的80端口映射到主机的8080端口。
    • --restart=always 使容器在重启后自动启动

参数说明

	docker run命令有很多参数选项,以下列举一些最常用的参数:
	
	-i:以交互模式运行容器,通常与-t同时使用。
	-t:为容器重新分配一个伪输入终端,通常与-i同时使用。
	-d:后台运行容器,并返回容器ID。
	name:为容器指定一个名称。
	rm:容器停止后自动删除容器。
	-e:设置环境变量。
	-p:指定端口映射,格式为:主机(宿主)端口:容器端口。
	-v:绑定一个卷,容器目录挂载到宿主机目录,格式为:<host目录>:<容器目录>。
	privileged:授予此容器扩展特权,容器内使用真正的root权限。这种模式下容器对docker宿主机拥有root访问权限,允许以其宿主机具有(几乎)所有能力来运行容器,包括一些内核特性和设备访问,需要慎用。
  1. 验证是否部署成功

    在浏览器中输入服务器的IP地址或域名,如果看到OnlyOffice的欢迎页面,说明部署成功。
    http://xxxxxxxxxx:8080/web-apps/apps/api/documents/api.js

配置和定制

  • 设置反向代理

    如果你有一个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 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/path-to-your-document/example.docx',
            // 提供文档信息,比如创建者、创建时间等
            // 也可以定义回调 URL 在文档被编辑时 OnlyOffice Server 将发送更新
        },
        editorConfig: {
            mode: 'edit', // 或者 'view'
            callbackUrl: 'https://your-webapp/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、文档类型和键值等。

步骤4:处理 OnlyOffice Document Server 回调

当文档状态更改(例如,保存或关闭文档)时,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能

OnlyOffice Document Server 回调详细举例

OnlyOffice Document Server是一个在线办公套件,它允许用户在web浏览器中创建、查看和编辑文档、电子表格和演示文稿。为了整合OnlyOffice Document Server到第三方系统中,通常需要使用其回调机制来处理各种事件,比如文档状态变更、保存变更等。

当在OnlyOffice Document Server中打开或编辑文档时,Document Server将通过HTTP请求向预先配置的回调URL发送信息。第三方服务需要提供这个URL以接收来自Document Server的通知,并根据所接收的信息对自己的应用进行相应的操作。

回调请求是以POST方法的HTTP请求形式发送的,通常包含以下信息:

  1. 状态(status):用于表示文档当前的状态码。
  2. 网址(url):如果需要保存文档,这里会显示文档的下载链接。
  3. 错误(error):如果有错误发生,这里会显示错误代码。
  4. 用户密钥(users):打开或者正在编辑文档的用户列表。
  5. 行动(action):用户对文档执行的最近一次操作。

例如,当用户关闭文档编辑器时,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 在客户端报错The document security token is not correctly formed ,如何获取token

在OnlyOffice Document Server中,安全令牌(token)用于保护文档传输和API调用的安全。当你在客户端看到这样的错误信息时,这通常意味着你需要确保有有效的令牌被生成并正确地传递给OnlyOffice Document Server。

为了生成一个安全令牌,你需要在OnlyOffice Document Server上配置JWT(JSON Web Tokens)密钥,并使用这个密钥来签署数据。以下是一些步骤,你可以按照这些步骤生成并验证安全令牌:

  1. 启用JWT支持
    在OnlyOffice Document Server的配置文件中启用JWT支持。对于Linux系统,你可能需要编辑local.json配置文件,该文件通常位于/etc/onlyoffice/documentserver/目录下。

    services.CoAuthoring.token.enable.browserservices.CoAuthoring.token.enable.request.inbox下设置为true来启用JWT。

  2. 设置密钥
    在相同的配置文件中,找到services.CoAuthoring.secret节点,并设置你的JWT秘钥(secret)。确保这个密钥是复杂且随机的。

  3. 重启服务
    修改配置文件后,你需要重启OnlyOffice Document Server以应用更改。

  4. 生成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);
    
  5. 传递令牌
    当与OnlyOffice Document Server API进行交互时,你需要确保在HTTP请求中包含JWT令牌。例如,当加载文档编辑器时,你需要将生成的令牌作为初始化配置的一部分传递。

如何为 ONLYOFFICE 文档配置 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/post/7249958720292470840
Onlyoffice 二次开发指南 https://zhuanlan.zhihu/p/558565903

本文标签: 步骤详细ONLYOFFICEDocumentServer