跳转到内容

OnlyOffice 在线文档浏览

时光2025/8/290 0 m

建议

ONLYOFFICE文档(英文名ONLYOFFICE Docs) 是由 Ascensio System SIA 公司开发的一套在线办公软件,可以查看并编辑文本文件、电子表格和演示文稿,无需安装任何其他软件。

Docker 部署

Docker 部署

bash
docker run -it -d -p 8080:80 --restart=always --name onlyoffice \
  -e JWT_ENABLED=false \
  -e USE_UNAUTHORIZED_STORAGE=true \
  -e ONLYOFFICE_HTTPS_HSTS_ENABLED=false \
  -v /root/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
  -v /root/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
  -v /root/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
  -v /root/onlyoffice/DocumentServer/db:/var/lib/postgresql \
  -v /root/onlyoffice/DocumentServer/fonts:/usr/share/fonts \
  onlyoffice/documentserver

创建反代

8080端口暴露到互联网,确保外网能够正常访问。

创建跳板文件

将下面 html 文件放到/root/onlyoffice/view.html路径下,使用 Nginx 反代或者 lucky 万吉反代,根据实际情况修改里面的 src,确保外网能够访问。

html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>OnlyOffice Viewer</title>
  </head>

  <body>
    <div id="placeholder"></div>
    <script
      type="text/javascript"
      src="https://你的域名或IP:8080/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-CN",
          mode: "view",
        },
        height: "1080px",
        type: "desktop",
      });
    </script>
  </body>
</html>

添加字体

清除字体包

bash
# 进入onlyOffice容器
docker exec -it onlyoffice /bin/bash

# 找到字体包目录
cd /var/www/onlyoffice/documentserver/core-fonts
# 删除所有字体库
rm -rf *
# 进入字体缓存目录
cd /var/www/onlyoffice/documentserver/fonts
# 删除所有缓存
rm -rf *

# 删除其它目录字体库
cd /usr/share/fonts
# 除了truetype/目录其它都删除,因为这个目录删不了😄

导入字体包

bash
# 退出容器,把导入到Linux系统的字体包拷贝到容器
docker cp fonts.tar onlyoffice:/usr/share/fonts/

# 进入容器
docker exec -it onlyoffice /bin/bash

# 进入字体包目录
cd /usr/share/fonts
# 解压字体包
tar -xf fonts.tar
mv fonts/* ./

# 最后让onlyOffice加载字体缓存即可
/usr/bin/documentserver-generate-allfonts.sh

最后:清除浏览器缓存(重要的事情说三遍)

VitePress Algolia Twikoo EdgeOne Copyright