OnlyOffice DocumentServer 是一个可以和各种Web网站通过API集成到一起的后端服务器程序,和市面上其他的程序相比最大的优点是可以免费使用。但是DocumentServer(下称DS)也有一个众所周知的缺点,就是非常占服务器资源。
上面说过,DS是通过API集成到前端网页的,因此DS本身并不需要持久存储。而DS现在又有Docker版本,所以可以很方便地部署到Azure Web App或Okteto上。这两个平台的限制就是容器自动休眠,且默认不持久存储,DS正好完美地规避。
部署的Docker只是后端的API服务器,那么还需要前端网页和它集成。下文提供了一个静态HTML页面,可以很简单地连接到DS的API,不过你也可以和NextCloud等第三方程序集成。
下面四段是废话:
- 我之前看见有人说,用Oracle的免费高配ARM服务器搭建了NextCloud,但是限于ARM的架构限制DS跑不了。用Azure Web App或者Okteto部署DS和NextCloud连接,这羊毛岂不薅得美滋滋?
- 通过这篇文章中OnlyOffice段的方法,也可以给NextCloud甚至Cloudreve配置在线编辑。
- Azure Web App和Okteto的免费版的网址没法自定义,但是后端服务器通过API与前端连接,访客看不到后端的地址,高端大气上档次,避免尴尬。
- 下面的那个Demo地址,首页是抓的微软的?
一、部署后端DocumentServer服务器
上面说了,DS本身并不需要持久存储,所以这下连挂载目录都不用了:
Okteto配置
services:
onlyoffice:
image: onlyoffice/documentserver
ports:
- 80:80
Azure Web App配置
Azure更简单,直接选择“单个容器”部署“onlyoffice/documentserver”这个镜像就可以了。
提醒:DS服务器在容器启动后要等待一段时间才能启动,不要部署完了发现打不开着急。
补充更新:自7.2以上版本默认启用了JWT,需添加环境变量“-e JWT_ENABLED=false”或进行JWT密钥验证。
二、 一个简单的前端静态HTML页面
先给两个Demo地址:
onlyoffice.web.app onlyoffice.vercel.app
很显然,得益于后端DS服务器的支持,前端页面是几乎不占服务器资源的,因此像Vercel这样的静态网页托管都可以部署。
一个简单的HTML如下(需要部署到Web上才有效,存到本地打不开):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Word Online</title>
<script type="text/javascript" src="https://%你的DS服务器地址%/web-apps/apps/api/documents/api.js"></script>
<style>
body {margin: 0;}
iframe {height: 100vh;}
</style>
</head>
<body onbeforeunload="return false">
<div id="placeholder"></div>
<script language="javascript" type="text/javascript">
var docEditor = new DocsAPI.DocEditor("placeholder",{
"document": {
"fileType": "docx",
"title": "Word.docx",
"url": prompt("请输入文档URL,默认新建空白文档","https://onlyoffice.web.app/NewDocument/Word.docx")
},
"documentType": "text"
});
</script>
</body>
</html>
注:这个配置默认情况下,文档不会保存到服务器,需要在关闭窗口前下载到本地。如果要在服务器上保留数据,首先DS服务器要持久存储,然后需要在"document"中添加一个"secret"参数,下一次打开时使用相同的"secret",就可以打开存储在服务器中的文档了。
文章评论
我去,好像15天没有push会被取消。。
@怎样le 15天有访问就可以,每天第一次访问会提醒正在唤醒