Docker 部署 Openlist 以及 Onlyoffice 在线预览

Docker 部署 Openlist 以及 Onlyoffice 在线预览

由于 Alist 被收购,并且收购公司涉嫌收集用户隐私数据,所以 Alist 使用者成立 Openlistteam,从 Alist 分支出 Openlist 项目。

目前 Openlist 已接近稳定,所以可以搭建使用,并可以配置 Onlyoffice 作为在线预览 Office 文档。

使用如下 compose 文件可以快速进行搭建:

services:
  openlist:
    image: openlistteam/openlist:v4.0.9
    container_name: openlist
    volumes:
      - ./openlist:/opt/openlist/data
    ports:
      - 5244:5244
    environment:
      - PUID=0
      - PGID=0
      - UMASK=022
    restart: unless-stopped
  # onlyoffice
  onlyoffice:
    image: superkeyor/onlyoffice
    container_name: onlyoffice
    ports:
        - 5245:80
    restart: always

这里的 superkeyor/onlyoffice 镜像并非官方镜像,因为需要在 onlyoffice 容器内修改文件才能达到实现预览的目的,所以使用的网友提供的镜像。如果有必要,也可以根据官方镜像自行构建。

安装后,通过 docker logs -f openlist 查看 admin 用户密码。

然后在 openlist 后台配置 onlyoffice:

d2b5ca33bd20251122215552

效果如图:

d2b5ca33bd20251122215614

其他

这里只是为了记录一下探索 openlist 集成 onlyoffice 的过程,可以略过。以下大部分内容来自 alist 的 github 讨论

首先,如果按照以下方式搭建 onlyoffice,是无法使用的。

services:
  onlyoffice:
    image: onlyoffice/documentserver:8.1
    container_name: onlyoffice
    ports:
        - 8080:80
    restart: always
    volumes:
      - /home/docker/onlyoffice/data:/var/www/onlyoffice/Data
      - /home/docker/onlyoffice/logs:/var/log/onlyoffice
    environment:
      - JWT_SECRET=123456
      #- JWT_ENABLED=false

如果使用 JWT_SECRET 那么就需要令牌进行访问,会导致 openlist 访问不到,所以需要设置 JWT_ENABLED=false

并且需要进入容器修改 /etc/onlyoffice/documentserver/default.json 文件:

  • rejectUnauthorized: false

关闭 ssl,内网不需要。

  • allowPrivateIPAddress、allowMetaIPAddress 设置为 true

允许使用 ip 访问,内网不需要域名。

然后需要在一个 openlist 可以访问到的地方,新建一个 view.html 文件:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>OnlyOffice Viewer</title>
    <style>
      html,
      body {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
      }
      #placeholder {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
      }
    </style>
  </head>
 
  <body>
    <div id="placeholder"></div>
    <script
      type="text/javascript"
      src="http://x.x.x.x:xxxx/web-apps/apps/api/documents/api.js"
    ></script>
    <script>
      function getQueryParamValue(name) {
        const searchParams = new URLSearchParams(window.location.search);
        return searchParams.get(name);
      }
 
      const url = decodeURIComponent(getQueryParamValue("src"));
      const fileName = url.substring(
        url.lastIndexOf("/") + 1,
        url.lastIndexOf("?") != -1 ? url.lastIndexOf("?") : url.length
      );
      const fileExtension = fileName.split(".").pop();
      const docEditor = new DocsAPI.DocEditor("placeholder", {
        document: {
          fileType: fileExtension,
          permissions: {
            edit: false,
            comment: true,
            download: true,
            print: true,
            fillForms: true,
          },
          title: fileName,
          url: url,
        },
        editorConfig: {
          lang: "zh",
          mode: "view",
        },
        height: "100%",
        type: "embedded",
      });
    </script>
  </body>
</html>

这里写的是 http://x.x.x.x:xxxx/,当然也可以将该文件放在 onlyoffice 容器内的 /var/www/onlyoffice/documentserver/web-apps/apps/api/documents/ 目录下,则可以去掉前面这部分内容。

另外,如果需要启用编辑模式,还需要配置回调,即将修改后的文件保存到 openlist。这个比较复杂,暂时先不折腾了,如果以后折腾了再完善这一部分,或者直接修改搭建的容器,以便直接启用。

© 版权声明
THE END
喜欢就支持一下吧
点赞22 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容