Linux

使用Docker部署ONLYOFFICE Document Server

上一篇文章介绍了在Ubuntu/Debian系统中安装ONLYOFFICE的文档服务器,步骤还是稍微有些复杂的,而且不适用于CentOS/RedHat一类的系统。相比之下,如果借助Docker来部署的话就省事多了。

推荐服务器配置

既然官方文档有说,那就贴在下面吧。

配置方面还是尽量满足吧,实测会消耗很多资源,小内存VPS根本扛不住。

  • RAM: 4 GB+
  • CPU: 双核 2 GHz +
  • Swap: 至少2 GB
  • HDD: 至少有2GB的剩余空间
  • 系统要求: RedHat 64bit,CentOS类、Debian类的内核版本3.8以上。
  • Docker: 1.9.0版本及以上

查看内核版本:

uname -r

安装Docker

CentOS/RedHat/Fedora

使用yum命令安装Docker:

yum install docker -y

启动Docker服务:

systemctl start docker

Debian/Ubuntu

使用apt命令安装Docker:

sudo apt-get install docker.io

Docker服务会自动启动。

拉取ONLYOFFICE Document Server 的Docker镜像

拉取镜像:

sudo docker pull onlyoffice/documentserver

国内主机从Docker Hub拉取镜像的话可能会比较慢,可以尝试类似阿里云、Daocloud的加速器。

拉取完成:

启动Docker容器

启动Document Server镜像,并映射80端口至本地。

sudo docker run -i -t -d -p 80:80 onlyoffice/documentserver

启动后,访问http://服务器地址:80,就可以看到如下的页面:

刚开始看到的可能是是502 Bad Gateway,稍等一会,刷新浏览器页面即可。

将Document Server映射至其它端口

80端口上往往会运行像Apache、Nginx之类的HTTP服务,为了避免端口冲突,我们可以将Document Server映射至其它端口。

例如映射至9000端口:

sudo docker run -i -t -d -p 9000:80 onlyoffice/documentserver

一些说明……

Document Server的数据在容器中的储存位置如下:

  • /var/log/onlyoffice 存放ONLYOFFICE Document Server日志
  • /var/www/onlyoffice/Data 存放证书文件

你可以用

sudo docker -exec -it onlyoffice/documentserver /bin/bash

登入容器,也可以将以上两个目录映射到本地,这样更方便。

创建目录:

mkdir -p /app/onlyoffice/DocumentServer/logs
mkdir -p /app/onlyoffice/DocumentServer/data

使用

docker -v

 将目录映射至本地:

sudo docker run -i -t -d -p 80:80 \ -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver

这样,直接访问本地的

/app/onlyoffice/DocumentServer/

 下的两个文件夹就可以了。


启用HTTPS

HTTPS需要使用SSL证书,可以自己签发也可以用ca机构签发的,加密效果相同。

生成证书:

  1. 创建私钥
    openssl genrsa -out onlyoffice.key 2048
  2. 创建CSR
    openssl req -new -key onlyoffice.key -out onlyoffice.csr
  3. 用私枂和CSR签发证书
    openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
  4. 用dhparam加密服务器密钥
    openssl dhparam -out dhparam.pem 2048

完成证书的生成后,将生成的证书拷贝到

/app/onlyoffice/DocumentServer/data/certs

 目录下。

创建相应目录:

mkdir -p /app/onlyoffice/DocumentServer/data/certs

复制证书到

/app/onlyoffice/DocumentServer/data/certs

目录并设置权限:

cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

运行容器,映射容器的443端口和Data目录至本地:

sudo docker run -i -t -d -p 443:443 \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver

在浏览器里访问https://服务器地址/。(CentOS/RHEL/Fedora系统可能无法访问,请往下看)

当然了,如果本地443端口已经被占用了的话,可以映射至其它端口:

sudo docker run -i -t -d -p 9000:443 \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver

但是仍然是要用HTTPS协议访问,比如:https://服务器地址:9000/

CentOS/RHEL/Fedora无法访问

这是由于SELinux的阻止。

暂时关闭SELinux(重启后失效):

setenforce 0
(11)

本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!

热评文章

评论:

