Onlyoffice问题调试 作者: Hogwarts 发布于: 2023-06-20 更新于: 2023-06-21 分类: 默认分类 在使用cloudreve预览自定义onlyoffice的过程中增加了使用onlyoffice的信心。遂在alist中尝试使用。 #一、alist文档情况 ![iframe.png](https://winamp.top/usr/uploads/2023/06/3936662802.png) 这个“you_only_office_url”写的非常好,调试不好别赖我。在提交Issues时的前提写的也很好 请确认以下事项 我已经阅读了文档。 我确定没有重复的问题或讨论。 我确定这是由于alist而不是其他原因(例如Dependencies或Operational)。 我确定我使用的是最新版本 这锅甩的我竟然无言以对。 #二、you_only_office_url 的解决 过程就不再多表了,像cloudreve那样肯定是不行滴。 在alist管理后台中原样是这样的`https://domain.com/view.html?src=$e_url` 看的一头雾水,遂在Issues中搜索,功夫不负有心人。 [关于alist使用onlyoffice的配置问题](https://github.com/alist-org/alist/discussions/3255 "关于alist使用onlyoffice的配置问题") 中表示需自行建立一个view.html并放入容器中,问题来了view.html的内容是什么,放到容器的哪个目录呢。 ##2.1 view.html 内容 OnlyOffice Viewer 这里面的`src="https://documentserver/web-apps/apps/api/documents/api.js"`中的 `documentserver`需修改为搭建onlyoffice服务的域名和端口。例如:`https://yourdomain.com:4443 `这种样子。 ##2.2 将view.html放入容器web目录 先上传到VPS或者VPS中新建也行。 默认的onlyoffice的web目录,应该是 `/var/www/onlyoffice/documentserver/web-apps/apps`,没仔细研究onlyoffice的文档,不权威。 所以将view.html放入以上目录,或放入api的目录 `/var/www/onlyoffice/documentserver/web-apps/apps/api/documents`也可以。 对应的访问地址为: `https://yourdomain.com:port/web-apps/apps/view.html`和`https://yourdomain.com:port/web-apps/apps/api/documents/view.html`。 拷贝到相应目录命令 docker cp view.html [容器ID]:/容器路径/ ##2.3 检测 将view.html放入web目录后,重启容器。 重启容器命令一般为:`docker restart 容器名` 这种方式有时不起作用,需重启docker,所以我的理解是错误的。 正确的重启方式是进入容器并运行重启命令。 docker exec -it [容器id] /bin/bash -c "supervisorctl restart all" 在浏览器中输入2.2中的地址 显示:`The "document.fileType" parameter for the config object is invalid. Please correct it.`表示运行成功。 显示:`Cannot GET /view.html`表示存在问题。 ##2.4 添加到 iframe 中 测试成功后将2.2中的地址放入`alist管理后台-设置预览`的iframe中。默认如下 "doc,docx,xls,xlsx,ppt,pptx": { "Microsoft":"https://view.officeapps.live.com/op/view.aspx?src=$e_url", "Google":"https://docs.google.com/gview?url=$e_url&embedded=true" }, 按文档示例将“Microsoft”那一行修改为 "Onlyoffice":"https://yourdomain.com:port/web-apps/apps/view.html?src=$e_url", #注意路径 在前台打开文档测试,如果报错将尾部的`?src=$e_url`改为`?src=$durl`。我改了,不改不行。结果如下 "Onlyoffice":"https://yourdomain.com:port/web-apps/apps/view.html?src=$durl" ##2.5 alist的设置到此设置完毕 以为能顺利使用了,太天真了。 介仅仅是 iframe 调试成功了而已。 继续填坑吧。 #三、Onlyoffice的坑 将iframe设置完毕后简单的以为能正常使用了,Onlyoffice的麻烦还不止于此。 ##3.1 安全令牌问题 报错:文档安全令牌未正确生成,请与您的文件服务器管理员联系。 解决:拷贝local.json修改后并拷贝到容器,重启容器。 #从容器拷贝文件命令 docker cp [容器ID]:/etc/onlyoffice/documentserver/local.json ./ #修改 vim local.json 将local.json中的inbox、outbox、browser三项的 true 改为 false "token": { "enable": { "request": { "inbox": true, #true改为false "outbox": true #true改为false }, "browser": true #true改为false #拷贝到容器命令 docker cp local.json [容器ID]:/etc/onlyoffice/documentserver/local.json #重启容器 docker exec -it [容器id] /bin/bash -c "supervisorctl restart all" 存在的问题:`停止容器再启动此设置失效`,需重新来过。 ##3.2 下载失败 此问题未解决,坑还未填满。继续拉土搬砖填坑。 除了在 docker run 中加 --dns 选项,其它尝试都以失败而告终。 ###3.2.1 可能存在的问题 ####1、非标准端口运行 即onlyoffice必须运行在80和443端口上。 ####2、端口映射不足 仅将443端口映射到8443端口,未做80端口映射。 ###3.2.2 将容器停止并删除重新来过 docker run -i -t -d -p 80:80 -p 443:443 --restart=always #后面的略 **将上面的坑填好就OK了。** 接着测试用非标准端口映射并做Nginx反代。 ####3.2.2.1 用非标准端口映射 对80和443都用非标准端口做映射,填坑后能够运行。 ~~但word和excel文档的字体乱码。~~PS:可能没刷新或咋地吧。填坑后,在非标准端口运行正常。在alist端测试正常。存在的问题是http无XML响应,且自动跳转到https。可能是容器内部web自动跳转。 docker run -i -t -d -p 8000:80 -p 9000:443 --restart=always \ -e WOPI_ENABLED=true -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=false --name onlyoffice onlyoffice/documentserver ####3.2.2.2 用非标准端口映射Nginx反代 搞不定!告辞! #四、参考 [关于alist使用onlyoffice的配置问题](https://github.com/alist-org/alist/discussions/3255 "关于alist使用onlyoffice的配置问题") [Docker 安装OnlyOffice](https://www.jianshu.com/p/712448a524de "Docker 安装OnlyOffice") [dzzoffice,onlyoffice文档加载中下载失败](https://blog.51cto.com/u_12390904/6253905 "dzzoffice,onlyoffice文档加载中下载失败") [onlyoffice踩坑记录](https://codeantenna.com/a/xuik9w1dwe "onlyoffice踩坑记录") [群晖docker部署onlyoffice](https://www.chillifish.cn/3230.html "群晖docker部署onlyoffice") 标签: onlyoffice, alist