标签归档: OnlyOffice

HomeServer安装在线Office:Docker安装最新精简版OnlyOffice

最近从这个帖子看到一些有趣的企业软件,其中有一个在线办公软件OnlyOffice,感觉挺有意思的。之前一直为各种自建网盘无法打开Office文档而烦恼,看到FileRun可以集成OnlyOffice DocumentServer,于是就决定开始搭建这个,解决自建网盘直接预览和编辑文档的问题。目前在用的3款网盘软件,还只发现FileRun支持,其他几款如FileBrowser、Cloudreve都还不支持。FileBrowser的Git库上面,有人提交了PR,但是迟迟没有被approve和合入。看起来挺简单的集成功能,不清楚开源owner为什么不合入。

第三方提供的界面总归还是有些不够专业,于是想着自己搭建一个完整的在线Office。经过一番摸索,需要DocumentServer+CommunityServer配合。前者只是一个文档查阅和编辑器,后者提供UI管理文档。当然也可以仅仅只搭建DocumentServer,用第三方的UI来集成,FileRun就算,还有更多的,笔者并没有作更多探索。这里的CommunityServer是一个复杂的办公Workspace,包括一系列的复杂的项目管理、团队管理等套件,这些套件全部包含在内,显得整个docker非常臃肿,资源有限的HomeNAS难以支撑,于是针对这个CommunityServer又做了一些裁剪,主要是把一些感觉用不到的进程停掉了,自己做了docker镜像,也上传到了dockerhub上面。下面开始介绍这两个组件的安装配置过程。

DocumentServer搭建很简单,毕竟依赖的组件少,官方docker镜像也非常简洁,很快就按照官方给的安装命令在HomeNAS上面跑起来了,并且简单配置之后就能在FileRun上面直接查阅和编辑Office文档了。但是发现一个问题,就是DocumentServer为了确保安全,默认启用了jwt_token。token确实有用,可以避免DocumentServer被盗用,被任意其他网络服务拿去使用耗费有限的资源,因此token是UI和Server之间通信的安全保障。有一个问题是,DocumentServer的jwt_token在每次DS重启之后就会重新生成,这样FileRun上面又要重新设置,经过分析,可以用Docker的环境变量指定一个固定的token。然后,如果没有指定外部DB,则DocumentServer会自己启动一个内建的mysql,这个mysql与已有的外部的mysql重复了,没必要,因此我选择使用外部的mysql来公用,节省资源。最终具体的运行命令如下:

docker run –net onlyoffice –name onlyoffice-document-server -d -p 127.0.0.1:12583:80 \
-e DB_TYPE=mysql \
-e DB_HOST=IP_OF_YOUR_DB_HOST \
-e DB_PORT=3306 \
-e DB_NAME=onlyoffice \
-e DB_USER=USERNAME_OF_YOUR_DB \
-e “DB_PWD=PASSWORD_OF_YOUR_DB” \
-e JWT_ENABLED=true \
-e “JWT_SECRET=YOUR_FIX_JWT_TOKEN” \
-v /your/app/path/DocumentServer/logs:/var/log/onlyoffice  \
-v /your/app/path/DocumentServer/data:/var/www/onlyoffice/Data \
onlyoffice/documentserver:latest

上面只开启DS的http端口,同样使用系统统一的一个Nginx反向代理HTTPS对外提供服务。docker启动后,占用的资源非常少。具体的进程列表如下:

document-server

CommunityServer的安装过程就比较坎坷了,主要是想禁用多个暂时不需要的服务,笔者这里主要禁用elasticsearch、内部自带的mysql、还有一堆的Soauth、API、迁移数据、自动清理数据、备份数据、Chat服务等,感觉对于只想体验一下在线Office而言,这些都用不上,禁止之后也没有发现有什么地方运行异常,只用修改run-community-server.sh这个文件,然后重新打镜像即可。如果不做这个裁剪,我的四核6100T的CPU,16G内存,都非常吃力,并且还频繁崩溃重启。最终精简版的进程列表如下:

community-server

修改后的镜像我也上传到了,自己的dockerhub账号下:

https://hub.docker.com/repository/docker/shentar/onlyoffice-community-server

docker pull shentar/onlyoffice-community-server:latest

CommunityServer要使用token访问DocumentServer时,有点坑,找遍了各种设置界面都没看到,网上也没有任何资料介绍,最终在官方给的docker安装脚本中找到了,也是通过一个环境变量来指定。这样只要将该变量指定为DS的token即可。需要注意的是,CommunityServer也有自己的jwt_token,因此这两个都要指定,才能正常运转。具体的环境变量名为:

DOCUMENT_SERVER_JWT_ENABLED
DOCUMENT_SERVER_JWT_SECRET

最终,安装CommunityServer的命令为:

docker run –net onlyoffice -i -t -d –privileged –restart=always \
–name onlyoffice-community-server -p 127.0.0.1:12555:80 \
-e “MYSQL_SERVER_ROOT_PASSWORD=YOUR_MYSQL_PASSWORD” \
-e MYSQL_SERVER_DB_NAME=onlyoffice \
-e MYSQL_SERVER_HOST=YOUR_MYSQL_HOST \
-e MYSQL_SERVER_USER=YOUR_MYSQL_USERNAME \
-e “MYSQL_SERVER_PASS=YOUR_MYSQL_PASSWORD” \
-e JWT_ENABLED=true \
-e “JWT_SECRET=YOUR_FIX_JWT_TOKEN” \
-e “DOCUMENT_SERVER_JWT_ENABLED=true” \
-e “DOCUMENT_SERVER_JWT_SECRET=YOUR_FIX_JWT_TOKEN” \
-v /your/app/path/CommunityServer/data:/var/www/onlyoffice/Data \
-v /your/app/path/CommunityServer/logs:/var/log/onlyoffice \
-v /your/app/path/DocumentServer/data:/var/www/onlyoffice/DocumentServerData \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
shentar/onlyoffice-community-server:latest

同样只开启HTTP,利用外部的Nginx来实现HTTPS反向代理,省去了一大堆SSL证书相关的事情。最终运行起来的效果如下图。测试了各项基本功能,都是正常的,精简掉的那些进程暂时用不着。

在线Office

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 归档目录:WEB网络, 数码硬件, 移动互联, 软件应用 | 同时打有标签:, , , |
返回顶部