共计 2451 个字符,预计需要花费 7 分钟才能阅读完成。
搭建
由于 Alist 被收购,并且收购公司涉嫌收集用户隐私数据,所以 Alist 使用者成立 Openlistteam,从 Alist 分支出 Openlist 项目。
目前 Openlist 已接近稳定,所以可以搭建使用,并可以配置 Onlyoffice 作为在线预览 Office 文档。
使用如下 compose 文件可以快速进行搭建:
services:
openlist:
image: openlistteam/openlist:v4.0.9
container_name: openlist
volumes:
- ./openlist:/opt/openlist/data
ports:
- 5244:5244
environment:
- PUID=0
- PGID=0
- UMASK=022
restart: unless-stopped
# onlyoffice
onlyoffice:
image: superkeyor/onlyoffice
container_name: onlyoffice
ports:
- 5245:80
restart: always
这里的
superkeyor/onlyoffice
镜像并非官方镜像,因为需要在 onlyoffice 容器内修改文件才能达到实现预览的目的,所以使用的网友提供的镜像。如果有必要,也可以根据官方镜像自行构建。
安装后,通过 docker logs -f openlist
查看 admin
用户密码。
然后在 openlist 后台配置 onlyoffice:
效果如图:
其他
这里只是为了记录一下探索 openlist 集成 onlyoffice 的过程,可以略过。以下大部分内容来自 alist 的 github 讨论:
首先,如果按照以下方式搭建 onlyoffice,是无法使用的。
services:
onlyoffice:
image: onlyoffice/documentserver:8.1
container_name: onlyoffice
ports:
- 8080:80
restart: always
volumes:
- /home/docker/onlyoffice/data:/var/www/onlyoffice/Data
- /home/docker/onlyoffice/logs:/var/log/onlyoffice
environment:
- JWT_SECRET=123456
#- JWT_ENABLED=false
如果使用 JWT_SECRET 那么就需要令牌进行访问,会导致 openlist 访问不到,所以需要设置 JWT_ENABLED=false
。
并且需要进入容器修改 /etc/onlyoffice/documentserver/default.json
文件:
- rejectUnauthorized: false
关闭 ssl,内网不需要。
- allowPrivateIPAddress、allowMetaIPAddress 设置为
true
允许使用 ip 访问,内网不需要域名。
然后需要在一个 openlist 可以访问到的地方,新建一个 view.html
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>OnlyOffice Viewer</title>
<style>
html,
body {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden;
}
#placeholder {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
</style>
</head>
<body>
<div id="placeholder"></div>
<script
type="text/javascript"
src="http://x.x.x.x:xxxx/web-apps/apps/api/documents/api.js"
></script>
<script>
function getQueryParamValue(name) {
const searchParams = new URLSearchParams(window.location.search);
return searchParams.get(name);
}
const url = decodeURIComponent(getQueryParamValue("src"));
const fileName = url.substring(
url.lastIndexOf("/") + 1,
url.lastIndexOf("?") != -1 ? url.lastIndexOf("?") : url.length
);
const fileExtension = fileName.split(".").pop();
const docEditor = new DocsAPI.DocEditor("placeholder", {
document: {
fileType: fileExtension,
permissions: {
edit: false,
comment: true,
download: true,
print: true,
fillForms: true,
},
title: fileName,
url: url,
},
editorConfig: {
lang: "zh",
mode: "view",
},
height: "100%",
type: "embedded",
});
</script>
</body>
</html>
这里写的是 http://x.x.x.x:xxxx/
,当然也可以将该文件放在 onlyoffice 容器内的 /var/www/onlyoffice/documentserver/web-apps/apps/api/documents/
目录下,则可以去掉前面这部分内容。
另外,如果需要启用编辑模式,还需要配置回调,即将修改后的文件保存到 openlist。这个比较复杂,暂时先不折腾了,如果以后折腾了再完善这一部分,或者直接修改搭建的容器,以便直接启用。