利用Azure Web App或Okteto搭建OnlyOffice文档服务器,完全免费

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服务器在容器启动后要等待一段时间才能启动,不要部署完了发现打不开着急。

二、 一个简单的前端静态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>
        <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”,就可以打开存储在服务器中的文档了。

加入对话

2条评论

留下评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s

借助 WordPress.com 创建您的网站
从这里开始
%d 博主赞过: