iTech / Linux · 2022年4月4日

部署Dcoker版OnlyOffice

准备工作

按照onlyoffice 官方推荐的机器配置准备一下机器。

mkdir -p /opt/onlyoffice/DocumentServer/data/certs/

Recommended System Requirements

  • RAM: 4 GB or more
  • CPU: dual-core 2 GHz or higher
  • Swap file: at least 2 GB
  • HDD: at least 2 GB of free space
  • Distributive: 64-bit Red Hat, CentOS or other compatible distributive with kernel version 3.8 or later, 64-bit Debian, Ubuntu or other compatible distributive with kernel version 3.8 or later
  • Docker: version 1.9.0 or later

部署安装

申请https证书

推荐使用freessl.cn申请证书,可以用1年。证书申请到后,将证书的名称改为onlyoffice.crt和onlyoffice.key,存放到/opt/onlyoffice/DocumentServer/data/certs中。

安装代码

docker run -i -t -d  --name onlyoffice --restart=always --privileged=true -p 880:80 -p 4430:443 \
    -v /opt/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
    -v /opt/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  onlyoffice/documentserver

为什么要加上--privileged=true这个代码,是因为如果不加上的话会出现容器Permission denied错误,导致容器运行不起来。

测试 DocumentServer 是否在运行

安装过程完成后,访问这个页面来确保您的 OnlyOffice 工作正常:http{s}://{your Seafile Server's domain or IP}/welcome,您将会在这个页面中得到Document Server is running

设置OnlyOffice自动保存

使用 OnlyOffice 打开文件时,OnlyOffice 只会在用户关闭页面后向Seafile发送文件保存请求。 如果用户长时间未关闭页面,则用户对文件的更改将不会及时保存在Seafile上。

您现在可以通过更改 OnlyOffice 的配置来设置自动保存。

{

    "services": {

        "CoAuthoring": {

            "autoAssembly": {

                "enable": true,

                "interval": "5m"

            }

        }

    }

}
  1. 进入到 onlyoffice/documentserver 容器中;
  2. 打开 OnlyOffice 的配置文件: /etc/onlyoffice/documentserver/local.json
  3. 添加以下配置信息:
  4. 重启 OnlyOffice: supervisorctl restart all

更多信息可以访问OnlyOffice的官方文档:https://api.onlyoffice.com/editors/save

自定义onlyoffice中文字体

因为Onlyoffice对中文字体的支持不是太好,所以需要修改一下中文字体来适应中文用户。

进入容器

docker exec -it onlyoffice /bin/bash

删除原版自带字体

cd /usr/share/fonts/
rm -rf *
cd /var/www/onlyoffice/documentserver/core-fonts/
rm -rf *
exit #退出容器

复制字体到onlyoffice容器中

docker cp /opt/onlyoffice/fonts onlyoffice:/usr/share/fonts/truetype/custom

再次进入容器

docker exec -it onlyoffice /bin/bash

执行一下代码

/usr/bin/documentserver-generate-allfonts.sh

配置Seafile服务

添加以下配置信息到seahub_settings.py

# Enable Only Office

ENABLE_ONLYOFFICE = True

VERIFY_ONLYOFFICE_CERTIFICATE = False

ONLYOFFICE_APIJS_URL = 'http{s}://{your OnlyOffice server's domain or IP}/web-apps/apps/api/documents/api.js'

ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')

ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')

重启seafile容器

docker container restart seafile