企业级在线办公套件——OnlyOffice Workspace 部署使用

本文详细介绍了如何使用Docker部署OnlyOfficeWorkspace,包括社区版的各个组件如DocumentServer、ControlPanel的配置,以及在部署过程中遇到的问题和解决方案,如内存需求、服务依赖、文档安全和使用限制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍使用 Docker 部署 OnlyOffice Workspace(包括 Community Server、Control Panel、Document Server) 的详细步骤。

OnlyOffice 版本:7.4.1(目前最新版本为 7.5,10 月 18 日发布)

官网地址GitHub 仓库地址

OnlyOffice 介绍

Onlyoffice 是一款功能丰富的在线 Office 工具,类似 WPS 和 微软的 Office 套件。OnlyOffice Workspace 是由 OnlyOffice 推出的基于云计算的企业级在线协作办公平台,由文档服务(Document Server)、控制面板(Control Panel)、社区服务(Community Server)和邮件服务(Mail Server)四个组件构成,提供了文档、项目、成员、邮件等功能模块,支持文档多人协作、历史版本控制等功能,旨在帮助用户提高工作效率和工作质量。

OnlyOffice Workspace 有三个使用版本,分别为社区版(开源免费,但有使用限制)、企业版(收费)和开发版(收费)。本文主要介绍社区版 OnlyOffice Workspace 的部署和使用。

相比市面上的在线文档突出的特点(或者说使用价值):

  • 界面简洁,易操作,无广告。
  • 代码开源,支持私有化部署,数据安全。
  • 文档统一管理,功能丰富,支持文档实时协作,文档权限细粒度控制。
  • 适合企业内网使用。

部署

本文不涉及邮件服务(Mail Server)的部署,如有需要,请参考官方部署文档

服务器要求

服务器空闲内存至少要 8GB,Community Server 服务依赖 Elasticsearch,内存不足会导致 Elasticsearch 服务启动失败。本人实际搭建 OnlyOffice Workspace,内存总共消耗 12GB 左右。

配置
CPU最低 4 核,推荐 6 核
内存最低 8GB,推荐 12GB
磁盘40 GB
操作系统Linux amd64 架构,内核 3.10 版本及之后版本

创建网络

docker network create --driver bridge onlyoffice

MySQL

  1. 创建挂载目录。
sudo mkdir -p "/app/onlyoffice/mysql/conf.d";
sudo mkdir -p "/app/onlyoffice/mysql/data";
sudo mkdir -p "/app/onlyoffice/mysql/initdb";

2. 创建配置文件。

echo "[mysqld]
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf

3. 创建脚本文件。

echo "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
CREATE USER IF NOT EXISTS 'onlyoffice_user'@'%' IDENTIFIED WITH mysql_native_password BY 'onlyoffice_pass';
CREATE USER IF NOT EXISTS 'mail_admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Isadmin123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'onlyoffice_user'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'mail_admin'@'%';
FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql

4. 启动容器,映射端口可以根据情况调整。

sudo docker run --net onlyoffice -i -t -d -p 3306:3306 --restart=always --name onlyoffice-mysql-server \
-v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d \
-v /app/onlyoffice/mysql/data:/var/lib/mysql \
-v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=onlyoffice \
mysql:8.0.29

Document Server

Document Server (6.0 版本之后更名为 OnlyOffice Docs)是一个功能强大的在线文档编辑和协作平台,允许用户在 Web 浏览器中操作各种文档。

  • 支持多种文档格式,如 .docx、.xlsx、.pptx 等。
  • 支持文档共享与实时协作,多个用户可以同时编辑文档。
  • 支持私有化部署,集成到已有项目中,进行二次开发。
  • 用户能够完全掌控数据安全,实现自主托管和数据隐私控制。
  1. 创建挂载目录。
sudo mkdir -p "/app/onlyoffice/DocumentServer/data";
sudo mkdir -p "/app/onlyoffice/DocumentServer/logs";

2. 启动容器。JWT_SECRET用来配置密钥。

sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server  -e JWT_SECRET=my_jwt_secret  \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
-v /app/onlyoffice/DocumentServer/fonts:/usr/share/fonts/truetype/custom \
-v /app/onlyoffice/DocumentServer/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten onlyoffice/documentserver

Control Panel

Control Panel 提供了丰富的功能用来快速配置和管理 Workspace,包括 LDAP 和 SSO 配置、HTTPS 配置、查看登陆日志和用户操作日志等功能。

  1. 创建挂载目录
sudo mkdir -p "/app/onlyoffice/ControlPanel/data";
sudo mkdir -p "/app/onlyoffice/ControlPanel/logs";

2. 启动容器

docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-control-panel \ 
-v /var/run/docker.sock:/var/run/docker.sock \ 
-v /app/onlyoffice/CommunityServer/data:/app/onlyoffice/CommunityServer/data \ 
-v /app/onlyoffice/ControlPanel/data:/var/www/onlyoffice/Data \ 
-v /app/onlyoffice/ControlPanel/logs:/var/log/onlyoffice onlyoffice/controlpanel

Community Server

Community Server 是一个开源的协作平台,包括文档管理、项目管理、邮件管理、成员管理等功能。

  1. 创建挂载目录。
sudo mkdir -p "/app/onlyoffice/CommunityServer/data";
sudo mkdir -p "/app/onlyoffice/CommunityServer/logs";
sudo mkdir -p "/app/onlyoffice/CommunityServer/letsencrypt";

2. 启动容器。配置信息可以根据情况调整(映射端口,MySQL 配置信息)

sudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 9101:80 -p 5222:5222 --cgroupns=host \
-e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=onlyoffice \
-e MYSQL_SERVER_HOST=onlyoffice-mysql-server \
-e MYSQL_SERVER_USER=onlyoffice_user \
-e MYSQL_SERVER_PASS=onlyoffice_pass \
-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \
-e CONTROL_PANEL_PORT_80_TCP=80 \
-e CONTROL_PANEL_PORT_80_TCP_ADDR=onlyoffice-control-panel \
-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
onlyoffice/communityserver

3. 服务正常启动,会自动创建名为 onlyoffice 的数据库并生成所需的表,过程需要耗费一段时间。

image-20231017142926576.png

使用

浏览器访问ip:9101,填写用户名、密码和邮箱注册登录。登录成功后首页如下所示。至此 OnlyOffice Workspace 搭建成功。

image-20231017111430208.png

邮件添加账户

邮件模块可以集成第三方的邮件服务(QQ 邮箱、163 邮箱等),实现邮件的基本操作(发送、删除等)。

集成过程比较容易,但需要正确填写账户的配置信息,具体配置见下图。红框圈出来的部分替换为邮箱地址(例如 xxx@qq.com);登陆密码替换为邮件服务的授权码,注意不是邮箱的登陆密码,授权码在邮箱设置界面查看(QQ 邮箱——设置——账户)。

image-20231031161451346.png

image-20231031162824988.png

配置好之后,点击保存即可。

Vue 集成 Document Server

Document Server 提供了大量的 API 用于将文档编辑器集成到用户的项目中,支持二次开发。
官方 API 配置文档

  1. public/index.html文件中添加如下命令。IP:端口 为 Document Server 服务的地址。
<script type="text/javascript" src="http://IP:端口/web-apps/apps/api/documents/api.js"></script>

2. 新增 OnlyOffice 组件。jsonwebtoken依赖安装:npm install --save jsonwebtoken@8.5.1

<template>
  <div>
    <div id='OnlyOffice'></div>
  </div>
