当前位置:   article > 正文

容器搭建nextcloud+onlyoffice+https_onlyoffice 容器启动

onlyoffice 容器启动

近期应主管建议,在工作环境中搭建一套个人网盘应用,用于开展日常工作。本文在私有云内完成搭建,基于CentOS8.5使用Docker 25.0.1容器承载镜像nextcloud28与onlyoffice9.0.0完成。搭建步骤分为docker的容器准备、nextcloud容器启动、onlyoffice的容器启动以及https的加密配置。将此次所踩的坑整理于此。 

一、搭建前的容器准备

1.安装dokcer

  1. yum install -y yum-utils device-mapper-persistent-data lvm2 wget #安装依赖
  2. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #将设置阿里云为docker的yum下载源
  3. yum list docker-ce --showduplicates | sort -r #搜索并排序输出当前的docker版本
  4. yum install -y docker-cedocker -v #安装docker
  5. yum -y update #更新依赖库
  6. yum makecache fast #yum初始化
  7. systemctl start docker
  8. systemctl enable docker
  9. vi /etc/docker/daemon.json #为docker添加国内加速器设置
  10. {
  11. "registry-mirrors":["http://hub-mirror.c.163.com"]
  12. }
  13. systemctl daemon-reload #重新加载
  14. systemctl restart docker #重启docker

2.搜索并拉取容器

  1. docker serach nextcloud
  2. docker search onlyoffice
  3. docker pull #容器名字与版本(search出来的结果),本文拉取nextcloud与onlyoffice

3.本文中用到的docker容器命令说明

  1. docker run -d --restart=always --name #设置容器名 使用的镜像设置此容器开机自启
  2. docker images #查看可用镜像
  3. docker search 镜像名字 #搜索镜像
  4. docker pull #拉取镜像
  5. docker rm -f 容器名/容器id #删除已有的容器
  6. docker ps #查看正在运行的容器
  7. docker cp #实现宿主机与容器之间的文件传输
  8. docker exec -it 容器名称/容器id bash #进入该容器

二、nextcloud的容器启动

1.辅助目录的创建

在宿主机中创建nextcloud的工作目录,以便于在nextcloud容器启动时将所需的路径映射至宿主机。

  1. mkdir -p /home/nextcloud #用于映射nextcloud的配置文件等工作目录
  2. mkdir -p /home/nextcloud_apache/ssl_certs/certs #用于存放nextcloud再启用https时的ssl证书
  3. mkdir -p /home/nextcloud_apache/ssl_certs/private #用于存放nextcloud再启用https时的秘钥

2.启动nextcloud容器

直接使用docker run +镜像名称启动容器,同时为容器挂载上所需要的路径。

docker run -d --restart=always --name nextcloud -p 8080:80 -p 8443:443 -v /home/nextcloud:/var/www/html  -v /etc/hosts:/etc/hosts -v      /home/nextcloud_apache/ssl_certs/certs:/etc/ssl/certs   -v /home/nextcloud_apache/ssl_certs/private:/etc/ssl/private   nextcloud

若有报错可以使用docker logs 容器id 查看nextcloud容器日志。

说明:

-p 8080:80 #将nextcloud容器的80端口映射至宿主机的8080端口

-p 8443:443 #将nextcloud容器的443端口映射至宿主机的8443端口

-v /home/nextcloud:/var/www/html #用于挂载nextcloud的工作目录

-v /etc/hosts:/etc/hosts #个人起容器的习惯,想把宿主机hosts文件挂载到容器,不一定用得到可以不添加

-v /home/nextcloud_apache/ssl_certs/certs:/etc/ssl/certs #用于存放nextcloud再启用https时的ssl证书

-v /home/nextcloud_apache/ssl_certs/private:/etc/ssl/private #用于存放nextcloud再启用https时的秘钥

启动容器之后,可检查本机的8080端口命令:netstat -ano | grep 8080

之后可以进一步访问web界面:http://本机ip:8080 ,可以看到nextcloud的http服务页面,按照页面提示可以设置管理员账号后,方可进入nextcloud界面。

