前言

本文为详细讲解搭建Nextcloud云盘后,如何用Docker搭建云盘可以使用的Onlyoffice服务器。
搭建方法好多种,为节省时间,先讲如何快捷搭建的一种方法,之后围绕该方法,讲解其他方法以及各种坑。不求甚解者,后面可不看。

准备

  1. 一搭建好的概览显示为所有检查已通过的Nextcloud服务器
  2. 安装好宝塔面板(没打好,用命令也行)
  3. 推荐使用apache web服务器。
  4. 拥有自己的域名,保存好nginx ssl文件(什么也没有,看后面的方法)

推荐服务器配置

官方文档如下

配置方面还是尽量高点,实测会消耗很多资源,小内存很累。

  • RAM: 4 GB+
  • CPU: 双核 2 GHz +
  • Swap: 至少2 GB
  • HDD: 至少有2GB的剩余空间
  • 系统要求: RedHat 64bit,CentOS类、Debian类的内核版本3.8以上。
  • Docker: 1.9.0版本及以上

安装Docker

CentOS/RedHat/Fedora

使用yum命令安装Docker:

yum install docker -y

启动Docker服务:

systemctl start docker

Debian/Ubuntu

使用apt命令安装Docker:

sudo apt-get install docker.io

Docker服务会自动启动

本教程直接讲解外网可用方法,80端口的方法就不讲了。

启用HTTPS

HTTPS需要使用SSL证书,可以自己签发也可以用ca机构签发的,加密效果相同。

ca机构签发方式1
Docker默认使用nginx web服务器,所以下载好4个文件,onlyoffice,只需要两个文件,并规定了文件名如下:
  • onlyoffice.crt
  • dhparam.pem
  • onlyoffice.key
  1. 将生成的证书拷贝到

将生成的证书拷贝到

/app/onlyoffice/DocumentServer/data/certs

目录下。

创建相应目录:

mkdir -p /app/onlyoffice/DocumentServer/data/certs

复制证书到

/app/onlyoffice/DocumentServer/data/certs
  1. 目录并设置权限:
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
  1. 运行容器,映射容器的443端口和Data目录至本地:

    docker run -i -t -d -p 8080:443 --name OnlyOffice --restart=always
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver

​ -p 8080:443 :指定服务器的8080端口为Docker的443端口

​ --name OnlyOffice : 指定容器名字

​ -e JWT_SECRET=my_jwt_secret :指定密钥,之后要用

  1. 在浏览器里访问https://服务器地址:8080/

docker 2023-11-25 0.39.56.png

ca机构签发方式2
  1. 将目录映射至本地
    sudo docker run -i -t -d -p 8080:80 --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver

    -p 8080:443 :指定服务器的8080端口为Docker的80端口

    ​--name OnlyOffice : 指定容器名字

​ -e JWT_SECRET=my_jwt_secret :指定密钥,之后要用

​ 在浏览器里就可以访问http://服务器地址:8080/

  1. 启用HTTPS

    用ca机构签发的证书,在宝塔面板设好

docker2023-11-25 1.00.49.png

设置好反向代理

http://127.0.0.1:8080

docker2023-11-25 1.03.02.png

本地签发方式
生成证书:
  1. 创建私钥

    openssl genrsa -out onlyoffice.key 2048
    
  2. 创建CSR

    openssl req -new -key onlyoffice.key -out onlyoffice.csr
    
  3. 用私枂和CSR签发证书

    openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
    
  4. 用dhparam加密服务器密钥

    openssl dhparam -out dhparam.pem 2048
    

完成证书的生成后,将生成的证书拷贝到

/app/onlyoffice/DocumentServer/data/certs

目录下。

创建相应目录:

mkdir -p /app/onlyoffice/DocumentServer/data/certs

复制证书到

/app/onlyoffice/DocumentServer/data/certs

目录并设置权限:

cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

运行容器,映射容器的443端口和Data目录至本地:

docker run -i -t -d -p 8080:443 --name OnlyOffice --restart=always \  
  -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver```

-p 8080:443 :指定服务器的8080端口为Docker的80端口

--name OnlyOffice : 指定容器名字

-e JWT_SECRET=my_jwt_secret :指定密钥,之后要用

在浏览器里就可以访问https://服务器地址:8080/
docker 2023-11-25 0.39.56.png

填写nextcloud的onlyoffice资料

docker2023-11-25 1.13.36.png

方法1: 填写https://服务器地址:8080/
方法2: 填写https://服务器地址/
方法3: 填写https://服务器地址:8080/

密钥填写-e JWT_SECRET=my_jwt_secret ,后面你输入的文字。

各种坑

CentOS/RHEL/Fedora无法访问

这是由于SELinux的阻止。

暂时关闭SELinux(重启后失效):

setenforce 0
onlyoffice报 error self signed certificate导致download failed错误处理

安装nextcloud+onlyoffice,打开onlyoffice报错
docker2023-11-25 1.24.13.png

接下来禁用Document Server的访问验证,Document Server默认拒绝未认证的请求(也就是自签名的HTTPS请求)。
打开/etc/onlyoffice/documentserver/default.json,向下找到rejectUnauthorized字段,将其值改为false。
重启容器。
修改default.json
docker2023-11-25 1.22.01.png

修改如下: “rejectUnauthorized”: false

docker2023-11-25 1.22.09.png

重启容器
docker2023-11-25 1.22.01.png
docker 2023-11-25 1.22.20.png

重启nextcloud onlyoffice
截屏2023-11-25 0.39.56.png