关于
我的项目
相关阅读
热度排行
- [转] 宫崎骏用动漫教给我们的人生哲理,每一句都能说到心里! - (日期:[八月 24, 2013] 点击:[53,145])
- Google 网页爬虫报告无法连接站点解决办法 - (日期:[七月 20, 2014] 点击:[38,630])
- 架设Tiny Tiny RSS(TTRSS)阅读器,找回Google Reader! - (日期:[九月 27, 2013] 点击:[27,762])
- SkyDrive、DropBox和Google Drive三大公有云存储服务对比 - (日期:[六月 25, 2013] 点击:[25,562])
- 升级到至强E5440后,与i5 CPU笔记本性能对比 - (日期:[二月 18, 2014] 点击:[23,694])
- 公钥私钥加密解密数字证书数字签名详解 - (日期:[四月 19, 2014] 点击:[22,955])
- 本站建站技术合集 - (日期:[九月 20, 2013] 点击:[22,478])
- 使用OpenerDNS解决无法访问Google的问题 - (日期:[七月 5, 2014] 点击:[21,773])
- WordPress博客添加“返回顶部”按钮 - (日期:[七月 14, 2013] 点击:[21,188])
- Linux文件系统基础之inode和dentry - (日期:[三月 13, 2015] 点击:[20,161])
- 云存储中的HTTP鉴权算法分析 - (日期:[二月 7, 2014] 点击:[18,636])
- 存储基础知识之——磁盘阵列原理及操作实战 - (日期:[二月 9, 2014] 点击:[17,478])
- 精选37条强大的常用linux shell命令组合 - (日期:[九月 4, 2013] 点击:[17,425])
- DNS原理、架构和配置详解 - (日期:[九月 6, 2013] 点击:[16,797])
- Netty和Jetty的Java NIO 网络框架模型分析 - (日期:[七月 13, 2013] 点击:[16,329])
- CoreOS 初识之安装 - (日期:[十一月 16, 2014] 点击:[16,161])
- Windows与Linux文件系统互访的几种方法 - (日期:[八月 21, 2014] 点击:[15,725])
- Dijkstra算法求解最短路径分析 - (日期:[七月 12, 2014] 点击:[14,921])
- NAS解决方案实现多媒体文件共享播放 - (日期:[十二月 21, 2014] 点击:[13,897])
- 简介 - (日期:[九月 1, 2012] 点击:[13,745])
- 如何编程实现 2 + 2 = 5? - (日期:[六月 2, 2014] 点击:[13,266])
- 搭建了一个iNews程序 - (日期:[十月 15, 2013] 点击:[13,233])
- 2014年9月曝出的Bash ShellShock漏洞简析 - (日期:[九月 26, 2014] 点击:[13,134])
- 彻底解决WordPress博客垃圾评论的问题 - (日期:[八月 5, 2013] 点击:[13,079])
- 如何使用1M的内存排序100万个8位数 - (日期:[三月 27, 2014] 点击:[12,551])
- 全部日志列表 - (日期:[十一月 11, 2012] 点击:[12,312])
- 关于回调函数和this指针探讨 - (日期:[八月 24, 2014] 点击:[12,204])
- 给定一个long型常量,其值为x,给定long型变量a,要求a & x 的取值集合 - (日期:[九月 8, 2012] 点击:[11,695])
- WordPress建站必备实用插件 - (日期:[八月 7, 2014] 点击:[11,356])
- Amazon 云计算业务全面介绍 - (日期:[三月 9, 2014] 点击:[11,262])
分类目录
文章归档
- 2024年四月 (1)
- 2024年二月 (1)
- 2023年九月 (1)
- 2023年一月 (1)
- 2022年十月 (1)
- 2022年八月 (2)
- 2022年四月 (1)
- 2022年三月 (1)
- 2021年十二月 (2)
- 2021年十月 (2)
- 2021年九月 (1)
- 2021年八月 (1)
- 2021年五月 (1)
- 2021年三月 (2)
- 2021年一月 (2)
- 2020年十二月 (5)
- 2020年十一月 (2)
- 2020年十月 (2)
- 2020年九月 (1)
- 2020年八月 (5)
- 2020年七月 (2)
- 2019年九月 (1)
- 2018年八月 (1)
- 2018年七月 (1)
- 2018年六月 (1)
- 2018年五月 (1)
- 2018年三月 (1)
- 2018年二月 (1)
- 2018年一月 (2)
- 2017年十二月 (3)
- 2017年十月 (4)
- 2017年九月 (1)
- 2017年七月 (1)
- 2017年六月 (1)
- 2016年十二月 (1)
- 2016年十月 (1)
- 2016年九月 (1)
- 2016年七月 (2)
- 2016年六月 (1)
- 2016年二月 (3)
- 2015年十二月 (3)
- 2015年十一月 (2)
- 2015年十月 (1)
- 2015年八月 (2)
- 2015年七月 (4)
- 2015年六月 (1)
- 2015年三月 (2)
- 2015年二月 (1)
- 2015年一月 (4)
- 2014年十二月 (2)
- 2014年十一月 (2)
- 2014年十月 (5)
- 2014年九月 (8)
- 2014年八月 (11)
- 2014年七月 (17)
- 2014年六月 (7)
- 2014年五月 (15)
- 2014年四月 (16)
- 2014年三月 (14)
- 2014年二月 (5)
- 2013年十二月 (5)
- 2013年十一月 (3)
- 2013年十月 (13)
- 2013年九月 (13)
- 2013年八月 (13)
- 2013年七月 (9)
- 2013年六月 (8)
- 2013年五月 (1)
- 2013年三月 (3)
- 2013年一月 (1)
- 2012年十一月 (1)
- 2012年九月 (12)
- 2012年八月 (3)
- 2011年二月 (1)
- 2009年三月 (1)
- 2009年二月 (1)
- 2008年十一月 (1)
- 2008年六月 (1)
- 2008年四月 (1)
- 2008年三月 (1)
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启动后,占用的资源非常少。具体的进程列表如下:
CommunityServer的安装过程就比较坎坷了,主要是想禁用多个暂时不需要的服务,笔者这里主要禁用elasticsearch、内部自带的mysql、还有一堆的Soauth、API、迁移数据、自动清理数据、备份数据、Chat服务等,感觉对于只想体验一下在线Office而言,这些都用不上,禁止之后也没有发现有什么地方运行异常,只用修改run-community-server.sh这个文件,然后重新打镜像即可。如果不做这个裁剪,我的四核6100T的CPU,16G内存,都非常吃力,并且还频繁崩溃重启。最终精简版的进程列表如下:
修改后的镜像我也上传到了,自己的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证书相关的事情。最终运行起来的效果如下图。测试了各项基本功能,都是正常的,精简掉的那些进程暂时用不着。
1条评论
ubuntu22.04环境下,community server启动会有问题,github上面已经有人提出issue,但是没有修复:https://github.com/ONLYOFFICE/Docker-CommunityServer/issues/150