3.关于数据库

因为本文的部署需求为面向小范围使用,故使用了nextcloud自带的SQlite数据库,若是面向大范围使用需求,可以按照其他博客的介绍搭建并使用mysql数据库。

三、nextcloud容器https服务配置

此处可以采用新起一个nginx容器,代理nextcloud服务的思路实现https目的。本文中使用的是nextcloud镜像上自带的apache来实现。

1、创建自己https的ssl证书

  1. openssl genrsa -des3 -out nextcloud.key 4096
  2. openssl req -new -key nextcloud.key -out nextcloud.csr
  3. cp nextcloud.key nextcloud.key.org
  4. openssl rsa -in nextcloud.key.org -out nextcloud.key #生成key私钥
  5. openssl x509 -req -days 3650 -in nextcloud.csr -signkey nextcloud.key -out nextcloud.crt #生成crt公钥
  6. cp nextcloud.crt /home/nextcloud_apache/ssl_certs/certs #将证书复制到映射的证书路径
  7. cp nextcloud.key /home/nextcloud_apache/ssl_certs/private #将秘钥复制到映射的证书路径

2、nextcloud容器的apache服务配置

因为nextcloud容器镜像中使用的是apache而非nginx,所以需要在容器中的apache上配置https服务。

  • 进入容器执行
  1. a2enmod ssl #开启ssl模块
  2. a2ensite default-ssl #应用一下ssl配置
  • 将容器内的ssl.load文件修改为如下配置
  1. vim /etc/apache2/mods-available/ssl.load
  2. LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
  • 将apache的ssl服务文件拷贝至宿主机并配置(注意文件权限)
docker cp nextcloud:/etc/apache2/sites-available/default-ssl.conf ./
  • 找到SSLEngine on内容,修改配置文件内容
  1. SSLProtocol all -SSLv2 -SSLv3
  2. SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
  3. SSLEngine on
  4. SSLCertificateFile /etc/apache2/cert/nextcloud.crt #设置证书名称
  5. SSLCertificateKeyFile /etc/apache2/cert/nextcloud.key #设置秘钥名称

  • 开启hsts(上一步)
Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains; preload"
  • 将配置文件复制进容器中,并重启容器(似乎可以不用重启容器)
  1. docker cp default-ssl.conf nextcloud:/etc/apache2/sites-available/
  2. docker restart nextcloud

3、验证https服务与证书

https访问nextcloud容器443映射的端口web。

4、调试“Nextcloud 您正在访问来自不信任域名的服务器”

若启动https服务后,提示Nextcloud 您正在访问来自不信任域名的服务器。可在/config/config.php中添加白名单域名、ip。此处是本文映射出来的文件(/home/nextcloud/config/config.php),也可以进入容器修改。

四、onlyoffice的容器启动

1、onlyoffice介绍

ONLYOFFICE是一套在线办公软件,它允许用户创建、阅读和编辑文档、表格和幻灯片文件。该软件支持多种文件格式,包括但不限于.docx文档、.pptx幻灯片以及.xlsx表格。本文所起应用需求主打在线编辑功能,故需要安装onlyoffice。

2、onlyoffice的容器准备与启动

创建onlyoffice的工作目录,此处需要创建5个路径用于onlyoffice的挂载。

  1. mkdir -p /home/onlyoffice/logs
  2. mkdir -p /home/onlyoffice/data
  3. mkdir -p /home/onlyoffice/lib
  4. mkdir -p /home/onlyoffice/db
  5. mkdir -p /home/onlyoffice/fonts/

直接命令启动onlyoffice容器:

docker run -d -i -t -e TZ="Asia/Shanghai" --restart=always --name onlyoffice -p 9080:80 -p 9443:443 -v /home/onlyoffice/logs:/var/log/onlyoffice -v /home/onlyoffice/data:/var/www/onlyoffice/Data -v /home/onlyoffice/lib:/var/lib/onlyofficeonly -v /home/onlyoffice/db:/var/lib/postgresql -v /etc/localtime:/etc/localtime:ro -v /home/onlyoffice/fonts/:/usr/share/fonts/truetype/custom/ onlyoffice/documentserver

