赞
踩
近期应主管建议,在工作环境中搭建一套个人网盘应用,用于开展日常工作。本文在私有云内完成搭建,基于CentOS8.5使用Docker 25.0.1容器承载镜像nextcloud28与onlyoffice9.0.0完成。搭建步骤分为docker的容器准备、nextcloud容器启动、onlyoffice的容器启动以及https的加密配置。将此次所踩的坑整理于此。
- yum install -y yum-utils device-mapper-persistent-data lvm2 wget #安装依赖
- yum-config-manager --add-repo https://download.docker.com/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.com"]
- }
- systemctl daemon-reload #重新加载
- systemctl restart docker #重启docker
- docker serach nextcloud
- docker search onlyoffice
- docker pull #容器名字与版本(search出来的结果),本文拉取nextcloud与onlyoffice
- 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的工作目录,以便于在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时的秘钥
直接使用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界面。
因为本文的部署需求为面向小范围使用,故使用了nextcloud自带的SQlite数据库,若是面向大范围使用需求,可以按照其他博客的介绍搭建并使用mysql数据库。
此处可以采用新起一个nginx容器,代理nextcloud服务的思路实现https目的。本文中使用的是nextcloud镜像上自带的apache来实现。
- openssl genrsa -des3 -out nextcloud.key 4096
- openssl req -new -key nextcloud.key -out nextcloud.csr
- cp nextcloud.key nextcloud.key.org
- openssl rsa -in nextcloud.key.org -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 #将秘钥复制到映射的证书路径
因为nextcloud容器镜像中使用的是apache而非nginx,所以需要在容器中的apache上配置https服务。
- a2enmod ssl #开启ssl模块
-
- a2ensite default-ssl #应用一下ssl配置
- vim /etc/apache2/mods-available/ssl.load
-
- LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
docker cp nextcloud:/etc/apache2/sites-available/default-ssl.conf ./
- 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 #设置秘钥名称
Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains; preload"
- docker cp default-ssl.conf nextcloud:/etc/apache2/sites-available/
-
- docker restart nextcloud
https访问nextcloud容器443映射的端口web。
若启动https服务后,提示Nextcloud 您正在访问来自不信任域名的服务器。可在/config/config.php中添加白名单域名、ip。此处是本文映射出来的文件(/home/nextcloud/config/config.php),也可以进入容器修改。
ONLYOFFICE是一套在线办公软件,它允许用户创建、阅读和编辑文档、表格和幻灯片文件。该软件支持多种文件格式,包括但不限于.docx文档、.pptx幻灯片以及.xlsx表格。本文所起应用需求主打在线编辑功能,故需要安装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端口的配置不做赘述。
访问onlyoffice官网,根据自身的版本需求下载:ONLYOFFICE - Apps - App Store - Nextcloud。
因为我的nextcloud的版本是Nextcloud version 28.0.1,所以我下载了9.0.0版本。此处下载需要梯子,我自己的梯子还不行,找朋友借的梯子。
将下载的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已经安装完成了,点击启用即可。
- openssl genrsa -des3 -out onlyoffice.key 4096
-
- openssl req -new -key onlyoffice.key -out onlyoffice.csr
-
- cp onlyoffice.key onlyoffice.key.org
-
- openssl rsa -in onlyoffice.key.org -out onlyoffice.key
-
- openssl x509 -req -days 3650 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
-
- openssl dhparam -out dhparam.pem 2048
- cp dhparam.pem onlyoffice.crt onlyoffice.csr onlyoffice.key onlyoffice.key.org /home/onlyoffice/data/certs
-
- docker restart onlyoffice
- docker exec -it onlyoffice bash
-
- cd /var/www/onlyoffice/Data
-
- chmod 777 -R *
- docker cp onlyoffice:/etc/onlyoffice/documentserver/default.json ./
-
- "rejectUnauthorized": false
-
- docker cp default.json onlyoffice:/etc/onlyoffice/documentserver/
-
- docker restart onlyoffice
- docker exec -it onlyoffice bash #进入onlyoffice容器
-
- cat /etc/onlyoffice/documentserver/local.json #查看密钥文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。