</template>
​
<script>
import jwt from 'jsonwebtoken'
export default {
  name: 'OnlyOffice',
  props: {
    option: {
      type: Object,
      default: () => {
        return {}
      },
    },
  },
  data() {
    return {
      doctype: '',
      docEditor: null,
    }
  },
  mounted() {
    if (this.option.url) {
      this.setEditor(this.option)
    }
  },
  methods: {
    // 用于初始化编辑器。参数 option,包含编辑器的各种配置选项。
    async setEditor(option) { 
      if (this.docEditor !== null) {
        this.docEditor.destroyEditor();
        this.docEditor = null;
      }
      this.doctype = this.getFileType(option.fileType)
      const document = {
        fileType: option.fileType,      // 文档类型
        key: option.key || '',          // 文档唯一值
        title: option.title,            // 文件名称
        permissions: {                  
          edit: option.isEdit,          // 是否可以编辑
          print: option.isPrint,
          download: option.isDownload,
          fillForms: true,              // 是否可以填写表单
          review: true                  // 跟踪变化
        },
        url: option.url                // 指定需打开加载文档的URL
      }
​
      const editorConfig = {
        callbackUrl: option.callbackUrl, // 编辑word后保存时回调的地址,用于后端二次开发
        lang: option.lang,              // 语言设置
        chat: {
          autosave: true,              // 是否自动保存
          chat: false,
          comments: false,
          help: false,
          //是否显示插件
          plugins: false,
        },
        user: {   // 用户信息
          id: option.user.id,
          name: option.user.name
        },
        mode: option.model ? option.model : 'edit',
      }
​
      const tokenInfo = {
        'document':document,
        'editorConfig': editorConfig 
      }
​
      const config = {
        document: document,
        documentType: this.doctype,
        editorConfig: editorConfig,
        events: {
          onAppReady: this.onAppReady,   // 当应用程序加载到浏览器时调用的函数。
          onDocumentStateChange: this.onDocumentStateChange,        // 文档被修改调用的函数。
        },
        width: '100%',          // 定义浏览器窗口中的档高度(默认为 100%)。
        height: '800px',        // 定义浏览器窗口中的文档宽度(默认为 100%)。
        token: jwt.sign( tokenInfo , "my_jwt_secret", { expiresIn: '3h' })
      }
      this.docEditor = new DocsAPI.DocEditor('OnlyOffice', config)
    },
    // 当文档被修改后调用
    onDocumentStateChange(event) { 
      console.log(event)
    },  
    /* 应用程序加载到浏览器后调用 */
    onAppReady() {
       // 创建connector连接器
      this.connector = this.docEditor.createConnector(); 
    },
    /* getFileType 方法用于根据文件类型(fileType)返回对应的文档类型(docType) */
    getFileType(fileType) {
      let docType = ''
      let fileTypesDoc = [
        'doc', 'docm', 'docx', 'dot', 'dotm', 'dotx', 'epub', 'fodt', 'htm', 'html', 'mht', 'odt', 'ott', 'pdf', 'rtf', 'txt', 'djvu', 'xps', 'word',
      ]
      let fileTypesCsv = [
        'csv', 'fods', 'ods', 'ots', 'xls', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx',
      ]
      let fileTypesPPt = [
        'fodp', 'odp', 'otp', 'pot', 'potm', 'potx', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx',
      ]
      if (fileTypesDoc.includes(fileType)) {
        docType = 'text'
      }
      if (fileTypesCsv.includes(fileType)) {
        docType = 'spreadsheet'
      }
      if (fileTypesPPt.includes(fileType)) {
        docType = 'presentation'
      }
      return docType
    }
  },
  watch: {
    option: {
      handler: function (n) {
        this.setEditor(n)
        this.doctype = this.getFileType(n.fileType)
      },
      deep: true,
    }
  }
}
</script>

3. 使用组件

<template>
  <div>
    <only-office :option="option"></only-office>
  </div>
</template>
​
<script>
import OnlyOffice from '@/components/OnlyOffice'
export default {
  data() {
    return {
      option: {
        url: 'http://ip:端口/aa.xlsx',  // 文档访问地址
        callbackUrl:'',     // 关闭文档后会调用callbackurl地址进行文档保存
        fileType: 'xlsx',   // 文件扩展名 
        key: '2222',        // 唯一,非空
        title: 'Vue集成',   // 文档文件名   
        isEdit: true,         // 是否可以编辑
        isDownload:true,      // 是否可以下载 
        lang: 'zh-CN',        // 语言:zh-CN简体中文/en英文           
        isPrint: true,        // 是否可以导出                                                 
        user: {               // 文档作者信息
          id: 666, 
          name: 'Cleaner'
        }
      }                                    
    }
  }
}
</script>

