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的自定义设置
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。