docker系列 为nextcloud部署onlyoffice容器
本文最后更新于 350 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。

部署redis容器

要为nextcloud部署onlyoffice容器,首先需要部署好redis容器:

docker run --name redis -d --restart=always --net=public-net -p 6379:6379 redis

创建bridge

建议大家养成良好的习惯,部署容器的时候,不管有用没有,最好都加上–net参数并使用同一个提前定义好的非默认的bridge,,便于需要的时候可以用容器名调用。因为下面要用到一个名为public-net的bridge,所以需要提前创建:

docker network create public-net

部署onlyoffice容器

命令如下

docker run --name onlyoffice -d --restart=always --net=public-net \
    -p 9020:80 \
    -p 9023:443 \
    -e JWT_SECRET=xxxxxxxxxxxxxxx \  
    -e REDIS_SERVER_HOST=redis \
    -e REDIS_SERVER_PORT=6379 \
    -v /docker/onlyoffice/logs:/var/log/onlyoffice \
    -v /docker/onlyoffice/data:/var/www/onlyoffice/Data \
    -v /docker/onlyoffice/lib:/var/lib/onlyoffice \
    -v /docker/onlyoffice/db:/var/lib/postgresql \
    -v /docker/onlyoffice/redis:/var/lib/redis \
    onlyoffice/documentserver

参数解释:
-p 9020:80 -p 9023:443
9020和9023端口分别对应容器内部的80和443端口,大家根据自己的实际部署环境自行调整。
-e JWT_SECRET
是指定一个固定的secret,这个环境变量如果不指定,那么每次docker重启secret都会重新生成,就会报错:

image.png

然后都需要去onlyoffice容器中去下列位置查看:

cat etc/onlyoffice/documentserver/local.json
secret": {
        "inbox": {
          "string": "YOURTOKEN"
        },
        "outbox": {
          "string": "YOURTOKEN"
        },
        "session": {
          "string": "YOURTOKEN"
        }

这样非常不方便,强烈建议大家自己指定一个固定值。
-e REDIS_SERVER_HOST=redis
-e REDIS_SERVER_PORT=6379
指定redis服务器的地址和端口,因为redis和onlyoffice同属于一个非default的bridge"public-net",所以可以用容器名直接通信,否则就需要–link参数了。


注:大家在搭建容器环境的时候,建议提前规划好所有容器挂载文件夹的位置,我是所有容器的挂载文件夹都在/docker文件夹下,然后每个容器一个文件夹,例如/docker/onlyoffice/,之后才是这个容器对应的挂载文件夹,养成良好的习惯,后期维护会更方便,并且在迁移到新容器环境重新创建对应容器的时候,甚至连挂载路径都不用改,爽得一逼。


部署完成onlyoffice容器以后,默认没有启用example,需要执行:

docker exec onlyoffice sudo supervisorctl start ds:example

然后就能访问:http://x.x.x.x:9020:example
x.x.x.x假设是你容器宿主机的内网ip地址,页面如下:

image.png

如果要这个页面每次重启容器都自动启动,需要执行:

docker exec onlyoffice sudo sed 's,autostart=false,autostart=true,' -i /etc/supervisor/conf.d/ds-example.conf

配置nextcloud

接下来是在nextcloud里配置(需要提前安装好onlyoffice插件):

image.png

这里情况比较复杂,而且还根据客户端是纯内网访问,还是需要从外网访问,还分是http方式,还是https方式,分2种主流情况:

1、nextcloud和onlyoffice都只在内网且客户端浏览器用http方式访问

如果是纯内网访问http,那最简单,直接在上图右下更多设置下的"用于服务器内部的ONLYOFFICE Docs地址"选项下填写:http://x.x.x.x:9020 的方式指定onlyoffice的内网ip或者内网域名,然后在"用于ONLYOFFICE Docs内部请求的服务器的地址"选项下填写:http://x.x.x.x:9010的方式指定nextcloud的内网ip或者内网域名(假定9010是nextcloud的宿主机映射端口)即可。

2、nextcloud和onlyoffice都部署在公网上且客户端浏览器用https方式访问

如果是这种情况,在保证onlyoffice能通过公网域名正常打开example页面的情况下,只需要在上图右上第一个红框"ONLYOFFICE Docs"处填写onlyoffice对应的https://公网域名 ,然后在下方"密钥"处填写你前面创建容器时候自定义的secret即可。

注意:nextcloud使用https访问,则onlyoffice也必须使用https配置,所以建立onlyoffice容器的时候才会映射9023端口。如果onlyoffice是配合反代使用,那么onlyoffice所对应的公网域名的反向代理在指定上游服务器目标url的时候,需要使用https并且指向https的端口,在本例中,既指向https://x.x.x.x:9023

在创建onlyoffice容器的时候,我们做了以下目录的-v挂载:
-v /docker/onlyoffice/data:/var/www/onlyoffice/Data

这个data目录,就是用来放onlyoffice公网域名对应的ssl证书的目录。在data里创建certs目录,然后将对应onlyoffice域名的的ssl证书(crt,key)重命名成onlyoffice.crt和onlyoffice.key,放到这个目录下并重启onlyoffice容器即可。

保存以后如果nextcloud的onlyoffice页面多出了以下内容就成功了:

image.png

这种方式即可完成同一个容器环境下nextcloud和onlyoffice的部署,不需要像一些网友一样还单独建立一个有公网ip地址的服务器来搭建onlyoffice的容器,简单来说,就在一个内网环境下同时建立onlyoffice和nextcloud的容器,然后在出口上做相应配置即可。

另外可能还有很多种不同的部署情况,比如nextcloud和onlyoffice分别在内网、公网、反向代理之后,大家根据实际情况自己分析处理即可。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       

本站已禁用鼠标右键和各种快捷键,代码块内容可以直接在右上角点击复制按钮进行复制

zh_CN