55 条评论,访客:55 条,博主:0 条
  1. ledouz
    ledouz发布于: 

    首先感谢作者!!!最近自己搭建成功了,总结一下:
    1.首先,nextcloud使用的时候,onlyoffice服务器一定要有域名,不然添加不成功。
    2.我用docker版之后,再用apache反向代理。(注意:我也不知道有没有限制,反正用到现在就是保存有点滞后,每次改完之后,要等一下下,下载的文件才能是修改后的文件,不然直接就是下载修改之前的文件了。不知道什么缘故。其他用起来挺正常的。)
    3.内存还是推荐2G以上,运行onlyoffice之后,大概占用75%,勉强能用。

  2. forwardlee
    forwardlee发布于: 

    谢谢博主资料,已经成功搭建了onlyoffice

    • 冬日午后
      冬日午后发布于: 

      welcom页面可以正常显示了,下一步怎么登陆账号和上传文件啊?welcome页面貌似啥功能也没有啊

      • forwardlee
        forwardlee发布于: 

        welcome是域名还是ip啊?ssl弄了吗?在nextcloud里面启用onlyoffice插件就行

        • 冬日午后
          冬日午后发布于: 

          通过IP地址可以打开welcome页面。没有配置SSL。onlyoffice必须跟nextcloud配合用吗?应该可以直接通过IE上传、管理文档啊

          • 冬日午后
            冬日午后发布于: 

            总算搞好了,通过tomcat部署onlyoffice的java example。可以调用onlyoffice了。

          • FrankGreg
            FrankGreg发布于: 

            Onlyoffice有自己的onlyoffice community

          • 风之轩
            风之轩发布于: 

            能告诉下,我也下载了java example后,打开文档还是报错,需要设置什么吗?settings文件ip和端口都改了

    • 寒风吹彻
      寒风吹彻发布于: 

      welcom页面可以正常显示了,下一步怎么登陆账号和上传文件啊?welcome页面貌似啥功能也没有啊,麻烦说的详细一些,拜托了。

      • FrankGreg
        FrankGreg发布于: 

        需要搭配Nextloud或ONLYOFFICE Community使用

  3. 逸冰
    逸冰发布于: 

    请问您知道怎么修改这里的nginx的配置吗?

    • FrankGreg
      FrankGreg发布于: 

      可以登陆到容器内修改.目录应该是/etc/nginx/

  4. 逸冰
    逸冰发布于: 

    网页直接连接时提示400

  5. zh
    zh发布于: 

    博主知道怎么设置访问限制么?默认设置好像没有访问限制。
    像Collabora Office可以设置域名访问限制之类的。

  6. 自由的平面人
    自由的平面人发布于: 

    Windows上部署onlyoffice document server和golang二次开发,免费使用

  7. 自由的平面人
    自由的平面人发布于: 

    请问大神,免费版有限制人数20人等方面,开源的有限制吗?

    • 自由的平面人
      自由的平面人发布于: 

      自己用docker部署ONLYOFFICE DOCUMENT SERVER,并用golang的beego框架开发文档管理,实现存储协作后的文档并返回回调参数即可,免费无限制。

    • 自由的平面人
      自由的平面人发布于: 

      亲自试验了才知道,只能连接20个同时进行编辑。自己电脑都可以试出来,浏览器打开20个文档标签页,就会有提示,再打开多的就只能看,不能编辑了。

      • 自由的平面人
        自由的平面人发布于: 

        时隔一天,解决了连接数20个限制的问题。

        • tinging
          tinging发布于: 

          谢谢,请问如何解决的呀?盼回复。

  8. 菜鸟
    菜鸟发布于: 

    请问大神onlyoffice这平台是免费的吗?

    • FrankGreg
      FrankGreg发布于: 

      自己部署的话是免费的,也有收费的企业版

      • 菜鸟
        菜鸟发布于: 

        请问免费和收费差别在哪里?

        • FrankGreg
          FrankGreg发布于: 

          收费版更侧重技术支持,有控制面板、多站点功能。提供1年的技术支持

          • 菜鸟
            菜鸟发布于: 

            域账号关联功能,免费版也支持吗?

        • 自由的平面人
          自由的平面人发布于: 

          免费版就是一个document server,要根据它的api自己写文档管理和文档的存储,具体看它的document api

    • 自由的平面人
      自由的平面人发布于: 

      亲自试验了才知道,只能连接20个同时进行编辑。自己电脑都可以试出来,浏览器打开20个文档标签页,就会有提示,再打开多的就只能看,不能编辑了。

        • Ye Rory
          Ye Rory发布于: 

          限制怎么解决的?

        • 龍ㄟ
          龍ㄟ发布于: 

          請問有解決現制的教學嗎 ^^

  9. phpworder
    phpworder发布于: 

    正在研究onlyoffice,求博主指教,可以加我一下QQ么?我的Q:6278365,有很多问题想咨询,谢了

    • FrankGreg
      FrankGreg发布于: 

      可以扫描一下右侧边栏的二维码加QQ群

  10. 求教
    求教发布于: 

    你好,请教个问题我在Ubuntu 16.04 LTS 中安装了nextcloud,后按照文中的方法在同一服务器中通过Docker部署了onlyoffice。解决中文输入问题时候我是按照《为Nextcloud安装ONLYOFFICE Document Server》中的方法操作的,可是在导入字体 这里 sudo bash documentserver-generate-allfonts.sh 报错
    Error response from daemon: No such container: onlyoffice/documentserver
    请问如何解决呢,谢谢

    • FrankGreg
      FrankGreg发布于: 

      建议学习一下Docker容器的命名.镜像名≠容器名,你可以使用docker ps查看容器ID
      然后docker exec -it 容器ID bash documentserver-generate-allfonts.sh

  11. jiasuidc
    jiasuidc发布于: 

    你好博主,我按照您的教程搭建,nextcloud配置也可以访问,打开文档会出现中文乱码!尝试更新字体还是没解决,想问问您是怎么处理的!环境是ubuntusever16.04

    • jiasuidc
      jiasuidc发布于: 

      博主可以解决问题的话,我愿意赞助

      • lvyaguo
        lvyaguo发布于: 

        你好,您的问题解决了没,我也遇到同样的问题!

    • FrankGreg
      FrankGreg发布于: 

      字体是按 https://www.orgleaf.com/2542.html 里的步骤更新的吗?如果你是在Docker中,需要登录到容器中再执行,执行后删除浏览器缓存。然后需要在编辑文档是全选然后手动选择中文字体才能显示。

  12. chris
    chris发布于: 

    你好博主,我按照你的方法安装完,尝试在owncloud打开OFFICE文件或者建立新的文件,都出现
    ONLYOFFICE cannot be reached. Please contact admin。单独打开documentsever的IP就显示Document Server is running,请问是那一步的configuration没做对?我也是用docker作的documentsever

    • chris
      chris发布于: 

      报错的内容是Error when trying to connect (Bad Request or timeout error)

    • cuijy
      cuijy发布于: 

      你这个问题解决了吗?我现在也遇到这个问题了

  13. chen
    chen发布于: 

    我按你的教程,onlyoffice安装好了,也可以访问
    但我的nextcloud 添加插件,输入 网址后,打开文档,报内部错误?

  14. hahajoe
    hahajoe发布于: 

    你好,博主,我按照教程上部署好了。映射了端口9080到443上,但是在NEXTCLOUD上应用OFFICE后,管理那里输入ONLY的IP+端口,保存时显示连接出错!这个是什么原因造成!

    • FrankGreg
      FrankGreg发布于: 

      我有点无从判断……URL带协议了吗……

  15. joechan
    joechan发布于: 

    你好,博主,部署后,在nextcloud管理保存ONLY OFFICE的地址时,出现以下信息error when trying to connect(Bad Request or timeout error)我部署的环境是在LNMP 在虚拟机上部署!

    • FrankGreg
      FrankGreg发布于: 

      直接访问试试行不行

      • joechan
        joechan发布于: 

        直接访问https://XXX.XXX.XXX.XXX:8080(XXX.XXX.XXX.XXX是IP来192.168.1.209:8080是可以的。但是从NEXTCLOUD里面保存服务器就出现error when trying to connect(Bad Request or timeout error).NextClouD我是按照你的NGINX教程来部署NEXTCLOUD的。是否是配置环境和这个产生冲突!

        • FrankGreg
          FrankGreg发布于: 

          好吧……可能我哪儿疏忽了。这样吧,试一下用NGINX将容器反向代理至443端口……

        • 季后
          季后发布于: 

          我也是保存时出错,你解决了吗?

        • ak478
          ak478发布于: 

          我也是遇到这个情况,有什么解救方法吗?愁啊

    • zhh
      zhh发布于: 

      owncloud/nextcloud的IP不能和ONLY OFFICE的IP一样。包括域名解析出来的IP。如果相同代理也不行。127.0.0.0/8这个网段也不行。
      我也遇到过,然后一个用外网IP(owncloud/nextcloud),一个用私网IP(onlyoffice)就可以了。
      现在云服务器基本上都有两个IP,一个外网一个私网。
      本地的话,可以试试分配两个IP试试。

      • FrankGreg
        FrankGreg发布于: 

        让ONLYOFFICE和Nextcloud分别监听两个不同的端口,然后用Nginx反向代理,就可以实现两个域名下的应用共用同一IP。

        • 季后
          季后发布于: 

          我也是这个问题,但是我用两个不同的服务器也是这样

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.