问题

梳理部署和使用 OnlyOffice Worksapce 过程中出现的问题,希望对大家有所帮助,如果你遇到了其他问题,欢迎留言讨论,建议大家多查看 Github Issues。

Community Server 启动失败

Community Server 容器内部依赖于许多其他三方服务(如 Nginx、Elasticsearch、MySQL 等)。服务启动失败时,可以通过查看容器日志或者进入容器内部查看依赖服务的状态来定位问题。

  1. 服务器内存不足,Elasticsearch 服务启动失败:扩充服务器内存。
  2. MailAggregator、MailWatchdog 服务启动失败:容器启动命令中 MySQL 的配置信息有误,检查 MySQL 用户名密码等配置信息。

文档安全令牌未正确形成

原因:OnlyOffice 从 7.2 版本开始,加入了 JWT 验证。Document Server 和 Community Server 加密和验证时密钥不一致。解决方案有两个:一、更换 OnlyOffice 版本为 7.1,二、在 Community Server 中加入 secret 配置。

  1. 进入 Document Server 容器,查看/etc/onlyoffice/documentserver/local.json文件中 secret 的配置信息。
"secret": {
   "inbox": {
       "string": "my_jwt_secret"
   },
   "outbox": {
       "string": "my_jwt_secret"
   },
   "session": {
       "string": "my_jwt_secret"
   }
}
  1. 进入 Community Server 容器中,编辑/var/www/onlyoffice/WebStudio/web.appsettings.config配置文件。找到如下配置信息并修改。
<add key="files.docservice.secret" value="my_jwt_secret" />
<add key="files.docservice.secret.header" value="Authorization" />
  1. 重启 Community Server 容器
docker restart 容器id

Document Server 20 人使用限制

Document Server 社区版本虽然是开源的,但是有 20 人的使用限制,打开文档数量超过 20 个之后,新文档只能以只读的方式打开,对于不超过 20 人的使用团队来说,这个足够了。如果要解除这个限制,提供三种解决思路:

  1. 降低 OnlyOffice 版本到 6.x,6.x 版本可以通过修改容器内部的配置文件,来解除限制,7.x 版本修复了这个问题。(缺点是版本只能停留在 6.x,新版本的功能使用不了)
  2. 代码反编译,修改源码后,重新编译镜像部署。(需要一定的技术能力)
  3. 购买企业版。(开销问题)

末尾

如果本文对你有帮助的话,欢迎 点赞 + 收藏 ,非常感谢!

我是 Cleaner,我们下期再见~

