OnlyOffice 集成

Seafile 支持集成 OnlyOffice 来在线编辑和预览office文档。 要想使用 OnlyOffice,你必须先部署一个 OnlyOffice 服务。
你可以根据本文档使用 Seafile 提供的 “onlyoffice.yml” 将 OnlyOffice 部署到与 Seafile 相同的机器上(仅支持在具有足够内核和内存的情况下使用 Docker 进行部署),或者你可以根据 onlyoffice官方文档 将其部署到不同的机器上。
部署OnlyOffice
下载     onlyoffice.yml
            
                
                
# 13.0
wget https://manual.seafile.com/13.0/repo/docker/onlyoffice.yml

# 12.0
wget https://manual.seafile.com/13.0/repo/docker/onlyoffice.yml
onlyoffice.yml 添加到 COMPOSE_FILE 列表中(例如: COMPOSE_FILE='...,onlyoffice.yml' ),并在 .env 文件中加入以下配置:
            
                
                
# OnlyOffice 镜像
ONLYOFFICE_IMAGE=onlyoffice/documentserver:8.1.0.1

# OnlyOffice 的持久化存储目录
ONLYOFFICE_VOLUME=/opt/onlyoffice

# OnlyOffice 文档服务器端口
ONLYOFFICE_PORT=6233

# jwt 密钥,通过 `pwgen -s 40 1` 生成
ONLYOFFICE_JWT_SECRET=<your jwt secret>
注意: 从 Seafile 12.0 开始,OnlyOffice 的 JWT 验证会被强制启用。Seafile 和 OnlyOffice 之间的安全通信依赖于共享的密钥。你可以用以下命令生成 JWT secret: pwgen -s 40 1
修改seahub_settings.py
13.0:
            
                
                
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = True
ONLYOFFICE_APIJS_URL = 'https://seafile.example.com:6233/web-apps/apps/api/documents/api.js'
ONLYOFFICE_JWT_SECRET = '<your jwt secret>'

# 说明:
# 以下两个配置项无需显式设置,它们有默认值。
# 如果有自定义需求,可以覆盖默认配置。
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods', 'ppsx', 'pps', 'csv')
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx', 'csv')
OFFICE_PREVIEW_MAX_SIZE = 30 * 1024 * 1024 # 预览大小上限,30MB,此选项13.0版本启用
12.0:
            
                
                
ENABLE_ONLYOFFICE = True
ONLYOFFICE_APIJS_URL = 'https://seafile.example.com:6233/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods', 'csv', 'ppsx', 'pps')
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')
ONLYOFFICE_JWT_SECRET = '<your jwt secret>'
提示: 默认情况下,OnlyOffice 会使用 6233 端口与 Seafile 通信。你可以通过 ONLYOFFICE_PORT 修改绑定的端口,同时需要同步修改 seahub_settings.py 中的 ONLYOFFICE_APIJS_URL
Onlyoffice的自定义设置
以下配置选项是 OnlyOffice 更专业操作。您可以创建并挂载一个名为 local-production-linux.json 的自定义配置文件来进行 onlyoffice 高级设置
            
                
                
nano local-production-linux.json
例如,可以配置 OnlyOffice 自动保存,复制以下内容到该文件:
            
                
                
{
   "services": {
     "CoAuthoring": {
       "autoAssembly": {
         "enable": true,
         "interval": "5m"
       }
     }
   },
   "FileConverter": {
     "converter": {
       "downloadAttemptMaxCount": 3
     }
   }
}
然后将该配置文件挂载到 onlyoffice.yml 的 onlyoffice 服务配置中:
            
                
                
service:
   ...
   onlyoffice:
     ...
     volumes:
       ...
       - <你的 local-production-linux.json 路径>:/etc/onlyoffice/documentserver/local-production-linux.json
...

更多信息请查看onlyoffice官方手册:
重启seafile-docker 测试 onlyoffice 是否运行
            
                
                
docker-compose down
docker-compose up -d
安装过程完成后,访问这个页面来确保您的 OnlyOffice 工作正常: http{s}://{your Seafile Server's domain or IP}:6233/welcome ,您将会在这个页面中看到 Document Server is running
常见问题
下载失败
首先,运行 docker logs -f seafile-onlyoffice ,然后打开一个office文件。在页面上出现 “下载失败” 错误后,查看日志中是否有以下错误:
            
                
                
==> /var/log/onlyoffice/documentserver/converter/out.log <==
...
Error: DNS lookup {local IP} (family:undefined, host:undefined) is not allowed. Because, It is a private IP address.
...
如果你在本地网络中使用 OnlyOffice,但未启用 JWT,这可能是 OnlyOffice 出于安全考虑触发的限制。
解决方案:启用 JWT 即可修复此问题。
文档安全令牌格式不正确
从 OnlyOffice Docker-DocumentServer 7.2 版本开始,JWT 默认启用。
因此,请确保正确配置 ONLYOFFICE_JWT_SECRET ,以便 Seafile 和 OnlyOffice 安全通信。
独立部署的Onlyoffice
一般情况下,你只需在 seahub_settings.py 中指定以下配置并重启服务:
            
                
                
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = True
ONLYOFFICE_APIJS_URL = 'http{s}://<你的 OnlyOffice 主机>/web-apps/apps/api/documents/api.js'
ONLYOFFICE_JWT_SECRET = '<your jwt secret>'
OFFICE_PREVIEW_MAX_SIZE = 30 * 1024 * 1024 # 预览大小上限,30MB
关于SSL
对于使用本文档中的 onlyoffice.yml 文件进行的部署,SSL 主要由 Caddy 处理。如果 OnlyOffice 文档服务器和 Seafile 服务器不在同一台机器上,请参考 官方文档 为 OnlyOffice 配置 SSL。