OpenList的Office文档预览新方式-基于宝塔面板Docker容器的BaseMetas Fileview安装与配置教程
OpenList是著名的开源网盘管理系统AList的开源分支,支持挂载网盘、S3兼容对象存储、本地文件夹等多种数据存储系统,也内置了多种格式文档的在线预览功能。Office文档是OpenList使用中较为常见的文件格式之一,OpenList采用了微软预览API接口以及谷歌预览API接口来实现Office文档的预览功能,但是在国内使用时,微软预览API接口较为不稳定(时而能打开,时而打不开)谷歌API预览接口则由于网络原因根本无法使用,给预览效果造成了极大的不便。BaseMetas Fileview 为企业级文档预览引擎,提供标准化 API、高并发支撑与横向扩展能力,可嵌入 OA、SaaS 等系统。因此,我将尝试安装并部署BaseMetas Fileview,并将其用于OpenList的文档预览功能。
一、在宝塔面板的Docker中安装并配置BaseMetas Fileview
①登录宝塔面板管理后台,点击左侧Docker,然后先点击上方栏目中的“本地镜像”,再点击下方左侧“从仓库中拉取”
②在弹出来的窗口中,先点击“命令拉取”,再复制粘贴下方链接:
docker pull basemetas/fileview:1.5.1然后点击右边的“执行命令”,当下方命令行界面中显示“bt_succesful”时,可以关闭窗口
提醒:最新版本可前往官网文档处复制(“docker hub”下方的链接)
③此时,BaseMetas Fileview的Docker镜像已经被成功拉取,点击右侧的“创建容器”
④在弹出来的窗口中,进行以下修改(可参考下图),最后点击右下角的“保存”:
1.容器名称:BaseMetas(随意取名) 2.本地端口:9000 3.容器:80 4.对外暴露:打开⑤现在,通过“服务器IP:9000”的方式已经能够访问到这个Docker项目首页
二、利用域名反向代理Docker中的BaseMetas Fileview项目
①在宝塔面板后台中,点击左侧“网站”,然后点击右侧“添加站点”
②填入想要反向代理Docker中的BaseMetas Fileview项目的域名,“PHP版本”可以选择“纯静态”,然后点击右下角的“确定”
③网站新建完成后,点击右侧的“设置”
④在弹出的窗口中,建议先给网站配置好HTTPS(即左侧的SSL),然后点击左侧的“反向代理”,再点击右侧的“添加反向代理”
⑤在弹出的窗口中,进行以下修改(可参考下图),最后点击右下角的“确定”:
1.代理名称:basemetas(随意取名) 2.目标URL:http://服务器IP:9000 3.发送域名:$host⑥记得在DNS服务商中添加新域名的IP地址解析,稍等片刻,已经可以用域名的方式访问Docker中的BaseMetas Fileview项目了
三、利用域名作为OpenList在线预览文件的“转换器”
①再次点击宝塔面板左侧“网站”,然后点击右侧“添加站点”
②输入一个新域名(或新的二、三……级域名),选择PHP版本(不用太老就行,建议8.0及以上),然后点击右下角的“确定”
③网站新建完成后,点击右侧的“设置”
④在弹出的窗口中,建议先配置好HTTPS(即SSL),然后关闭窗口
⑤点击进入刚刚创建好的网站的根目录
⑥找到“新建”,点击下方的“新建空白文本”
⑦将文件命名为“proxy.php”
⑧找到刚刚新建的“proxy.php”文件,在右侧“更多”中,点击“编辑”
⑨复制粘贴以下代码,并根据实际情况进行修改(可参考下图),然后点击左上角的“保存”:
<?php $url = $_GET['url'] ?? ''; if ($url === '') { http_response_code(400); exit('Missing url'); } $config = json_encode( ['url' => $url], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ); if ($config === false) { http_response_code(500); exit('JSON encode error'); } $data = base64_encode($config); header( 'Location: https://设置了反向代理的域名(第一个域名)/preview/view?data=' . urlencode($data), true, 302 ); exit;⑩记得在DNS服务商中添加新域名的IP地址解析
四、OpenList中增加BaseMetas Fileview的预览选项
①登录OpenList管理员后台,点击左侧“设置”-“预览”,在右侧找到“iframe预览”,并对第一项(doc,docx,xls,xlsx,ppt,pptx)进行修改,增加一行即可(可参考下图):
"doc,docx,xls,xlsx,ppt,pptx": { "basemetas":"https://view.botaokeji.net/proxy.php?url=$e_url", "Microsoft":"https://view.officeapps.live.com/op/view.aspx?src=$e_url", "Google":"https://docs.google.com/gview?url=$e_url&embedded=true" },②现在就可以选择一个Office文档进行测试,预览成功
提示:由于服务器性能、带宽的影响,预览服务需要一段时间缓冲转圈圈,请耐心等待哦
五、参考资料
①BaseMetas Fileview文档
②proxy.php文件代码编写以及bug修复:DeepSeek+ChatGPT
