容器搭建nextcloud+onlyoffice+https实践

 更新时间:2026年01月19日 10:12:12   作者:Jesus_kovy  
本文介绍了在CentOS8.5上使用Docker搭建个人网盘应用Nextcloud和OnlyOffice的详细步骤,包括容器准备、启动、SSL配置以及在Nextcloud中集成OnlyOffice

近期应主管建议,在工作环境中搭建一套个人网盘应用,用于开展日常工作。本文在私有云内完成搭建,基于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.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

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.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        #将秘钥复制到映射的证书路径

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

说明:

  • -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.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
  • 将上一步生成的证书与密钥文件放到onlyoffice的工作目录 /home/onlyoffice/data/certs下(没有该路径可以mkdir -p 一下):
cp dhparam.pem onlyoffice.crt onlyoffice.csr onlyoffice.key onlyoffice.key.org /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 #查看密钥文件

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker安装MySQL及授权远程访问的详细教程

    Docker安装MySQL及授权远程访问的详细教程

    Docker是一种流行的容器化平台,可以简化应用程序的部署和管理,下面这篇文章主要给大家介绍了关于Docker安装MySQL及授权远程访问的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • docker创建mongodb数据库容器的方法

    docker创建mongodb数据库容器的方法

    本文将通过docker创建一个mongodb数据库容器,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Docker容器网络配置全攻略之桥接、Host、container详解

    Docker容器网络配置全攻略之桥接、Host、container详解

    这篇文章主要介绍了Docker容器网络配置全攻略之桥接、Host、container的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 教你如何利用docker-maven-plugin自动化部署

    教你如何利用docker-maven-plugin自动化部署

    本文通过两个例子给大家讲解如何利用docker-maven-plugin自动化部署,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • Docker学习笔记之k8s部署方法

    Docker学习笔记之k8s部署方法

    这篇文章主要介绍了Docker学习笔记之k8s部署方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • docker pull很慢如何解决

    docker pull很慢如何解决

    这篇文章主要介绍了docker pull很慢的解决方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Docker常见命令介绍

    Docker常见命令介绍

    这篇文章介绍了Docker中的常见命令,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Centos8无法安装docker问题的解决方法

    Centos8无法安装docker问题的解决方法

    这篇文章主要给大家介绍了关于Centos8无法安装docker问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Windows Server 2012 R2 安装 Docker的详细步骤

    Windows Server 2012 R2 安装 Docker的详细步骤

    这篇文章主要介绍了Windows Server 2012 R2 安装 Docker,在这个给大家说明下使用windows10、Windows Server 2016以上系统可直接使用安装包,低版本系统需要使用 Docker Toolbox 来进行安装使用 Docker,需要的朋友可以参考下
    2022-04-04
  • gitlab实践教程使用git config进行相关的配置操作

    gitlab实践教程使用git config进行相关的配置操作

    今天小编就为大家分享一篇关于gitlab实践教程使用git config进行相关的配置操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论