<think>嗯,用户正在寻找Mac平台上能替代Microsoft Office的合法办公软件。从对话历史来看,用户之前询问过Office LTSC 2024 for Mac的情况,现在转向寻找替代品,说明ta可能对微软产品的兼容性或授权方式不太满意。 用户提供的引用材料很有价值。引用[1]提到Mac平台除了Microsoft Office和iWork外,还有Google Docs、LibreOffice和WPS Office等免费选择。引用[3]则指出WPS在全球范围内是较经济的替代方案,而引用[4]推荐了开源免费的OpenOffice。不过需要注意,这些引用有些信息需要更新——比如OpenOffice现在已不如LibreOffice活跃。 考虑到用户明确要求"合法替代",我会重点推荐真正开源或商业授权的软件,避免任何盗版嫌疑。用户可能是学生或预算有限的个人用户,所以免费方案要优先考虑;也可能是专业人士,需要评估专业功能。 从技术角度看,需要区分三类替代方案: 1)云端协作型(如Google Docs)适合轻量级使用 2)开源桌面套件(如LibreOffice)提供完整离线功能 3)专业办公套件(如WPS)在兼容性上更优 特别要注意Mac系统的特殊性:必须支持macOS文件系统、Retina显示优化、原生快捷键等。比如OnlyOffice虽然跨平台,但它的Mac版体验就比Windows版稍弱。 用户可能没意识到格式兼容性的重要性。很多人在.docx和.xlsx文件协作时会遇到排版错乱问题,这点需要特别提醒。测试时应该用$f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$这样的复杂公式文档来验证兼容性。 安全方面也要强调,下载开源软件必须从官网获取,避免第三方渠道的篡改风险。可以建议用户用终端命令验证安装包哈希值: $$ \text{shasum -a 256 LibreOffice\_pkg\_file} $$ 最后生成的问题要覆盖不同使用场景:学生写论文可能更关注iWork的免费优势,财务人员则更看重WPS的Excel兼容性,而团队协作场景需要强调Google Docs的实时协作价值。</think>以下是针对 Mac 平台的合法 Microsoft Office 替代软件推荐,结合功能完整性和兼容性进行分级说明: --- ### 一、专业级替代方案(完整办公套件) 1. **Apple iWork 套件**(**免费预装**) - 包含:Pages(文档)、Numbers(表格)、Keynote(演示) - 优势: - 深度集成 macOS 生态(iCloud 同步、Handoff 接力) - 完美兼容 Office 格式(支持 .docx/.xlsx/.pptx 双向编辑)[^1] - 设计模板优于 Office - 适用场景:日常办公/学术用途 2. **LibreOffice**(**开源免费**) ```mermaid graph LR A[核心组件] --> B[Writer] A --> C[Calc] A --> D[Impress] A --> E[Base] ``` - 兼容性: - 支持 VBA 宏(部分) - 可处理超过 100 种文件格式 - 扩展性:通过扩展库增强 PDF 编辑/公式识别等功能 - 注意:界面设计较传统,对高分辨率屏幕适配一般 3. **WPS Office for Mac**(**免费+增值服务**) - 特色功能: - 1:1 还原 Office 界面布局 - 云文档同步(免费 1GB) - PDF 转 Word/Excel(免费基础版) - 格式兼容性: $$ \text{MS Office 兼容度} \approx 98\% \text{(复杂排版可能偏移)} $$ --- ### 二、云端协作方案 1. **Google Workspace** - 包含:Docs/Sheets/Slides(通过浏览器使用) - 核心优势: - 实时多人协作(历史版本追溯) - 无需安装,自动保存 - 与 Gmail/Calendar 深度整合 - 离线方案:通过 Chrome 浏览器启用离线模式 2. **OnlyOffice** - 特色: - 开源版可本地部署 - 支持 DOCX/XLSX 的加密编辑 - 集成 Jitsi 视频会议 --- ### 三、垂直领域工具 | 类型 | 推荐软件 | 核心优势 | |---------------|-------------------------|-----------------------------------| | **笔记管理** | Obsidian | 双向链接+Markdown 本地存储 | | **项目管理** | OmniFocus | GTD 方法论深度实践 | | **PDF 编辑** | PDF Expert | 批注/表单填写/OCR 识别 | | **数据库** | FileMaker Pro | 可视化数据库开发 | --- ### 四、选择建议矩阵 ```math \text{选择优先级} = \frac{\text{格式兼容需求} \times 0.4 + \text{协作需求} \times 0.3 + \text{成本因素} \times 0.3}{\text{专业深度}} ``` | 用户场景 | 首选方案 | 备选方案 | |----------------|-------------------|-------------------| | 学生/个人 | iWork | LibreOffice | | 企业团队协作 | Google Workspace | OnlyOffice | | 深度 Office兼容| WPS Office | SoftMaker Office | | 开源需求 | LibreOffice | Calligra Suite | --- ### 五、安全验证建议 下载任何软件前务必: 1. 检查官网域名认证(如 LibreOffice 应为 `*.org` 非 `.com`) 2. 终端验证安装包哈希值: ```bash shasum -a 256 /Downloads/LibreOffice.dmg ``` 3. 启用 macOS Gatekeeper(系统设置 > 隐私与安全性) > 微软官方明确声明:Office for Mac 仅提供 **Microsoft 365订阅版** 和 **Office 2021 买断版**,无 LTSC 版本[^2]。第三方所谓 "Office LTSC for Mac" 均属非法篡改。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值