Seafile 支持集成 OnlyOffice 来在线编辑和预览office文档。要想使用 OnlyOffice,你必须先部署一个 OnlyOffice 服务。
你可以根据本文档使用 Seafile 提供的 “onlyoffice.yml” 将 OnlyOffice 部署到与 Seafile 相同的机器上(仅支持在具有足够内核和内存的情况下使用 Docker 进行部署),或者你可以根据 onlyoffice官方文档将其部署到不同的机器上。
部署OnlyOffice
下载onlyoffice.yml
#13.0wgethttps://manual.seafile.com/13.0/repo/docker/onlyoffice.yml
#12.0wgethttps://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-s401`生成ONLYOFFICE_JWT_SECRET=<yourjwtsecret>注意:从 Seafile 12.0 开始,OnlyOffice 的 JWT 验证会被强制启用。Seafile 和 OnlyOffice 之间的安全通信依赖于共享的密钥。你可以用以下命令生成 JWT secret:pwgen -s 40 1
修改seahub_settings.py
13.0:
ENABLE_ONLYOFFICE=TrueVERIFY_ONLYOFFICE_CERTIFICATE=TrueONLYOFFICE_APIJS_URL='https://seafile.example.com:6233/web-apps/apps/api/documents/api.js'ONLYOFFICE_JWT_SECRET='<yourjwtsecret>'
#说明:#以下两个配置项无需显式设置,它们有默认值。#如果有自定义需求,可以覆盖默认配置。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的自定义设置
nanolocal-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-composedown
docker-composeup-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:DNSlookup{localIP}(family:undefined,host:undefined)isnotallowed.Because,ItisaprivateIPaddress.
...
如果你在本地网络中使用 OnlyOffice,但未启用 JWT,这可能是 OnlyOffice 出于安全考虑触发的限制。
解决方案:启用 JWT 即可修复此问题。
文档安全令牌格式不正确
从 OnlyOffice Docker-DocumentServer 7.2 版本开始,JWT 默认启用。
因此,请确保正确配置 ONLYOFFICE_JWT_SECRET,以便 Seafile 和 OnlyOffice 安全通信。
独立部署的Onlyoffice
一般情况下,你只需在 seahub_settings.py 中指定以下配置并重启服务:
ENABLE_ONLYOFFICE=TrueVERIFY_ONLYOFFICE_CERTIFICATE=TrueONLYOFFICE_APIJS_URL='http{s}://<你的 OnlyOffice 主机>/web-apps/apps/api/documents/api.js'ONLYOFFICE_JWT_SECRET='<yourjwtsecret>'OFFICE_PREVIEW_MAX_SIZE=30*1024*1024#预览大小上限,30MB关于SSL
对于使用本文档中的onlyoffice.yml文件进行的部署,SSL 主要由Caddy处理。如果 OnlyOffice 文档服务器和 Seafile 服务器不在同一台机器上,请参考官方文档为 OnlyOffice 配置 SSL。