admin管理员组文章数量:1549925
近期应主管建议,在工作环境中搭建一套个人网盘应用,用于开展日常工作。本文在私有云内完成搭建,基于CentOS8.5使用Docker 25.0.1容器承载镜像nextcloud28与onlyoffice9.0.0完成。搭建步骤分为docker的容器准备、nextcloud容器启动、onlyoffice的容器启动以及https的加密配置。将此次所踩的坑整理于此。
一、搭建前的容器准备
1.安装dokcer
yum install -y yum-utils device-mapper-persistent-data lvm2 wget #安装依赖
yum-config-manager --add-repo https://download.docker/linux/centos/docker-ce.repo #将设置阿里云为docker的yum下载源
yum list docker-ce --showduplicates | sort -r #搜索并排序输出当前的docker版本
yum install -y docker-cedocker -v #安装docker
yum -y update #更新依赖库
yum makecache fast #yum初始化
systemctl start docker
systemctl enable docker
vi /etc/docker/daemon.json #为docker添加国内加速器设置
{
"registry-mirrors":["http://hub-mirror.c.163"]
}
systemctl daemon-reload #重新加载
systemctl restart docker #重启docker
2.搜索并拉取容器
docker serach nextcloud
docker search onlyoffice
docker pull #容器名字与版本(search出来的结果),本文拉取nextcloud与onlyoffice
3.本文中用到的docker容器命令说明
docker run -d --restart=always --name #设置容器名 使用的镜像设置此容器开机自启
docker images #查看可用镜像
docker search 镜像名字 #搜索镜像
docker pull #拉取镜像
docker rm -f 容器名/容器id #删除已有的容器
docker ps #查看正在运行的容器
docker cp #实现宿主机与容器之间的文件传输
docker exec -it 容器名称/容器id bash #进入该容器
二、nextcloud的容器启动
1.辅助目录的创建
在宿主机中创建nextcloud的工作目录,以便于在nextcloud容器启动时将所需的路径映射至宿主机。
mkdir -p /home/nextcloud #用于映射nextcloud的配置文件等工作目录
mkdir -p /home/nextcloud_apache/ssl_certs/certs #用于存放nextcloud再启用https时的ssl证书
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证书
openssl genrsa -des3 -out nextcloud.key 4096
openssl req -new -key nextcloud.key -out nextcloud.csr
cp nextcloud.key nextcloud.key
openssl rsa -in nextcloud.key -out nextcloud.key #生成key私钥
openssl x509 -req -days 3650 -in nextcloud.csr -signkey nextcloud.key -out nextcloud.crt #生成crt公钥
cp nextcloud.crt /home/nextcloud_apache/ssl_certs/certs #将证书复制到映射的证书路径
cp nextcloud.key /home/nextcloud_apache/ssl_certs/private #将秘钥复制到映射的证书路径
2、nextcloud容器的apache服务配置
因为nextcloud容器镜像中使用的是apache而非nginx,所以需要在容器中的apache上配置https服务。
- 进入容器执行
a2enmod ssl #开启ssl模块
a2ensite default-ssl #应用一下ssl配置
- 将容器内的ssl.load文件修改为如下配置
vim /etc/apache2/mods-available/ssl.load
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
- 将apache的ssl服务文件拷贝至宿主机并配置(注意文件权限)
docker cp nextcloud:/etc/apache2/sites-available/default-ssl.conf ./
- 找到SSLEngine on内容,修改配置文件内容
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLEngine on
SSLCertificateFile /etc/apache2/cert/nextcloud.crt #设置证书名称
SSLCertificateKeyFile /etc/apache2/cert/nextcloud.key #设置秘钥名称
- 开启hsts(上一步)
Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains; preload"
- 将配置文件复制进容器中,并重启容器(似乎可以不用重启容器)
docker cp default-ssl.conf nextcloud:/etc/apache2/sites-available/
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的挂载。
mkdir -p /home/onlyoffice/logs
mkdir -p /home/onlyoffice/data
mkdir -p /home/onlyoffice/lib
mkdir -p /home/onlyoffice/db
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 直接改名字拿来用)
openssl genrsa -des3 -out onlyoffice.key 4096
openssl req -new -key onlyoffice.key -out onlyoffice.csr
cp onlyoffice.key onlyoffice.key
openssl rsa -in onlyoffice.key -out onlyoffice.key
openssl x509 -req -days 3650 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
openssl dhparam -out dhparam.pem 2048
- 将上一步生成的证书与密钥文件放到onlyoffice的工作目录 /home/onlyoffice/data/certs下(没有该路径可以mkdir -p 一下):
cp dhparam.pem onlyoffice.crt onlyoffice.csr onlyoffice.key onlyoffice.key /home/onlyoffice/data/certs
docker restart onlyoffice
- 进入onlyoffice容器修改证书与密钥的挂载文件权限:
docker exec -it onlyoffice bash
cd /var/www/onlyoffice/Data
chmod 777 -R *
- 将onlyoffice中的default.json文件拷贝到宿主机修改"rejectUnauthorized"参数后,再拷贝回去。
docker cp onlyoffice:/etc/onlyoffice/documentserver/default.json ./
"rejectUnauthorized": false
docker cp default.json onlyoffice:/etc/onlyoffice/documentserver/
docker restart onlyoffice
- 访问onlyoffice的443映射端口验证web应用
6、在nextcloud中配置onlyoffice应用(https的nextcloud配置https的onlyoffice)
- 右上角头像处点击“管理设置”,左侧找到onlyoffice并选择。
- 此处在nextcloud中配置onlyoffice的应用,需要查看onlyoffice的容器秘钥:
docker exec -it onlyoffice bash #进入onlyoffice容器
cat /etc/onlyoffice/documentserver/local.json #查看密钥文件
本文标签: 容器NextcloudHTTPSONLYOFFICE
版权声明:本文标题:容器搭建nextcloud+onlyoffice+https 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727229221a1103513.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论