docker run -d -i -t -e TZ="Asia/Shanghai" --restart=always --name onlyoffice -p 9080:80 -p 9443:443 -v /home/onlyoffice/logs:/var/log/onlyoffice -v /home/onlyoffice/data:/var/www/onlyoffice/Data -v /home/onlyoffice/lib:/var/lib/onlyofficeonly -v /home/onlyoffice/db:/var/lib/postgresql -v /etc/localtime:/etc/localtime:ro -v /home/onlyoffice/fonts/:/usr/share/fonts/truetype/custom/ onlyoffice/documentserver

说明:

-p 9080:80 #将onlyoffice的http(80)端口映射至宿主机的9080端口

-p 9443:443 #将onlyoffice的https(443)端口映射至宿主机的9443端口,本文仅用到了http端口,故443端口的配置不做赘述。

3、下载onlyoffice资源

访问onlyoffice官网,根据自身的版本需求下载:ONLYOFFICE - Apps - App Store - Nextcloud

因为我的nextcloud的版本是Nextcloud version 28.0.1,所以我下载了9.0.0版本。此处下载需要梯子,我自己的梯子还不行,找朋友借的梯子。

4、上传onlyoffice,并配置

将下载的onlyoffice.tar.gz,上传至nextcloud工作路径的apps目录下。(以自己的路径为准,我的路径是在启动nextcloud容器时创建的/home/nextcloud/apps)。

将/home/nextcloud/apps/onlyoffice.tar.gz文件解压,tar -xvf onlyoffice.tar.gz。并给解压后的文件增加权限chmod 777 onlyoffice -R

登录nextcloud的web页面,右上角自己头像处,点击“应用”在搜索框里输入onlyoffice。可以看到onlyoffice已经安装完成了,点击启用即可。

5、onlyoffice的https配置

  • 创建https的ssl证书与密钥文件:(此处的证书需要与nextcloud的https证书与秘钥一致,所以建议直接将nextcloud生成的key crt org csr 直接改名字拿来用)
  1. openssl genrsa -des3 -out onlyoffice.key 4096
  2. openssl req -new -key onlyoffice.key -out onlyoffice.csr
  3. cp onlyoffice.key onlyoffice.key.org
  4. openssl rsa -in onlyoffice.key.org -out onlyoffice.key
  5. openssl x509 -req -days 3650 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
  6. openssl dhparam -out dhparam.pem 2048
  • 将上一步生成的证书与密钥文件放到onlyoffice的工作目录 /home/onlyoffice/data/certs下(没有该路径可以mkdir -p 一下):
  1. cp dhparam.pem onlyoffice.crt onlyoffice.csr onlyoffice.key onlyoffice.key.org /home/onlyoffice/data/certs
  2. docker restart onlyoffice
  • 进入onlyoffice容器修改证书与密钥的挂载文件权限:
  1. docker exec -it onlyoffice bash
  2. cd /var/www/onlyoffice/Data
  3. chmod 777 -R *
  • 将onlyoffice中的default.json文件拷贝到宿主机修改"rejectUnauthorized"参数后,再拷贝回去。
  1. docker cp onlyoffice:/etc/onlyoffice/documentserver/default.json ./
  2. "rejectUnauthorized": false
  3. docker cp default.json onlyoffice:/etc/onlyoffice/documentserver/
  4. docker restart onlyoffice
  • 访问onlyoffice的443映射端口验证web应用

6、在nextcloud中配置onlyoffice应用(https的nextcloud配置https的onlyoffice)

  • 右上角头像处点击“管理设置”,左侧找到onlyoffice并选择。

  • 此处在nextcloud中配置onlyoffice的应用,需要查看onlyoffice的容器秘钥:
  1. docker exec -it onlyoffice bash #进入onlyoffice容器
  2. cat /etc/onlyoffice/documentserver/local.json #查看密钥文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/523405
推荐阅读
相关标签
  

闽ICP备14008679号