admin管理员组

文章数量:1549864

        今天准备升级使用docker-ce安装和运行的seafile网盘社区版的onlyoffice组件到最新的7.2版本。

        使用下面的命令下载最新的7.2版本的onlyoffice镜像:

# docker pull onlyoffice/documentserver:7.2

# docker images| egrep "REPOSITORY|onlyoffice"
REPOSITORY                         TAG       IMAGE ID       CREATED         SIZE
onlyoffice/documentserver          7.2       add62637ac9b   3 weeks ago     3.35GB

        然后修改docker-compose的配置文件中的版本配置:

  onlyoffice:
    image: onlyoffice/documentserver:7.2
    container_name: onlyoffice
    ports:
      - "18081:80"
    extra_hosts:
      - "www.myseafile:192.168.223.199"
    volumes:
      - /data/onlyoffice/DocumentServer/logs:/var/log/onlyoffice
      - /data/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data
      - /data/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice
      - /data/onlyoffice/DocumentServer/db:/var/lib/postgresql
    networks:
      - seafile-net

        更新配置后,使用docker-compose来启动seafile网盘,网盘服务启动成功后,发现使用onlyoffice 7.2版本来打开网盘中的word文档,出现了下面的报错提示:

        

        查询资料后,发现这个报错与7.2版本默认开启 JWT 令牌有关系(7.2之前的版本,并没有出现过这样的报错)。从onlyoffice的欢迎页面也可以看出来,从7.2版本开始,onlyoffice将默认启用JWT令牌功能。

        上面的 docker exe [ onlyoffice_container_name ] 命令,其实就是获取local.json里面随机生成的密钥信息。onlyoffice的容器ID可以通过docker ps来获取。我这边直接将容器里面的local.json(本地先创建一个和容器里面内容一致的同名文件),然后在配置文件中将本地文件和容器文件进行映射。

  onlyoffice:
    image: onlyoffice/documentserver:7.2
    container_name: onlyoffice
    ports:
      - "18081:80"
    extra_hosts:
      - "www.myseafile:192.168.223.199"
    volumes:
      - /data/onlyoffice/DocumentServer/logs:/var/log/onlyoffice
      - /data/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data
      - /data/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice
      - /data/onlyoffice/DocumentServer/db:/var/lib/postgresql
      - /data/onlyoffice/DocumentServer/local.json:/etc/onlyoffice/DocumentServer/local.json
    networks:
      - seafile-net

        然后在seahub_settings.py文件中增加下面的配置信息。

ONLYOFFICE_JWT_SECRET = 'xxxxxx'

        配置修改后保存,将容器down掉,重新up -d,然后再测试使用onlyoffice打开word文件,发现还是无法正常打开,但是这次的报错变成了:下载失败。但是,网盘本身的文件上传、下载都是正常的。

        这个问题目前还没有找到原因,只好还原配置,回退到onlyoffice 7.1版本镜像。回退后,使用onlyoffice 7.1打开、编辑文档,恢复正常。

------------------------------------ 2023/9/28日 更新 ------------------------------------

Onlyoffice 7.2 版本 JWT 认证解决方案说明如下:

在docker-compose.yml里面的onlyoffice配置,增加下面的配置:

    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=my_little_secret
      - JWT_HEADER=Authorization
      - JWT_IN_BODY=true

在 seahub_settings.py 原有文档编辑配置中增加下面的配置:

VERIFY_ONLYOFFICE_CERTIFICATE = True
ONLYOFFICE_JWT_SECRET = 'my_little_secret'

重启容器实例,即可解决文档无法打开和编辑的问题。

补充故障记录:

onlyoffice 7.3容器(7.2版本估计也存在)与docker-ce 19.0存在兼容性问题,onlyoffice容器实例启动后,端口异常,docker logs [container ID] -f 会看见下面的报错,联网查询,Github上的记录是兼容性存在问题,将 onlyoffice 镜像版本降级到 7.1 后,启动容器实例成功,可以正常编辑文档。

------------------------------------ 2023/9/28日 更新 ------------------------------------

参考

https://forum.seafile/t/seafile-pro-7-1-3-with-onlyoffice-secret-jwt-blank-screen/11629

https://roy.wang/onlyoffice-set-jwt-key/ 

本文标签: 版本ONLYOFFICEDockerCEjwt