扩展在线文档预览/编辑
本文将介绍三种支持 WOPI 协议的服务的部署及对接方式。通过实现自己的 WOPI 客户端,扩展 Cloudreve 的预览编辑能力(不仅限于 Office 文档)。
docker pull collabora/code
docker run -t -d -p 127.0.0.1:9980:9980 \
-e "aliasgroup1=<允许使用此服务的 Cloudreve 地址,包含明确端口>" \
-e "username=<面板管理员用户名>" \
-e "password=<面板管理员密码>" \
--name code --restart always collabora/code
以官方演示站为例:
docker run -t -d -p 127.0.0.1:9980:9980 \
-e "aliasgroup1=https://demo.cloudreve.org:443" \
-e "username=<面板管理员用户名>" \
-e "password=<面板管理员密码>" \
--name code --restart always collabora/code
Container 启动后,配置 Nginx 或其他 Web 服务器反向代理
https://127.0.0.1:9980
, 可参考 Proxy settings,确保反代后的服务能够被你的最终用户访问,你可以手动访问 <你的服务主机>/hosting/discovery
来确认是否返回了预期的 XML 响应。在 后台 - 参数设置 - 图像与预览 - 文件预览 - WOPI 客户端 中开启
使用 WOPI
并在 WOPI Discovery Endpoint
中填入<你的服务主机>/hosting/discovery
。保存后可在前台测试文档预览和编辑:docker run -i -t -d -p 8080:80 -e WOPI_ENABLED=true onlyoffice/documentserver
ONLYOFFICE Docs中,WOPI默认非激活。 启用WOPI,修改配置文件: /etc/onlyoffice/documentserver/local.json,并设置wopi.enable参数为true
- 从Docker将文件拷贝出 (be01de974ce4为容器ID)
docker cp be01de974ce4:/etc/onlyoffice/documentserver/local.json /root
- 修改文件,增加如下内容,定义ipfilter访问 过滤规则
- "ipfilter": { "rules": [ { "address": "ip_address", "allowed": true }, { "address": "*", "allowed": false } ], "useforrequest": true, "errorcode": 403 }
OnlyOffice 不支持过滤 WOPI 请求来源,设置 WOPI 请求允许,
"wopi": {
"enable": true
}
完整配置如下:
{ "services": { "CoAuthoring": { "sql": { "type": "postgres", "dbHost": "localhost", "dbPort": "5432", "dbName": "onlyoffice", "dbUser": "onlyoffice", "dbPass": "onlyoffice" }, "token": { "enable": { "request": { "inbox": true, "outbox": true }, "browser": true }, "inbox": { "header": "Authorization", "inBody": false }, "outbox": { "header": "Authorization", "inBody": false } }, "secret": { "inbox": { "string": "YCp2eyqe63YmIbrAwZzYNAceyFheeqws" }, "outbox": { "string": "YCp2eyqe63YmIbrAwZzYNAceyFheeqws" }, "session": { "string": "YCp2eyqe63YmIbrAwZzYNAceyFheeqws" } } } }, "rabbitmq": { "url": "amqp://guest:guest@localhost" }, "storage": { "fs": { "secretString": "oV72FWk1AxbSqnenqe7S" } },"wopi": { "enable": true }}
- 将文件拷贝到Docker镜像里
docker cp /root/local.json be01de974ce4:/etc/onlyoffice/documentserver/
- 重启服务
docker exec -it be01de974ce4 /bin/bash
supervisorctl restart all
你可以手动访问
<你的 OnlyOffice 主机>/hosting/discovery
来确认是否返回了预期的 XML 响应。在 后台 - 参数设置 - 图像与预览 - 文件预览 - WOPI 客户端 中开启
使用 WOPI
并在 WOPI Discovery Endpoint
中填入<你的服务主机>/hosting/discovery
。保存后可在前台测试文档预览和编辑:OnlyOffice 不支持过滤 WOPI 请求来源,如果你有对公使用需求,请通过外部应用防火墙检查预览页面请求中
wopisrc
参数是否为预期的 Cloudreve 站点。Onlyoffice安装字体
- 复制字体到docker
sudo docker cp /root/data/fonts 容器id:/usr/share/fonts/
- 进入容器
docker exec -it 容器id /bin/bash
- 到bin目录
cd /usr/bin
- 执行
./documentserver-generate-allfonts.sh
- 退出容器,重启容器
exit
docker restart onlyoffice
你可以手动访问
<你的 OnlyOffice 主机>/hosting/discovery
来确认是否返回了预期的 XML 响应。在 后台 - 参数设置 - 图像与预览 - 文件预览 - WOPI 客户端 中开启
使用 WOPI
并在 WOPI Discovery Endpoint
中填入<你的服务主机>/hosting/discovery
。保存后可在前台测试文档预览和编辑:Office Online Server 不支持过滤 WOPI 请求来源,如果你有对公使用需求,请通过外部应用防火墙检查预览页面请求中
wopisrc
参数是否为预期的 Cloudreve 站点。Web Application Open Platform Interface (WOPI) 协议是一种用于集成 Web 文档编辑器的协议,你可以在 微软的文档 中阅读详细的协议定义。Cloudreve 可以对接实现了 WOPI 协议的文档处理服务,用于扩展已有的文档预览和编辑能力。